经过我 一番的修改基本到达要求
interrupt 中断号 后面应该是1 我用的是0所以不管我数码管 怎么弄 就是跳不出来
看代码吧
#include
#define u8 unsigned char
#define s8 char
#define u16 unsigned int
#define s16 int
sbit s4=P3^3;
sbit s5=P3^2;
u8 feng=0;
u8 miao=0;
u8 haomia=0;
unsigned char code SMG_NoDot[18] =
{0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,
0x80,0x90,0x88,0x80,0xc6,0xc0,0x86,0x8e,
0xbf,0x7f};
void htc138( u8 n)
{
switch (n)
{
case 4:
P2 = (P2 & 0X1f)|0x80;
break;
case 5:P2 = (P2 & 0X1f)|0xa0;break;case 6:P2 = (P2 & 0X1f)|0xc0;break;case 7:P2 = (P2 & 0X1f)|0xe0;break;
}
}
void dislpaysmg_bit(u8 value ,u8 pos)
{
htc138(6);
P0 = 0x01 << pos;
htc138(7);P0 = value;
}
void Delay10us(u16 time ) //@11.0592MHz
{
while(time—);
}
void dislplaysmgzt()
{
dislpaysmg_bit(SMG_NoDot[haomia%10],7);
Delay10us(500);
dislpaysmg_bit(SMG_NoDot[haomia/10],6);
Delay10us(500);
dislpaysmg_bit(SMG_NoDot[16],5);
Delay10us(500);
dislpaysmg_bit(SMG_NoDot[miao%10],4);Delay10us(500);dislpaysmg_bit(SMG_NoDot[miao/10],3);Delay10us(500);dislpaysmg_bit(SMG_NoDot[16],2);Delay10us(500);dislpaysmg_bit(SMG_NoDot[feng%10],1);Delay10us(500);dislpaysmg_bit(SMG_NoDot[feng/10],0);Delay10us(500);
}
//=¶¨Ê±Æ÷==
void Inittimer0()
{
TMOD =0X01;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
ET0 = 1;
EA = 1;
TR0 = 1;
}
void SYNTAXInittimer0() interrupt 1
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
haomia++;if(haomia==20){miao++;haomia=0;if(miao==60){feng++;miao=0;}if(feng==99){feng=0;}}
}
//===================
void delaykey(u8 t)
{
while(t—);
}
void anjankey()
{
if(s40)//Æô¶¯ÔÝÍ£
{
delaykey(100);
if(s40);
{
TR0 = ~TR0;while(s4==0){dislplaysmgzt();}}
}
if(s50)//ÇåÁã
{
delaykey(100);
if(s50);
{
feng=0;
miao=0;
haomia=0;
while(s5==0)
{
dislplaysmgzt();
}
}
}
}
void main()
{
Inittimer0();
while(1)
{
dislplaysmgzt();anjankey();}
}
