#define uchar unsigned char
uchar distab[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0x00} //0到f
uchar number,dat,dis[4]
void t0isr() interrupt 1
{
TH0=(65536-5000)/256
TL0=(65536-5000)%256
number++
number%=3
switch(number)
P1=0x20<<number
P0=distab[dis[number]]
}
void int0isr() interrupt 0
{
dat++
dat%=1000
dis[0]=dat%10
dis[1]=dat%100/10
dis[2]=dat/100
}
main()
{
TMOD=0x01
TH0=(65536-5000)/256
TL0=(65536-5000)%256
TR1=1
ET1=1
EX0=1
IT0=1
EA=1
while(1)
}
void main(){
EA=1//允许中断
EX0=1
IT0=0//允许外部中断 0,,IT0=0 是低电平触发中断,处理不好可能会造成重入。
................
void EX_INT0() interrupt 0 //利用中断来进行变化
{
EA=0
delay_ms(3)//中断服务里面延时,还关闭了中断,很容易漏掉一些计数。
Count++
p6=0
EA=1
}
终上所述修改如下:
void main()
{
EA=1//允许中断
EX0=1
IT0=1
........
void EX_INT0() interrupt 0 //利用中断来进行变化
{
Count++
p6=0
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)