|
#include <reg51.h> //包含頭文件 #include <intrins.h> //包含移位函數(shù)頭文件 //段碼表 unsigned char code dis_code[11]={0xc0,0xf9,0xa4,0xb0, // 0, 1, 2, 3 0x99,0x92,0x82,0xf8,0x80,0x90, 0xff};// 4, 5, 6, 7, 8, 9, off unsigned char code wei_code[8]={0x80,0x40,0x20,0x10,0x08,0x04,0x02,0x01}; unsigned char shi=0,fen=0,miao=0; //毫秒級延時(shí)函數(shù) unsigned int jishu,j=0; void delay(unsigned int x); void display(void); void int0Init(void); //主函數(shù) void main() { P0 = 0xff; //先關(guān)閉數(shù)碼管 P2 = 0x00; // int0Init(); while(1) { display(); } } void int0Init(void) { EA=1; ET0=1; TR0=1; TMOD=0x01; TH0=(65536-50000)/256; TL0=(65536-50000)%256; } void delay(unsigned int x) { unsigned char i; while(x--) { for(i=0;i<120;i++); } } void display(void) { P2 = 0x00; //每顯示一位都要關(guān)閉位選端口一次 P2=wei_code[0]; //每次選通一個(gè)位選端口 P0=dis_code[miao%10]; //段碼送P0口 delay(2); P2 = 0x00; //每顯示一位都要關(guān)閉位選端口一次 P2=wei_code[1]; //每次選通一個(gè)位選端口 P0=dis_code[miao/10]; //段碼送P0口 delay(2); P2 = 0x00; //每顯示一位都要關(guān)閉位選端口一次 P2=wei_code[2]; //每次選通一個(gè)位選端口 P0=0xbf; //段碼送P0口 delay(2); P2 = 0x00; //每顯示一位都要關(guān)閉位選端口一次 P2=wei_code[3]; //每次選通一個(gè)位選端口 P0=dis_code[fen%10]; //段碼送P0口 delay(2); P2 = 0x00; //每顯示一位都要關(guān)閉位選端口一次 P2=wei_code[4]; //每次選通一個(gè)位選端口 P0=dis_code[fen/10]; //段碼送P0口 delay(2); P2 = 0x00; //每顯示一位都要關(guān)閉位選端口一次 P2=wei_code[5]; //每次選通一個(gè)位選端口 P0=0xbf; //段碼送P0口 delay(2); P2 = 0x00; //每顯示一位都要關(guān)閉位選端口一次 P2=wei_code[6]; //每次選通一個(gè)位選端口 P0=dis_code[shi%10]; //段碼送P0口 delay(2); P2 = 0x00; //每顯示一位都要關(guān)閉位選端口一次 P2=wei_code[7]; //每次選通一個(gè)位選端口 P0=dis_code[shi/10]; //段碼送P0口 delay(2); } void Time0(void) interrupt 1 using 0 { j++; if (j==20) {miao++;j=0; if(miao==60) {miao=0;fen++; if(fen==60) {fen=0;shi++; if(shi==24) {shi=0;}}}} TH0 = (65536-50000)/256; //定時(shí)器重新賦初值 TL0 = (65536-50000)%256; } |
|