|
我这个定时器显示方面没毛病,但是我搞不懂外部中断控制,看视频在外部中断函数中加了“TR0=~TR0”让他可以通过按键来控制通断,可是断开时,它并不能显示中断时的时间,想请各位大佬指教,下边还有我的protues原理图
#include<STC12C5A60S2.h>
#include<intrins.h>
typedef unsigned char u8;
typedef unsigned int u16;
sbit p32=P3^2;
u8 code smgduan[]={
0x3f,0x06,0x5b,0x4f,0x66,
0x6d,0x7d,0x07,0x7f,0x6f,
};
u8 smgwei[]={0,0,0};
void Init0int()
{
TH0=0XEE;
TL0=0X00;
ET0=1;
TR0=1;
}
u8 k,i,m=0;
void delay(u16 x)
{
u16 i,j;
for(i=x;i>0l;i--)
for(j=255;j>0;j--);
}
void main()
{
k=0x01;
i=0;
m=0;
TMOD=0X01;
Init0int();
IT0=1;
IE0=1;
EX0=1;
PT0=1;
EA=1;
while(1);
}
void Key() interrupt 0 using 0
{
TR0=~TR0;
}
void display()
{
P2=0x00;
if(k==0X01)
P0=smgduan[smgwei[0]];
if(k==0X02)
P0=0x40;
if(k==0x04)
P0=smgduan[smgwei[1]];
if(k==0X08)
P0=smgduan[smgwei[2]];
P2=k;
i++;
if(i==4)
{
i=0;
k=0x01;
}
else
k=_crol_(k,1);
}
void Timer0() interrupt 1
{
TH0=0Xee;
TL0=0X00;
m++;
if(m==1)
{
display();
}
if(m==2)
{
m=0;
if(smgwei[2]==9)
{
smgwei[2]=0;
if(smgwei[1]==9)
{
smgwei[1]=0;
if(smgwei[0]==9)
smgwei[0]=0;
else
smgwei[0]++;
}
else
smgwei[1]++;
}
else
smgwei[2]++;
}
}
|
|