急!51单片机中,用一个按键控制数码管暂停,再次按下时继续计数。下面是我写的程序,谁能帮我看看错在哪

四位数码管,为什么程序导入PROTEUS之后,按下key2一次,暂停了,按时只显示最后一位数码管,但是一旦前三位不为零时就暂停不了了?还有,暂停后再次按下时却不再继续计数... 四位数码管,为什么程序导入PROTEUS之后,按下key2一次,暂停了,按时只显示最后一位数码管,但是一旦前三位不为零时就暂停不了了?还有,暂停后再次按下时却不再继续计数了,这个要怎么该啊?

跪求各位大神帮帮忙,在线等!!!!

#include <reg52.h>
#define uchar unsigned char
#define uint unsigned int
sbit LED = P1^0;
sbit key1=P3^4;
sbit key2=P3^7;
uchar code table[]={
0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,};
uchar code table1[]={
0xbf,0x86,0xdb,0xcf,
0xe6,0xed,0xfd,0x87,
0xff,0xef,};
uint i,num=0,num1=0;
void delay(uint x)
{
uint i,j;
for(i=x;i>0;i--)
for(j=110;j>0;j--);
}
//初始化函数
void init()
{
TMOD=0x01;
TH0=(65536-45872)/256;
TL0=(65536-45872)%256;
EA=1;
ET0=1;
}
void keyscan()
{
if(key1==0)
{
delay(10);
if(key1==0)
{
num=num1=0;
while(!key1);
}
}
if(key2==0)
{
delay(10);
if(key2==0)
{

TR0=~TR0;
while(!key2);

}
}
}
void T0_time()interrupt 5
{
TH0=(65536-45872)/256;
TL0=(65536-45872)%256;
}
void main()
{
uchar shi,ge,bai,qian;
init();

while(1)
{
keyscan();

if (num==60)
num1++;
else num1=num1;
num=num%60;
num1=num1%60;

shi=num /10;
ge=num%10;
bai=num1%10;
qian=num1/10;
for(i=0;i<10;i++)
{

P1=0xbf;
P2=table[shi];
delay(10);
P1=0x7f;
P2=table[ge];
delay(10);
P1=0xdf;
P2=table1[bai];
delay(10);

P1=0xef;
P2=table[qian];
delay(10);

}
num++;
}
}
展开
 我来答
zhxiufan
2013-04-24 · 知道合伙人软件行家
zhxiufan
知道合伙人软件行家
采纳数:14923 获赞数:38387
国家科技进步奖

向TA提问 私信TA
展开全部
void T0_time()interrupt 5
{
TH0=(65536-45872)/256;
TL0=(65536-45872)%256;
}
这里错了,一是没编完吧,只是中断什么都没有处理呀,二是号错了,应该为1
另外,你的显示和键盘扫描都用延时,会有冲突,漏扫,漏显等会出现
void T0_time()interrupt 1
{
TH0=(65536-45872)/256;
TL0=(65536-45872)%256;
//应该还有处理程序吧
}
更多追问追答
追问
void T0_time()interrupt 1
{
TH0=(65536-45872)/256;
TL0=(65536-45872)%256;
}
应该要写什么样的程序?能不能举个小例子?谢谢
追答
你用这个定时器来计数的吧,可是你没有计数处理呀,比如num++;是不是应该放到这里面,而不是主循环里。
lvyinc064
2013-04-24
知道答主
回答量:16
采纳率:0%
帮助的人:11.2万
展开全部
TR0=1少了一句话开启中断的语句
追问
要加在主函数里面吗?还是加在哪个位置?
追答
不在主函数里面加在初始化函数里面加就可以了,void init这个里面。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式