|
利用定時(shí)器延時(shí)不是你這么玩的,你對(duì)比一下兩者差別。
- #include <reg52.h>
- #define FOSC 11059200UL //系統(tǒng)時(shí)鐘
- //unsigned int i,j,k;
- unsigned char i;
- //unsigned char T0RH=0;
- //unsigned char T0RL=0;
- unsigned char num;
- unsigned int tmp;
- //unsigned char T0RH=0;
- //unsigned char T0RL=0;
- void Configtime0(unsigned char ms);
- void main()
- {
- Configtime0(50);//系統(tǒng)時(shí)鐘11.0592MHz最大定時(shí)60ms
- EA=1;
- while(1)
- {
- if(num<=20)
- P0=0x00;
- // delay(1000);
- // Configtime0(1000);//定時(shí)1s
- else
- P0=0xFF;
- // Configtime0(1000);//定時(shí)1s
- }
- }
- void Configtime0(unsigned char ms)
- {
- // unsigned long tmp;
- // tmp=11059200/12;//計(jì)算定時(shí)器的計(jì)數(shù)頻率
- // tmp=(tmp*ms)/1000;//計(jì)算定時(shí)器的計(jì)數(shù)個(gè)數(shù)
- // tmp=65536-tmp;//計(jì)算計(jì)數(shù)初值
- // T0RH=(unsigned char)(tmp>>8);
- // T0RL=(unsigned char)tmp;
- // TH0=T0RH;
- // TL0=T0RL;
- // TMOD&=0xF0;
- // TMOD|=0x01;
- tmp=65536-(FOSC*ms/12/1000);
- TH0=tmp>>8;
- TL0=tmp;
- TMOD&=0xF0;
- TMOD|=0x01;
- ET0=1;
- TR0=1;
- }
- void Time0() interrupt 1
- {
- TH0=tmp>>8;
- TL0=tmp;
- num++;
- if(num==40)//2s
- num=0;
- }
復(fù)制代碼 |
|