1、1:如何设置 AVR 单片机的时钟?答:可以通过设置熔丝位来确定 AVR 单片机工作时的时钟是来自外部晶振还是来自内部的振荡器。熔丝位设置:芯片有如下几种通过熔丝位选择的时钟源。时钟输入到AVR 时钟发生器,并通往其他合适的模块。Table 6. 时钟源选择芯片时钟选项 CKSEL30(1)外部晶体/ 陶瓷振荡器 1111 - 1010外部低频晶体 1001外部RC 振荡器 1000 - 0101标定的内部RC 振荡器 0100 - 0001外部时钟 00002.如何操作定时器计数器 1,让其工作在定时状态?答:(1)通过设置寄存器 TCCR1A,和寄存器 TCCR1B 中的相应位来给定时器选
2、择分频系数。(2)向数据寄存器 TCNT1H,TCNT1L 装初值。(3)设置定时器/ 计数器中断屏蔽寄存器TIMSK中的第二位TOIE1=1;(4)打开总中断,置SREG中的第4位为1 ,打开总中断,这里只需使SREG|=0X80即可;(5)在中断函数中重装初值。3.中断函数格式:#pragma interrupt_handler 函数名():中断向量序号void 函数名()重装初值;其它程序代码.4.如何计算计数初始值?答:举例说明:若我们设置定时器工作的分频为M分频,时钟频率为fclk,则单片机产生一次中断的时间为t=fclk/m.则若设置定时T则要记的数N为:N=T/t;定时器 1 (16 位定时器)寄存器 TCCR1B = 0x04 设定 256 预分频要利用定时器定时 1 秒1,4000000 / 256 = 15625 说明定时器每当 1/15625 秒 就会触发一次中断2,65535 - 15625 = 49910 /1s/(产生一次中断的时间)计算出要累加多少次才能在 1 秒后出发定时器 1 的溢出中断3,49910 C2 F6 将计算后的值换算成 16 进制4, TCNT1H = 0xC2 ; 对寄存器赋初值TCNT1L = 0xF6 ;