A. protues仿真51单片机定时器产生1us定时
1us的单片机定时Proteus仿真,可以弄的,问题比如定时器0,16位自动重装的,TH0,TL0设置好后,注意TMOD,问题一般出在这里
voidTimer0Init(void) //1微秒@24.000MHz这种设置会导致仿真显示1s,
{
AUXR|=0x80; //定时器时钟1T模式
TMOD&=0xF0; //设置定时器模式
TL0=0xE8; //设置定时初值
TH0=0xFF; //设置定时初值
TF0=0; //清除TF0标志
TR0=1; //定时器0开始计时
}
voidinit_timer0() //1微秒@24.000MHz这种的就没问题
{
TMOD&=0xF0; //设置定时器模式
TMOD|=0x02; //设置定时器模式
TL0=0xFE; //设置定时初值
TH0=0xFF; //设置定时初值
TF0=0; //清除TF0标志
TR0=1; //定时器0开始计时
EA=1;//开总中断
ET0=1;//开定时器0中断
}
1us的单片机定时Proteus仿真,可以弄的,问题比如定时器0,16位自动重装的,TH0,TL0设置好后,注意TMOD,问题一般出在这里
B. 单片机定时器程序仿真问题
在主程序里除了初始化的那个函数外把剩下的语句写到while(1){}里面
不加死循环当然就只执行一次了