标题:
有没有大佬 看下怎么调试 求帮助
[打印本页]
作者:
新手求带
时间:
2018-6-22 00:24
标题:
有没有大佬 看下怎么调试 求帮助
#include<reg52.h>
#include<intrins.h>
sbit ADDR0=P1^0;
sbit ADDR1=P1^1;
sbit ADDR2=P1^2;
sbit ADDR3=P1^3;
sbit ENLED=P1^4;
sbit BUZZ = P1^6; //蜂鸣器控制引脚
unsigned char code LEDwei[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,
0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e
};
unsigned char code KeyCode[]={0xff,0xe7,0xd7,0xb7,0x77,0xeb,0xdb,0xbb,0x7b,
0xed,0xdd,0xbd,0x7d,0xee,0xde,0xbe,0x7e
}; //矩阵键盘按键编码
unsigned char scan0=0xfe;
unsigned char count[]={0,0,0,0,0,0};
unsigned char byte=5;
unsigned char number[5];
unsigned char key;
unsigned char n;
unsigned int cnt;
unsigned char flag=1;
bit f0;
void delay_ms(unsigned int cnt)
{
unsigned char i;
while(cnt--)
{
for(i=0;i<=110;i++);
}
}
void Scankeyboard();
void countDown();
void main()
{
ADDR3=1;
ENLED=0;
TMOD=0x01;
TH0=0xfc;
TL0=0x67;
EA=1;
TR0=1;
ET0=1;
while(1)
{
Scankeyboard();
countDown();
}
}
void time0()interrupt 1
{
unsigned char i;
cnt++;
TH0=0xfc;
TL0=0x67;
P0=0xff;
switch(i)
{
case 0:ADDR0=0; ADDR1=0; ADDR2=0; i++; if(byte>=1) P0=LEDwei[count[0]];break;
case 1:ADDR0=1; ADDR1=0; ADDR2=0; i++; if(byte>=2) P0=LEDwei[count[1]];break;
case 2:ADDR0=0; ADDR1=1; ADDR2=0; i++; if(byte>=3) P0=LEDwei[count[2]];break;
case 3:ADDR0=1; ADDR1=1; ADDR2=0; i++; if(byte>=4) P0=LEDwei[count[3]];break;
case 4:ADDR0=0; ADDR1=0; ADDR2=1; i++; if(byte>=5) P0=LEDwei[count[4]];break;
case 5:ADDR0=1; ADDR1=0; ADDR2=1; i=0; P0=LEDwei[count[5]];break;
default:break;
}
}
void countDown()
{
if(flag==3)
{
if(byte==1&count[0]>9) BUZZ=~BUZZ;
if(byte==2&count[1]>9) BUZZ=~BUZZ;
if(byte==3&count[2]>9) BUZZ=~BUZZ;
if(byte==4&count[3]>9) BUZZ=~BUZZ;
if(byte==5&count[4]>9) BUZZ=~BUZZ;
if(cnt==1000&f0==0)
{
cnt=0;
count[0]--; //个位
if(count[0]>9)
{ f0=1;
if(byte>1)
{
f0=0;
count[0]=9;
count[1]--; //十位
if(count[1]>9)
{
f0=1;
if(byte>2)
{
f0=0;
count[1]=9;
count[2]--; //百位
if(count[2]>9)
{
f0=1;
if(byte>3)
{
f0=0;
count[2]=9;
count[3]--; //千位
if(count[3]>9)
{
f0=1;
if(byte>4)
{
f0=0;
count[3]=9;
count[4]--; //万位
if(count[4]>9)
{
f0=1;
}
}
}
}
}
}
}
}
}
}
}
}
void Scankeyboard()
{
unsigned char scan,keyboard;
unsigned char i;
P2=scan0;
scan=P2;
if(scan!=scan0)
{
delay_ms(2);
if(scan!=scan0)
{
while(P2!=scan0);
keyboard=scan;
for(i=1;i<17;i++)
{
if(keyboard==KeyCode[i])
key=i;
}
if(flag==2)
{
if(n>byte)
n=byte;
if(key>=1&key<=3) //1~3
{
number[n++]=key;
}
if(key>=5&key<=7) //4~6
{
number[n++]=key-1;
}
if(key>=9&key<=11) //7~9
{
number[n++]=key-2;
}
if(keyboard==KeyCode[13]) //0
{
number[n++]=0;
}
count[n-1]=number[n-1];
}
if(flag==1)
{
if(key>=1&key<=3) //1~3
{
key=key;
byte=key; //设置倒计时的位数
count[5]=byte;
// flag=2;
}
if(key==5|key==6) //4~5
{
key=key-1;
byte=key; //设置倒计时的位数
count[5]=byte;
//flag=2;
}
}
if(flag==3&key==15) //重新设定倒计时
{
flag=1;f0=0;
count[0]=0;
count[1]=0;
count[2]=0;
count[3]=0;
count[4]=0;
count[5]=0;
byte=5;
}
else if(flag==1&key==15)
flag=2;
else if(flag==2&key==15)
flag=3;
}
}
else
{
scan0=_crol_(scan0,1);
if(scan0==0xef)
{
scan0=0xfe;
}
}
}
复制代码
作者:
新手求带
时间:
2018-6-22 00:29
我调试的老是计时很久才响应
作者:
zsyzdx
时间:
2018-6-22 12:29
你怎么是限制会员,还有你提问不会很清楚,不明白你问什么意思?
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1