- #include <reg51.h>
- #include <intrins.h>
- unsigned int count=0; //中斷次數(一次50ms)
- unsigned char num=0; //個位
- unsigned char num1=0; //十位
- unsigned char cishu=0;
- unsigned char ge=0;
- unsigned char shi=0;
- sbit p2_0=P2^0; //數碼管段選端
- sbit p2_1=P2^1; //數碼管位選端
- sbit key=P1^7;
- char table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
- //數碼管顯示函數
- void timer_init() //定時器初始化函數
- {
-
- TMOD=0x01; //選擇定時器0的工作方式1
- TH0=0xD8; //裝初值(定時50ms),晶振11.0592MHz
- TL0=0xF0;
- EA=1; //打開總中斷
- ET0=1; //打開定時器中斷
- TR0=0; //先不要啟動定時器
- }
- void display()
- {
- p2_0=1;
- P0=table[ge];
- p2_0=0;
- p2_1=1;
- P0=0x02;
- p2_1=0;
- p2_0=1;
- P0=table[shi];
- p2_0=0;
- p2_1=1;
- P0=0x01;
- p2_1=0;
- }
- void main()
- {
- timer_init();
- while(1)
- {
- //按鍵自鎖標志置1,防止重復響應/
- if(count==20)
- {
- count=0;
- cishu++;
- num++;
- if(num==10)
- {
- num=0;
- num1++;
- }
- if(num1==6)
- {
- num1=0;
- num=0;
- }
- ge=cishu/10;
- shi=cishu%10;
- }
- }
-
- void timer0() interrupt 1 //中斷函數
- {
- count++;
- TH0=0xD8;
- TL0=0xF0;
- }
|