打印

关于时钟程序

[复制链接]
965|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
txcy|  楼主 | 2013-5-26 15:53 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
#include <reg51.h>

sbit x1 = P2^0;
sbit x2 = P2^1;
sbit x3 = P2^2;
sbit x4 = P2^3;
sbit x5 = P2^4;
sbit x6 = P2^5;       

sbit k5 = P0^0;      //控制分++
sbit k6 = P0^1;         //控制分--

int num=0,M=0,num1=0,M1=0;
unsigned char code oo[]={0x3f,0x06,0x5b,0x4f,0x66,
0x6d,0x7d,0x07,0x7f,0x6f};

void delay(int z)
{
int i,j;
for(i=z;i>0;i--)
for(j=110;j>0;j--);
}
void fen()

{
if(k5==0)
{          
delay(20);
  if(k5==1)
  {
            
           if(M!=59)
{
delay(40);
           M++;

}
else
{  delay(5);
M=0;
}
  }
  
}
}          
void int0() interrupt 1
{
TH0 = 0xFC;         //初值
TL0 = 0x66;
num++;
if(num == 1000)
{         
num = 0;
num1 ++;
}
         if(num1==60)
{
     num1=0;
     M++;
}
if(M == 60)
{
M=0;
M1++;
}       

}
void L_xs(int s,int g,int s1,int g1,int s2,int g2)
{
x1=1;x2=1;x3=1;x4=1;x5=1;x6=0;         //秒的个位
P1=oo[g];
delay(2);
x1=1;x2=1;x3=1;x4=1;x5=0;x6=1;          //秒的十位
P1=oo[s];
delay(2) ;
x1=1;x2=1;x3=1;x4=0;x5=1;x6=1;           //分的个位
P1=oo[g1];
delay(2) ;
x1=1;x2=1;x3=0;x4=1;x5=1;x6=1;            //分的十位
P1=oo[s1];
delay(2) ;
x1=1;x2=0;x3=1;x4=1;x5=1;x6=1;            //时的个位
P1=oo[g2];
delay(2) ;
x1=0;x2=1;x3=1;x4=1;x5=1;x6=1;            //时的十位
P1=oo[s2];
delay(2) ;
}
void main()
{
TMOD = 0x01;        //工作模式
TH0 = 0xFC;         //初值
TL0 = 0x66;
TR0 = 1;

ET0=1;
EA =1;          //总中断
while(1)
{
L_xs((num1/10),(num1%10),(M/10),(M%10),(M1/10),(M1%10));
fen();
if(num1 == 60)
{
num1 = 0 ;
}
if(M == 60)
{
M = 0;
}
if(M1 == 24)
{
M1 =0;
}

}
}

相关帖子

沙发
火箭球迷| | 2013-5-26 16:07 | 只看该作者
问题出现在 实现分的加减那里 我们用的是一个拨码开关  ,功能也能实现,但是出现的情况是一会可以用,一会不可以,不知道问题在那里

使用特权

评论回复
板凳
baidudz| | 2013-5-26 16:22 | 只看该作者
访问冲突了,中断和中为之外都做这个M++之类的,当然不行了,时不时的冲突数据都乱来了
再说你都用时间中断了,还搞delay()这个东东延时,太糟了,开关按扭是要防抖,但不应当用delay()来处理

使用特权

评论回复
地板
gxgclg| | 2013-5-26 16:34 | 只看该作者
baidudz 发表于 2013-5-26 16:22
访问冲突了,中断和中为之外都做这个M++之类的,当然不行了,时不时的冲突数据都乱来了
再说你都用时间中断 ...

分析的很对

使用特权

评论回复
5
li199013| | 2013-5-27 17:05 | 只看该作者
防止屏幕抖动,不是用delay的延时程序可以吗?中断程序不是控制时分秒的变化吗?

使用特权

评论回复
6
baidudz| | 2013-5-28 23:15 | 只看该作者
这程序太长了

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

274

主题

2106

帖子

0

粉丝