在微控制器8051上的模式2中访问定时器寄存器

时间:2015-11-09 09:00:05

标签: c timer microcontroller

有人可以帮我解决这个例子。我不明白他们为什么不使用(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;
}

0 个答案:

没有答案