unsigned char ge,shi,num,count,t;
unsigned char code Tab[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0x88,0x83,0xC6,0xA1,0x86,0x8E};
void main()
{
TMOD=0x01; //T0,工作方式1
TH0=0xb1; //20ms定時
TL0=0xe0;
t=2;
EA=1; //開啟總中斷允許
ET0=1; //允許T0定時器中斷
EX0=1; // 允許外部中斷0
IT0=1;
IP=0x01; //外中斷優先級為高
P2=Tab[0];
P0=Tab[0];
num=0;
while(1) //壹直調用顯示,等待T0中斷修改顯示數據
{
shi=num/10; //取出十位數
ge=num%10; //取出個位數
P2=Tab[shi]; //P2口送出十位數據顯示代碼
P0=Tab[ge]; //P1口送出個位數據顯示代碼
}
}
void timer0() interrupt 1
{
TH0=0xb1;
TL0=0xe0;
count++;
if(count==50) //加到50次即1秒
{ count=0;
num++;
if(num==60)
{num=0;}
}
}
void extern0(void) interrupt 0
{
t++;
if(t%2==0)
{
TR0=0;
P2=Tab[shi];
P0=Tab[ge];
}
else
{
TR0=1;
}
}
上面的程序我調試過了,完全符合妳的要求,妳試壹下吧!外部中斷0要用P3.2口,不能用P1.1口。祝妳好運。這點分給妳回答問題,很委屈的哦!呵呵。