求高人来解决一下这个单片机的编程问题!(标题不合格封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条回答
qwe3178888
1楼-- · 2020-02-02 15:41
gallle 发表于 2012-12-25 22:34
要善于利用变量,
你设一个变量X,当这个变量x等于 0表示没有按键操作,1表示设置分 2表示设置时 3表示天 4 ...

想问下,如果要编的话 这个变量的函数应该怎么编进去呢? 方便教下吗? 我是初学者 不是很懂这方面,最近都在琢磨.
gallle
2楼-- · 2020-02-02 19:49
qwe3178888 发表于 2012-12-25 22:41
想问下,如果要编的话 这个变量的函数应该怎么编进去呢? 方便教下吗? 我是初学者 不是很懂这方面,最 ...

全局变量就行,一开始就定义,初始值为0,长时间不按键为0
qwe3178888
3楼-- · 2020-02-02 23:33
gallle 发表于 2012-12-25 22:52
全局变量就行,一开始就定义,初始值为0,长时间不按键为0

  弱弱问一句,能打下函数给我吗? 我对一部分函数还不是很熟悉,就是刚刚口中提到的 所要用到的函数。
xiaotaiyang
4楼-- · 2020-02-03 02:34
(标题不合格,封锁ID)

一周热门 更多>