标题:
这个单片机流水灯程序不按照循环走,按下按键就全部亮了.我加过延时函数了
[打印本页]
作者:
夜气辉
时间:
2022-1-24 11:14
标题:
这个单片机流水灯程序不按照循环走,按下按键就全部亮了.我加过延时函数了
这个程序流水灯循环的时候,不按照循环走,按下按键就全部亮了,我加过延时函数了,也是一次全部亮。求助各位学霸。
单片机源程序如下:
#include<reg52.h>
#define u8 unsigned char
sbit S7=P3^0;
sbit S6=P3^1;
sbit S5=P3^2;
sbit S4=P3^3;
u8 code LedChar[18] =
{0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,
0x80,0x90,0x88,0x80,0xc6,0xc0,0x86,0x8e,
0xbf,0x7f};
void LedXun_huan();
void InitSystem();
void Chosse573(u8 i);
void InitSystem()
{
Chosse573(5);
P0=0X00;
}
void Delay(u8 t)
{
while(t)
{
t--;
}
}
void Chosse573(u8 i)
{
switch(i)
{
case 4: P2=(P2&0X1F)|0X80;break;
case 5: P2=(P2&0X1F)|0XA0;break;
case 6: P2=(P2&0X1F)|0XC0;break;
case 7: P2=(P2&0X1F)|0XE0;break;
}
}
void KeyDriver()
{
if(S7==0)
{
Delay(500);
if(S7==0)
LedXun_huan();
}
}
void LedXun_huan()
{
u8 i;
Chosse573(4);
for(i=0;i<8;i++)
{
P0=~(0x01<<i);
}
}
void main()
{
InitSystem();
while(1)
{
KeyDriver();
}
}
作者:
lkc8210
时间:
2022-1-24 14:59
延时放错地方了
而且延时间太短了
void Delay1ms(u8 x) //@11.0592MHz
{
unsigned char i, j;
do
{
_nop_();
i = 2;
j = 199;
do
{
while (--j);
} while (--i);
}while(--x);
}
略。。。
void LedXun_huan()
{
u8 i;
Chosse573(4);
for(i=0;i<8;i++)
{
P0=~(0x01<<i);
Delay1ms(200);
}
}
略。。。
作者:
夜气辉
时间:
2022-1-24 18:09
lkc8210 发表于 2022-1-24 14:59
延时放错地方了
而且延时间太短了
好的,已解决,谢谢
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1