定時器不夠用怎么辦?當然是吧一個定時器分成多個使用,用定時器中斷記錄定時器中斷次數,所要的定時的時間=中斷次數*單次定時時長。例如1s定時=20*50ms
例如用一個定時器控制兩個led燈以不同頻率閃爍,不用使用軟件延時,不占用CPU資源
單片機源程序如下:
- #include <reg52.h>
- sbit LED1 = P1^2;
- sbit LED2 = P1^4;
- unsigned char t,s;
- void time0_Init()
- {
- TMOD = 0x01;
- TH0 = 0x3C; //50ms
- TL0 = 0xB0;
- TR0 = 1;
- EA = 1;
- ET0 = 1;
- }
- void timer0() interrupt 1 //2個分頻器
- {
- t++;
- s++;
- TH0 = 0x3C;
- TL0 = 0xB0;
- if(s==5) //250ms
- {
- s = 0;
- LED1 = !LED1;
- }
- if(t==20) //1000ms
- {
- t = 0;
- LED2 = !LED2;
- }
- }
- void main()
- {
- time0_Init();
- while(1);
- }
復制代碼
|