求高人来解决一下这个单片机的编程问题!(标题不合格封ID)

2020-02-01 16:27发布

  我是用89C51这个芯片的,需要编一个电子钟 要求两个按钮 按下第一个按钮 第二个按钮可以辅助调节分钟 按下第一个按钮第二次 第二个按钮则可以调节 小时。有高手会吗?? 帮手解决下小弟的疑惑,感激!!  
这个是本人编的程序,但还有错误 不可用,求指点!
  #include<reg51.h>
unsigned char count=0,H=0,sec=0,min=0;
sbit K1=P2^0;
sbit K2=P2^1;
unsigned char D;
void delay();
void main()
{
unsigned char segled[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
TMOD=0x01;
TH0=(65536-10000)/256;
TL0=(65536-10000)%256;
IE=0x8F;
IT0=1;
IT1=1;
TR0=1;
while(1)
{
P1=segled[min%10];
P0=0x7f;
delay();
P1=segled[min/10];
P0=0xbf;
delay();

P1=segled[H%10];
P0=0xdf;
delay();

P1=segled[H/10];
P0=0xef;
delay();

  
}
      


}
void delay()
{
TH1=(8192-5000)/32;
TL1=(8192-5000)%32;
TR1=1;
while(!TF1);
TF1=0;
TR1=0;
}
void intt0() interrupt 1
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
count++;
if(count==20)
{
count=0;
sec++;
if(sec==60)
{
sec=0;
min++;
if(min==60)
{
min=0;
  H++;
  if(H>24)
  {
  H=0;
  }
}
}
}
}
  void key_prc(){
  
  if(K1==0)
  {D++;
   if(D>2)
  D=0;
  }
   }

switch(D)
{
case 1:
  if(k2==0)
  {min++;
   if(min==60)
   {min==0;
    H++;
        if(H==24)
        H=0;
   }
  }
;break
  case 2:
  if(k2==0)
  {H++;
   if(H==24)
   {H=0;}
  }
;break
}
loveliness:}
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
10条回答
lxa0
1楼-- · 2020-02-01 19:05
 精彩回答 2  元偷偷看……
qwe3178888
2楼-- · 2020-02-01 22:02
lxa0 发表于 2012-12-25 21:42
一个调整小时,另一个调整分钟
不是更简洁吗?

我也想这样,可是编完这个之后 当第一个键什么都不按的时候 按下第二个键 就要切换成 日期,我现在这个只是做的第一步,赐教。
lxa0
3楼-- · 2020-02-02 00:14
C语言我不会
也看不懂你的C代码
如果你有汇编代码
倒是可以帮你看看
qwe3178888
4楼-- · 2020-02-02 04:39
lxa0 发表于 2012-12-25 22:00
C语言我不会
也看不懂你的C代码
如果你有汇编代码

好吧 谢谢了 , 我学的就是用C语言来编程。
gallle
5楼-- · 2020-02-02 09:48
要善于利用变量,
你设一个变量X,当这个变量x等于 0表示没有按键操作,1表示设置分 2表示设置时 3表示天 4表示月 等等
那么你就知道了,当按第一个键时,如果x=0,那么将x=1 再按就加1 再按就=0
按第二个键时,如果x=0 那个x=3(设置日期)
                     如果x=1 分钟++
                     如果x=2 小时++
                     如果x=3 天++
其他您自己想想
qwe3178888
6楼-- · 2020-02-02 15:32
 精彩回答 2  元偷偷看……

一周热门 更多>