以下兩個程序定時器設置不同,但得到的延時時間是一樣的。
- #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);
- }
- }
- }
- }
復制代碼 |