#include<reg52.h> //52系列單片機頭文件
#define ucharunsigned char //宏定義
#define uintunsigned int
sbitdula=P2^6; //申明U1鎖存器的鎖存端
sbitwela=P2^7; //申明U2鎖存器的鎖存端
sbitled1=P1^0; //LED燈說明
sbit led2=P1^1;
uchar codetable[]={ //數碼管顯示編碼
0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,
0x39,0x5e,0x79,0x71};
voiddelayms(uint);
voiddisplay(uchar,uchar);
ucharnum,num1,num2,shi,ge;
void main() //主函數
{
TMOD=0x11; //設置定時器0和1為工作方式1(0001 0001)
TH0=(65536-458720)/256; //裝初值
TL0=(65536-458720)%256;
TH1=(65536-458720)/256; //裝初值
TL1=(65536-458720)%256;
EA=1; //開總中斷
ET0=1; //開定時器0中斷
ET1=1; //開定時器1中斷
TR0=1; //啟動定時器0
TR1=1; //啟動定時器1
while(1) //程序在這里不停的對數碼管動態掃描同時等待中斷發生
{
display(shi,ge);
}
}
voiddisplay(uchar shi,uchar ge) //顯示子函數
{
wela=1;
P0=0xfe; //送入位選信號
wela=0;
dula=1;
P0=table[shi]; //送入段選信號
dula=0;
P0=0xff; //消影
delayms(5); //延時5毫秒
wela=1;
P0=0xfd;
wela=0;
dula=1;