#include<reg52.h>
typedef unsigned char uchar ;
typedef unsigned int uint;
uchar table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
uchar tt,dat;
sbit button = P3^7;
void delay_50us(uint t)
{
uchar j;
for(;t>0;t--)
for(j=19;j>0;j--);
}
void init()
{
TMOD = 0X10;
EA=1;
ET1=1;
TR1=1;
TH1=(65536-50000)/256;
TL1=(65536-50000)%256;
}
void display(uchar date)
{
uchar ge , shi;
ge = date % 10;
shi = date / 10;
P2= table[ge];
P0= table[shi];
}
void main()
{
uchar flag;
while(1)
{
if(button==0)
{
delay_50us(10); //延时去抖
if(button==0 && flag==0) //第一次按下启动
{
flag=1;
init();//开中断
}
if(button==0 && flag==1) //第二次按下暂停
{
flag=0 ;
EA=0;
ET1=0;
TR1=0;
}
if(button==0&&flag==2) //第三次按下清零
{
flag=0;
dat=0;
}
}
display(dat);
}
}
void timer_1() interrupt 3
{
TH1=(65536-50000)/256;
TL1=(65536-50000)%256;
tt++;
if(tt==2)
{
tt=0;
if(dat==100)
dat=0;
dat++;
}
}
程序功能:秒表 一个按键实现三个功能 开启 暂停 清零
秒表功能正常,测试通过。清零功能正常,测试通过。主要就是中断出错!!!
如果将第二次按键功能去掉就可以实现,但是加上第二次按键功能就不跑了,可能是中断的问题,但是我已经关了呀,不晓得啥么问题,求指导!!!
此帖出自
小平头技术问答
一周热门 更多>