标题:
求大神帮我看一眼这个单片机程序仿真时为什么按键没反应?
[打印本页]
作者:
苹果砸到了牛顿
时间:
2019-6-18 07:50
标题:
求大神帮我看一眼这个单片机程序仿真时为什么按键没反应?
#include<reg51.h>
#define uint unsigned int
#define uchar unsigned char
uint a,b,i,min,hour,minge,minshi,hourge,hourshi,amin,ahour,aminge,aminshi,ahourge,ahourshi,sec;
uchar int_time;
sbit key1=P1^0;
sbit key2=P1^1;
sbit key3=P1^2;
sbit key4=P1^3;
sbit lcdrs=P2^0;
sbit lcdrw=P2^1;
sbit lcden=P2^2;
sbit led=P2^4;
sbit sound=P2^5;
uchar code table1[]={'0','1','2','3','4','5','6','7','8','9'};
uchar code table2[]="Time:00:00 " ;
uchar code Alarm_1[]="Alarm:00:00 ";
uchar code nul[]=" ";
void delay(unsigned int xms) //??????
{ uint i,j;
for(i=xms;i>0;i--)
for(j=124;j>0;j--);
}
void write_com(uchar com) //LCD???????
{ delay(5) ;
lcdrs=0;
P0=com;
delay(5);
lcden=1;
delay(5);
lcden=0;
}
void write_data(uchar date) //LCD???????
{
delay(5);
lcdrs=1;
P0=date;
delay(5);
lcden=1;
delay(5);
lcden=0;
}
void clock_write()
{ while(1)
{
if(key1==0)
{ delay(10);
if(key1==0)
{
if(hour==23) // ???????
hour=0;
else
hour++;
hourge=hour%10;
hourshi=hour/10;
write_com(0x0f);
delay(2);
write_com(0x80+6);
write_data(table1[hourge]);
delay(5);
write_com(0x80+5);
delay(2);
write_data(table1[hourshi]);
while(!key1);
delay(1);
}
}
if(key2==0)
{
delay(10);
if(key2==0)
{
if(min==59) //????????
min=0;
else
min++;
minge=min%10;
minshi=min/10;
write_com(0x0f);
write_com(0x80+9);
write_data(table1[minge]);
delay(1);
write_com(0x80+8);
write_data(table1[minshi]);
delay(1);
while(!key2);
}
}
if(key3==0)
{
delay(10);
if(key3==0)
{
write_com(0x0c);
TR1=1;
while(!key3);
break;
}
}
}
}
void alarm()
{
while(1)
{
if(key1==0)
{
delay(10);
if(key1==0)
{
if(ahour==24)
ahour=0;
else
ahour++;
ahourge=ahour%10;
ahourshi=ahour/10;
write_com(0x0f);
delay(2);
write_com(0x80+0x40+8);
write_data(':');
write_com(0x80+0x40+7);
write_data(table1[ahourge]);
delay(1);
write_com(0x80+0x40+6);
delay(2);
write_data(table1[ahourshi]);
delay(1);
while(!key1);
}
}
if(key2==0)
{
delay(10);
if(key2==0)
{
if(amin==59)
amin=0;
else
amin++;
aminge=amin%10;
aminshi=amin/10;
write_com(0x0f);
delay(2);
write_com(0x80+0x40+10);
write_data(table1[aminge]);
delay(1);
write_com(0x80+0x40+9);
delay(2);
write_data(table1[aminshi]);
delay(1);
while(!key2);
}
}
if(key3==0)
{
delay(10);
if(key3==0)
{
write_com(0x0c);
write_com(0x80+0x40);
for(i=0;i<11;i++)
write_data(nul[i]);
while(!key3);
break;
}
}
}
}
void keyscan()
{
if(key1==0)
{
delay(10);
if(key1==0)
{
while(!key1);
time();
}
}
else if(key2==0)
{
delay(10);
if(key2==0)
{
while(!key2)
{
ahourge=ahour%10;
ahourshi=ahour/10;
write_com(0x80+0x40+7);
write_data(table1[ahourge]);
delay(5);
write_com(0x80+0x40+6);
delay(2);
write_data(table1[ahourshi]);
aminge=amin%10;
aminshi=amin/10;
write_com(0x80+0x40+10);
write_data(table1[aminge]);
delay(5);
write_com(0x80+0x40+9);
delay(2);
write_data(table1[aminshi]);
write_com(0x80+0x40);
for(i=0;i<11;++i)
write_data(Alarm_1[i]);
}
write_com(0x80+0x40);
for(i=0;i<11;i++)
write_data(nul[i]);
}
}
else if(key3==0)
{
delay(10);
if(key3==0)
{
while(!key3);
ahourge=ahour%10;
ahourshi=ahour/10;
write_com(0x80+0x40+7);
write_data(table1[ahourge]);
delay(5);
write_com(0x80+0x40+6);
delay(2);
write_data(table1[ahourshi]);
aminge=amin%10;
aminshi=amin/10;
write_com(0x80+0x40+10);
write_data(table1[aminge]);
delay(5);
write_com(0x80+0x40+9);
delay(2);
write_data(table1[aminshi]);
write_com(0x80+0x40);
for(i=0;i<11;++i)
write_data(Alarm_1[i]);
alarm();
}
}
else if(key4==0)
delay(5);
if(key4==0)
{
while(!key4);
a=a+1;
if(a%2==0)
{
for(b=0;b<6;b++)
{
sound=~sound;
delay(200);
}
sound=1;
}
else if(a%2==1)
{
sound=0;
delay(300);
sound=1;
delay(300);
}
sound=1;
}
}
void main()
{
TMOD=0x01;
TH0=(65536-46483)/256;
TL1=(65536-46483)%256;
EA=1;
ET0=1;
TR0=1;
int_time=0;
sec=55;
min=59;
hour=23;
}
void T0_interserve(void) interrupt 1
{
int_time++;
if(int_time==20)
{int_time=0;
sec++;
}
if(sec==60)
{ sec=0;
min++;
}
if(min==60)
{min=0;
hour++;
}
if(hour==24)
{hour=0;}
TH0=(65536-46483)/256;
TL1=(65536-46483)%256;
}
复制代码
作者:
charles11
时间:
2019-6-18 13:50
检查一下引脚有没有定义错误,没有硬件图很难看出来
作者:
yjb1025
时间:
2019-6-18 16:42
求大神给我个项目,单片机实训,电子钟,谢谢
作者:
wulin
时间:
2019-6-18 17:02
楼主main程序中没有调用任何子程序并且没有主循环,MCU除了反复初始化定时器和时分秒,什么也干不了,包括中断也不可能发生。
作者:
尹子归来
时间:
2019-6-18 19:04
主函数没有循环,程序不运行;随便一提快三百行的程序没有注释对齐也不是很准确看着真的非常头疼。建议下次改进一下。
作者:
苹果砸到了牛顿
时间:
2019-6-18 22:31
wulin 发表于 2019-6-18 17:02
楼主main程序中没有调用任何子程序并且没有主循环,MCU除了反复初始化定时器和时分秒,什么也干不了,包括 ...
⊙0⊙,谢谢你鸭。
作者:
听雨轩1
时间:
2019-6-19 15:15
主程序没有循环,所以什么都干不了
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1