c语言单片机51系列 采用定时器0实现50ms定时,采用中断方式,中断20次为1s,3个按键以查询方式实现键盘输入
状态,按键为暂停启动清零。简易密码表2位数码管00~59,开关接在3.0、3.1、3.2,0.0,0.1数码管位选控制端,P2口接两个数码管8个段选控制端。请问下面程序哪...
状态,按键为暂停启动清零。简易密码表2位数码管00~59,开关接在3.0、3.1、3.2,0.0,0.1数码管位选控制端,P2口接两个数码管8个段选控制端。请问下面程序哪里错了。#include<reg51.h>
unsigned char msec,sec;
void delay(unsigned char i)
{
unsigned char j,k;
for(j=i;j>0;j--)
for(k=0;k<115;k++);
}
void T0_INT(void) interrupt 1
{
TH0=0x30;
TL0=0xb0;
msec++;
if(msec==20)
{
msec=0;
sec++;
if(sec==60)
{
sec=0;
}
}
}
void main()
{
unsigned char led[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
unsigned char temp;
TMOD=0x01;
TH0=0x3c;
TL0=0xb0;
EA=1;
ET0=1;
P3=0xff;
while(1)
{
P0=0x01;
P2=led[sec%10];
delay(10);
P0=0x02;
P2=led[sec/10];
delay(10);
temp=~P3;
temp=temp&0x07;
if(temp==0x06)
TR0=0;
if(temp==0x05)
TR0=1;
if(temp==0x03)
{TR0=0;sec=0;msec=0;}
}
} 展开
unsigned char msec,sec;
void delay(unsigned char i)
{
unsigned char j,k;
for(j=i;j>0;j--)
for(k=0;k<115;k++);
}
void T0_INT(void) interrupt 1
{
TH0=0x30;
TL0=0xb0;
msec++;
if(msec==20)
{
msec=0;
sec++;
if(sec==60)
{
sec=0;
}
}
}
void main()
{
unsigned char led[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
unsigned char temp;
TMOD=0x01;
TH0=0x3c;
TL0=0xb0;
EA=1;
ET0=1;
P3=0xff;
while(1)
{
P0=0x01;
P2=led[sec%10];
delay(10);
P0=0x02;
P2=led[sec/10];
delay(10);
temp=~P3;
temp=temp&0x07;
if(temp==0x06)
TR0=0;
if(temp==0x05)
TR0=1;
if(temp==0x03)
{TR0=0;sec=0;msec=0;}
}
} 展开
4个回答
展开全部
没有看出来。。。。。。。。。。。
追问
不能实现、、、、
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
建议加个按键去抖动延时程序试下 不行找我在想办法
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
看不出有什么问题啊
追问
但是就是不能实现哈、、
追答
调调按键判断部分,貌似有问题
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询