|
這是一個(gè)秒表程序代碼,普中科技的實(shí)驗(yàn)板,想實(shí)現(xiàn)的功能是:按住key4按鍵不放秒表計(jì)時(shí)開始,松開key4按鍵秒表計(jì)時(shí)暫停。不知道問題出在哪里了,實(shí)現(xiàn)不了。其余的key1加,key2減,key3清零都正常,只有key4不行,請各位師傅們幫忙看看,謝謝!
#include"reg52.h"
#define uint unsigned int
#define uchar unsigned char
sbit key1=P3^1;
sbit key2=P3^0;
sbit key3=P3^2;
sbit key4=P3^3;
sbit lsa=P2^2;
sbit lsb=P2^3;
sbit lsc=P2^4;
uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
uchar num[2];
uint a,t;
void delay(uint i)
{
uint x,y;
for(x=i;x>0;x--)
for(y=123;y>0;y--);
}
void display()
{
uchar a;
for(a=0;a<2;a++)
{
switch(a)
{
case(0):lsa=0;lsb=0;lsc=0;break;
case(1):lsa=1;lsb=0;lsc=0;break;
}
P0=table[num[a]];
delay(10);
P0=0x00;
}
}
void keyscan()
{
num[1]=a/10;
num[0]=a%10;
if(key1==0)
{
delay(5);
if(key1==0)
{
a++;
if(a==60)
{
a=0;
}
while(!key1);
}
}
if(key2==0)
{
delay(5);
if(key2==0)
{
if(a==0)
{
a=60;
}
a--;
while(!key2);
}
}
if(key3==0)
{
delay(5);
if(key3==0)
{
a=0;
while(!key3);
}
}
if(key4==0)
{
delay(5);
if(key4==0)
{
while(!key4);
TR0=~TR0;
}
}
}
void main()
{
TMOD=0x01;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
EA=1;
ET0=1;
while(1)
{
keyscan();
display();
}
}
void timer0() interrupt 1
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
t++;
if(t==20)
{
t=0;
a++;
if(a==60)
{
a=0;
}
}
}
|
|