以下两个程序定时器设置不同,但得到的延时时间是一样的。
- #include <reg51.h>
- #include <intrins.h>
- void Timer0Init() //50毫秒@12.000MHz
- {
- TMOD= 0x01; //设置定时器模式
- TL0 = 0xB0; //设置定时初值
- TH0 = 0x3C; //设置定时初值
- TF0 = 0; //清除TF0标志
- TR0 = 1; //定时器0开始计时
- }
- void main()
- {
- unsigned char i;
- Timer0Init();
- P1=0xfe;
- while(1)
- {
- if(TF0==1)
- {
- TF0=0;
- TL0 = 0xB0; //重装值
- TH0 = 0x3C; //重装值
- i++;
- if(i==20) //50ms*20=1s
- {
- i=0;
- P1=_crol_(P1,1);
- }
- }
- }
- }
复制代码
- #include <reg51.h>
- #include <intrins.h>
- void Timer0Init(void)//250微秒@12.000MHz
- {
- TMOD= 0x02; //设置定时器模式
- TL0 = 0x06; //设置定时初值
- TH0 = 0x06; //设置定时重载值
- TF0 = 0; //清除TF0标志
- TR0 = 1; //定时器0开始计时
- }
- void main()
- {
- unsigned int i;
- Timer0Init();
- P1=0xfe;
- while(1)
- {
- if(TF0==1)
- {
- TF0=0;
- i++;
- if(i==4000)//250us*4000=1s
- {
- i=0;
- P1=_crol_(P1,1);
- }
- }
- }
- }
复制代码 |