本帖最后由 mfkyygt 于 2014-3-10 16:51 编辑
用ICCAVR的Application Builder向导获得10ms的定时,用proteus仿真时得到的却不是10ms,请问问题会出在哪儿?谢谢
/*---------------------------------
主控芯片:Tiny13
晶震频率:内部RC 9.6M
---------------------------------*/
#include <iot13v.h>
#include <AVRdef.h>
#define sCNT 100 //10ms*100=1S
volatile unsigned int power,keys,zero,zt;
/*---- 初始化定时器T0为10ms定时 ----*/
void timer0_init(void)
{
CLI(); //关中断
//----以下为ICCAVR向导生成
TCCR0B = 0x00; //stop
OCR0A = 0x5D;
OCR0B = 0x5D;
TCNT0 = 0xA3; //set count
TCCR0A = 0x00; //启用通道A强制比较功能
TCCR0B = 0x05; //start timer 定时器采用1024分频
MCUCR = 0x00;
TIMSK0 = 0x04; //timer interrupt sources
GIMSK = 0x00; //interrupt sources
SEI(); //re-enable interrupts
}
/*---- T0定时器10ms中断 ----*/
#pragma interrupt_handler timer0_compa_isr:iv_TIM0_COMPA
void timer0_compa_isr(void)
{
COM_BIT(PORTB,PB4); //定时到,取反PB4
}
proteus仿真得到的比10ms大很多,参照的100Hz过零信号是准确的,请教是何原因?
|