微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 电子时钟按键问题

电子时钟按键问题

时间:10-02 整理:3721RD 点击:

问题是按下 s4计时不会停止,是什么原因?新人求教
#include<reg51.h>
#include<intrins.h>
#define uchar unsigned char
#define uint unsigned int
uchar code aa[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0xbf};
uchar bb[]={0,0,10,0,0,10,0,0};
sbit s15=P1^0;
sbit s14=P1^1;
sbit s4=P1^2;
sbit s3=P1^3;
sbit s2=P3^3;
void shaomiao();
void keydelay()// 按键延时
{
    uchar i,j;
for(i = 0;i < 50;i++)
{
     for(j = 0;j < 100;j++);
}
}
void delay(uchar bb)//数码管延时
{
    uchar i;
uint  j;
for(i = 0;i < bb;i++)
{
     for(j = 0;j < 120;j++);
}
}
void yanshi()
{
EA=0;
TR0=0;
TMOD=0x01;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
EA=1;
TR0=1;
ET0=1;
}
void anjian() //按下是 s4计时停止
{  
P1=0xff;
if(0==s4)
  {
   keydelay();
   if(0==s4)
    {
  while(0==s4);
  TR0=0;
  shaomiao();
}
  }
}
void shaomiao() // 把时间显示在数码管上面
{
uchar temp=0xf7;
uchar i;
while(1)
    {
  for(i=0;i<8;i++)
   {
    P3=0xff;
    P2=aa[bb];
    temp=_crol_(temp,1);
    P3=temp;
    delay(1);
   }
}
}
void main()
{
anjian();
yanshi();
shaomiao();

}
void timer0()interrupt 1
{
uchar num;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
TR0=1;
num++ ;
if(20==num)
  {           
   num=0;
   bb[0]++;
   if(10==bb[0])
    {
  bb[0]=0;
  bb[1]++;
  if(10==bb[1])
   {
    bb[1]=0;
    bb[3]++;
    if(10==bb[3])
     {
   bb[3]=0;
   bb[4]++;
   if(10==bb[4])
    {
     bb[4]=0;
     bb[6]++;
     if(10==bb[6])
      {
   bb[6]=0;
   bb[7]++;
   if(10==bb[7])
    {
     bb[0]=0;
     bb[1]=0;
     bb[3]=0;
     bb[4]=0;
     bb[6]=0;
     bb[7]=0;
    }
   }
    }
  }
   }
}
  }
}



来个大神帮忙下

怎么变量都是写在右边的?注意变量写法,很不规范,也是错误滋生的原因之一。void shaomiao() 里面有死循环,出不来了。

变量我看过的都是这么写的,好像没有什么不一样的,那按照你说的 要怎么写才是规范的;还有void shaomiao( ),你说的死循环一概是while( )这个吧   可是数码管我也只能这么写了,在仔细指点下  小编 感谢你  

变量写左边,你那里看来的写法,误入歧途。你里面的死循环不去掉,怎么去读按键函数?那么按键就永远没用,简单点,把按键函数放入while死循环中去。

好了  谢谢啊

小编是LCD显示时钟?可否帮下小弟呢?

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top