qwe3178888 发表于 2012-12-25 20:16:12

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

我是用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;
P0=0x7f;
delay();
P1=segled;
P0=0xbf;
delay();

P1=segled;
P0=0xdf;
delay();

P1=segled;
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:}

lxa0 发表于 2012-12-25 21:42:53

一个调整小时,另一个调整分钟
不是更简洁吗?

qwe3178888 发表于 2012-12-25 21:55:56

lxa0 发表于 2012-12-25 21:42 static/image/common/back.gif
一个调整小时,另一个调整分钟
不是更简洁吗?

我也想这样,可是编完这个之后 当第一个键什么都不按的时候 按下第二个键 就要切换成 日期,我现在这个只是做的第一步,赐教。

lxa0 发表于 2012-12-25 22:00:51

C语言我不会
也看不懂你的C代码
如果你有汇编代码
倒是可以帮你看看

qwe3178888 发表于 2012-12-25 22:02:36

lxa0 发表于 2012-12-25 22:00 static/image/common/back.gif
C语言我不会
也看不懂你的C代码
如果你有汇编代码


好吧 谢谢了 , 我学的就是用C语言来编程。

gallle 发表于 2012-12-25 22:34:21

要善于利用变量,
你设一个变量X,当这个变量x等于 0表示没有按键操作,1表示设置分 2表示设置时 3表示天 4表示月 等等
那么你就知道了,当按第一个键时,如果x=0,那么将x=1 再按就加1 再按就=0
按第二个键时,如果x=0 那个x=3(设置日期)
                     如果x=1 分钟++
                     如果x=2 小时++
                     如果x=3 天++
其他您自己想想

qwe3178888 发表于 2012-12-25 22:35:50

AMSB1117 发表于 2012-12-25 22:15 static/image/common/back.gif
没仔细看

就您这中断~~~~


如果要实现以上功能 你有什么好的提议呢?

qwe3178888 发表于 2012-12-25 22:41:51

gallle 发表于 2012-12-25 22:34 static/image/common/back.gif
要善于利用变量,
你设一个变量X,当这个变量x等于 0表示没有按键操作,1表示设置分 2表示设置时 3表示天 4 ...

想问下,如果要编的话 这个变量的函数应该怎么编进去呢? 方便教下吗? 我是初学者 不是很懂这方面,最近都在琢磨.

gallle 发表于 2012-12-25 22:52:23

qwe3178888 发表于 2012-12-25 22:41 static/image/common/back.gif
想问下,如果要编的话 这个变量的函数应该怎么编进去呢? 方便教下吗? 我是初学者 不是很懂这方面,最 ...

全局变量就行,一开始就定义,初始值为0,长时间不按键为0

qwe3178888 发表于 2012-12-25 23:00:28

gallle 发表于 2012-12-25 22:52 static/image/common/back.gif
全局变量就行,一开始就定义,初始值为0,长时间不按键为0

弱弱问一句,能打下函数给我吗? 我对一部分函数还不是很熟悉,就是刚刚口中提到的 所要用到的函数。

armok 发表于 2012-12-27 11:21:34

页: [1]
查看完整版本: 求高人来解决一下这个单片机的编程问题!(标题不合格封ID)