|
楼主 |
发表于 2008-6-17 02:54:57
|
显示全部楼层
TIMER0是可以了,但当我打开TIMER1时,TIMER1又出了同样的问题,这次与TIMER0有点不同。当我设置TIMER1的初始值不同,它产生的中断在每次加电启动时,产生的中断频率不一样,有时会比较慢,而且会影响到TIMER0定时.不知什么原因。TIMER1中断初始化程序如下:
由于TIMER0与TIMER1共用一人预分频器,而可以设置不同的分频,请教一下在使用过程中应注意什么事项?
系统时钟设置。烧录录:内部时钟,8M。osccal为0xff,分频CLKPR为0,
初始化完成后,接一人LED翻转闪烁。
问题就出来了,结果加电启动时,有时候TIMER0正常,但有时候却比正常要慢N倍,不知是什么原因。
个人分析,可能系统时钟不对,可能TIMER0初始化不对,还有一种可能硬件引起工作不正常。现将部分程序列出,各位请多多指教,先谢谢了。
;---------------------------------
;选用内部时钟,下载时设置,8MHz;
SYS_CLK_INIT:
ldi r16,0xf8
sts OSCCAL,r16
ldi r16,0x80
sts CLKPR,r16 ;INCLK 8M,Prescale = 0xf8
ldi r16,0x00
sts CLKPR,r16
ret
TIMER1_INIT:
TIMER1_INIT_PROC:
ldi r16,0x00 ;不与OCR1A和OCR1B连接
sts TCCR1A,r16
ldi r16,0x02 ;8分频
sts TCCR1B,r16
ldi r16,0x00 ;用PWM强制比较,清零
sts TCCR1C,r16
ldi r16,0x67 ;计数器赋初值,(0xFFFF-0xC567)*8/(8*1000)=15ms
ldi r17,0xc5
sts TCNT1H,r17
sts TCNT1L,r16
ldi r16,0x00 ;清零所有TIMER1中断标志
out TIFR1,r16
ldi r16,0x01 ;使能TIMER1溢出中断
sts TIMSK1,r16
ret |
|