protues仿真51单片机定时器产生1us定时

2024-12-04 05:21:55
推荐回答(2个)
回答1:

1us的单片机定时Proteus仿真,可以弄的,问题比如定时器0,16位自动重装的,TH0,TL0设置好后,注意TMOD,问题一般出在这里

void Timer0Init(void)		//1微秒@24.000MHz   这种设置会导致仿真显示1s,
{
AUXR |= 0x80; //定时器时钟1T模式   
TMOD &= 0xF0; //设置定时器模式
TL0 = 0xE8; //设置定时初值
TH0 = 0xFF; //设置定时初值
TF0 = 0; //清除TF0标志
TR0 = 1; //定时器0开始计时
}
void init_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,问题一般出在这里

回答2:

1000*1000是一百万,这个数你用什么类型的变量存储?要用长整型,最好是无符号长整型