完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
电子发烧友论坛|
【AVR单片机学习入门之前】新手怎样看懂数据手册?
真正的菜鸟是看不懂数据手册的,如果你能,说明你已经入门了。所以,当你看到数据手册头疼的时候,不要灰心,其实别人和你一样。 但是数据手册是AVR最好的书,你又必须得看懂数据手册,看数据手册不能急于求成,要一遍一遍的多看,应该说每次看都有不同的收获。 新手看第一遍,迷迷糊糊。 看第二遍,大体了解AVR有哪些模块。 第三次看,知道AVR的部分寄存器,但是仍然不知道如何使用,如何编程。 在这里就要发挥ICC AVR的优势了,使用ICC avr的程序生成向导(使用方法会在新手入门里面介绍),你使用哪一个模块,就生成哪一个模块的程序,然后再去看程序中使用到了哪写寄存器,再到数据手册里面去搜索相应词语,查看寄存器各个位的介绍和意义,以及设置方法。多这样几次,你就能够熟悉起来了,也就能看明白数据手册了。 一个精通单片机的人,无论拿来一个什么芯片,看看数据手册,很快就可以使用。 这里以定时器的数据手册为例: //ICC-AVR application builder : 2007-3-22 10:17:15 // Target : M16 // Crystal: 7.3728Mhz #include #include void port_init(void) { PORTA = 0x00; DDRA = 0x00; PORTB = 0x00; DDRB = 0x00; PORTC = 0x00; //m103 output only DDRC = 0x00; PORTD = 0x00; DDRD = 0x00; } //TIMER0 initialize - prescale:1024 // WGM: Normal // desired value: 10mSec // actual value: 9.861mSec (1.4%) void timer0_init(void) { TCCR0 = 0x00; //stop TCNT0 = 0xB9; //set count OCR0 = 0x47; //set compare TCCR0 = 0x05; //start timer } #pragma interrupt_handler timer0_ovf_isr:10 void timer0_ovf_isr(void) { TCNT0 = 0xB9; //reload counter value } //call this routine to initialize all peripherals void init_devices(void) { //stop errant interrupts until set up CLI(); //disable all interrupts port_init(); timer0_init(); MCUCR = 0x00; GICR = 0x00; TIMSK = 0x01; //timer interrupt sources SEI(); //re-enable interrupts //all peripherals are now initialized } 上面的程序是由ICC的程序生成向导自动生成的,红色部分是和定时器0相关的,那么现在你可以去查数据手册,TCCR0,TCNT0,OCR0,TCCR0,TIMSK 你就可以充分了解定时器的工作原理及控制方法了。 比如:查看TIMSK,描述为 中断屏蔽寄存器- TIMSK Bit 1 – OCIE0: T/C0 输出比较匹配中断使能 当OCIE0 和状态寄存器的全局中断使能位I 都为”1” 时,T/C0 的输出比较匹配中断使能。 当T/C0 的比较匹配发生,即TIFR 中的OCF0 置位时,中断服务程序得以执行。 Bit 0 – TOIE0: T/C0 溢出中断使能 当TOIE0 和状态寄存器的全局中断使能位I 都为”1” 时,T/C0 的溢出中断使能。当T/C0 发生溢出,即TIFR 中的TOV0 位置位时,中断服务程序得以执行。 可以看出TIMSK = 0x01;说明T/C0 溢出中断使能了,允许寄存器定时溢出中断,这就使得下面这段程序可以运行。 #pragma interrupt_handler timer0_ovf_isr:10 void timer0_ovf_isr(void) { TCNT0 = 0xB9; //reload counter value } |
|
相关推荐
30 个讨论
|
|
|
ddddddddddddddddddddddd
|
|
|
|
|
|
|
|
|
xuexixuexi
|
|
|
|
|
|
|
|
只有小组成员才能发言,加入小组>>
AVR Atmega16 Bootloader程序与上位机LabView程序
5668 浏览 6 评论
#include <ioavr.h>这个头文件我应该下什么编译器
8123 浏览 0 评论
3371 浏览 2 评论
3354 浏览 1 评论
10525 浏览 1 评论
/9
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-12-11 18:45 , Processed in 1.041379 second(s), Total 61, Slave 51 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191

淘帖
9288