单片机秒表的问题
要一个按钮控制单片机计时,按一下开始,再按下停止,再按清零,运行不出来是为什么,急求~以下是代码和电路图#include<reg51.h>#include<intrins...
要一个按钮控制单片机计时,按一下开始,再按下停止,再按清零,运行不出来是为什么,急求~以下是代码和电路图#include<reg51.h>#include<intrins.h>sbit KEY=P3^7;sbit P0_7=P0^7;unsigned char Tab[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};unsigned int s=0;unsigned int t=0;unsigned int k=0;void delay(int);int0_sev() interrupt 0{ TMOD=0x01; TH0=(65536-50000)/256; TL0=(65536-50000)%256; t=t+1; if(t==2) { t=0; s=s+1; if(s==100) {s=0;} s=s/10; } P0=Tab[s];}main(){ TMOD=0x01; TH0=(65536-50000)/256; TL0=(65536-50000)%256; EA=1;ET0=1; while(1) { if(KEY==0) { if(k==0) { IE=0x81; TR0=1;P0_7=1; delay(10); k=k+1; } else if(k==1) { TR0=0;P0_7=0; IE=0x0; delay(10); k=k+1; } else { delay(10); k=0; } } }}
展开
1个回答
展开全部
试一下芹洞告:
int0_sev() interrupt 0
{
TMOD=0x01;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
t=t+1;
if(t==2)
{
t=0;
s=s+1;
if(s==100)
{s=0;}
s=s/10;//去掉此句颤樱
}
P0=Tab[s];//直嫌明接写P0=Tab[s/10]
}
另外最好加等按键抬起语句
k=3 时要加 s=0
int0_sev() interrupt 0
{
TMOD=0x01;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
t=t+1;
if(t==2)
{
t=0;
s=s+1;
if(s==100)
{s=0;}
s=s/10;//去掉此句颤樱
}
P0=Tab[s];//直嫌明接写P0=Tab[s/10]
}
另外最好加等按键抬起语句
k=3 时要加 s=0
更多追问追答
追问
还是不行。。。怎么回事儿
除了k=0和1,都让k=0了
追答
什么现象呢,数码管什么也不显,中断序号错了吧
int0_sev() interrupt 0 应该是 interrupt 1
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询