电子时钟按键问题
时间: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显示时钟?可否帮下小弟呢?
