微控制器定時器雙擊 微控制器實現60s定時器

2021-10-19 05:56:28 字數 1356 閱讀 9265

2個定時中斷,2個按鈕中斷

*******************/#include

#define seg p2 //數碼管 斷碼口

#define scanp p1 //數碼管 com掃瞄口sbit oc= p0^0; //定義573鎖存器使能口,我是用的573驅動7段數碼管

sbit pb0=p3^2; //按鈕0

sbit pb1=p3^3; //按鈕1

第乙個定時器

#define count_m1 50000 mode 1 乙個機器週期1us 這裡12mhz 機器週期=1/(12/12) 定時時間=定時個數*機器週期=50000*1us =0.05s

#define th_m1 (65536-count_m1)/256 //mode 1 高4位

#define tl_m1 (65536-count_m1)%256 //mode 1 低4位

int count_t0=0; /***定義中斷次數,第乙個中斷***/

第2個定時器

#define count_m2 250 //mode 2 250*1us = 0.25s

#define th_m2 (256-count_m2) //方式2 高4位

#define tl_m2 (256-count_m2) //方式1 低4位

char count_t1=0; /***定義中斷次數 ,第2個中斷***/

char code tab[10]=; //共陰極

char disp[2]=; //數碼管開始顯示 0 0

char seconds=0;char scan=0;void delay(void);

main()

oc= 0; //鎖存置0 ,點亮數碼管

ie=0x8f; //1000 1111 1000開啟總中斷 1111開啟4個中斷

tcon=0x00; //低電平0觸發

tmod=0x21; //0010 0001 timer1採用方式2 timer0採用方式1

th0=th_m1; //t0高4位 mode 1

tl0=tl_m1; //t0低4位 mode 1

tr0=0; //不啟動 t0

th1=th_m2; //設定t1自動載入值,計數值 mode2

tl1=tl_m2; //t1 mode2

tr1=1; //啟動t1

p3 =0xff; //設定按鈕輸入

while(1);

中斷0 計算並顯示秒數

void t0_1s(void) interrupt 1void delay(void) //延時去抖動

{inti;for(i=0;i<2400;i++); //2400 * 8 = 19200us = 20ms

微控制器定時器雙擊 關於51微控制器定時器的靈活使用

前段時間,做乙個專案,有串列埠收發指令判斷,按鍵型別判斷,長短按之類,power的定時關電,事件的輪詢掃瞄更新和display的定時掃瞄。這些要求就對定時器提出了要求,但是我的51微控制器只有兩個定時器,其中乙個又有debug口的波特率產生之用。於是乎我可以用的定時器就只剩下了乙個。怎麼辦?可能大家...

微控制器實現60s定時器

微控制器573 數碼管 按鈕 實現60秒的定時器 知識 ie暫存器 tcon暫存器 tmod 暫存器 2個定時中斷,2個按鈕中斷 include define seg p2 數碼管 斷碼口 define scanp p1 數碼管 com掃瞄口 sbit oc p0 0 定義573鎖存器使能口,我是用...

51微控制器 定時器

定時 計數器的結構和工作原理 定時 計數器的實質是加1計數器 16位 由高8位和低8位兩個暫存器組成。80c51 微控制器定時 計數器的工作是由兩個特殊功能暫存器控制的。tmod是定時 計數器的工 作方式暫存器,確定工作方式和功能,低四位用於t0,高四位用於t1。t con是控制寄 存器,控制t0和...