- #include<reg52.h>
- sbit ENEND = P1^4;
- sbit ADDR0 = P1^0;
- sbit ADDR1 = P1^1;
- sbit ADDR2 = P1^2;
- sbit ADDR3 = P1^3;
- unsigned char code numtab[] = {0xC0, 0xF9, 0xA4, 0xB0, 0x99, 0x92, 0x82, 0xF8,0x80, 0x90, 0x88, 0x83, 0xC6, 0xA1, 0x86, 0x8E};
- unsigned char LedBuff[6]= {0};
- unsigned int cnt = 0;
- unsigned char i = 0;
- void main()
- {
- unsigned long sec = 0;
- ENEND = 0;
- ADDR3 = 1;
- P0 = 0xff;
- TMOD = 0X01;
- TH0 = 0xfc;
- TL0 = 0x66;
- TR0 = 1;
- EA = 1;
- ET0 = 1;
- while(1)
- {
- if (cnt == 1000)
- {
- cnt = 0;
- sec++;
- if(sec>99)
- sec=0;
- LedBuff[0] = sec%10;
- LedBuff[1] = sec/10;
- }
- }
- }
- /* 定時器0中斷服務函數 控制位并顯示對應的數值*/
- void Iterruptimer0() interrupt 1
- {
- TH0 = 0XFC;
- TL0 = 0X66;
- cnt++;
- P0 = 0XFF;
- switch(i)
- {
- case 0 : ADDR2 = 1;ADDR1 = 0;ADDR0 = 1;i++; P0 = numtab[LedBuff[0]];break;
- case 1 : ADDR2 = 1;ADDR1 = 0;ADDR0 = 0;i=0; P0 = numtab[LedBuff[1]];break;
- default : break;
- }
- }
復制代碼
|