有人可以帮我解决这个例子。我不明白他们为什么不使用(25μs×1000)。为什么他们将它分解为(25μs×250×40),然后在微控制器上加载(25μs×250×36)。谢谢。
示例14:写入8051 C程序,每250 ms连续切换P1.5引脚 使用定时器0,模式2(8位自动重载)来产生延迟。
解决方案:
解决方案:假设XTAL = 11.0592MHz
对于250ms的延迟,计数超过256.因此,计算25μs的计数并且计数为23
因此对于250ms =>25μs×250×40 = 250ms
程序
#include <reg51.h>
void T0M2Delay(void);
sbit mybit=P1^5;
sbit mybit=P1^5;
void T0M2Delay(void);
sbit mybit=P1^5;
void main(void){
unsigned char x,y;
while (1) {
mybit=~mybit;
for (x=0;x<250;x++)
for (y=0;y<36;y++) //we put 36, not 40
T0M2Delay();
}
}
void T0M2Delay(void){
TMOD=0x02;
TH0=-23;
TR0=1;
while (TF0==0);
TR0=0;
TF0=0;
}