标题:
关于单片机按键控制动态数码管程序
[打印本页]
作者:
zhzh123456
时间:
2021-3-26 23:37
标题:
关于单片机按键控制动态数码管程序
各位大佬,为什么按下k3时候没有反应,如果把前面删了k3就可以正常使用,求大佬能指点一下使用芯片stc89c52
#include <REGX52.H>
sbit k1=P3^3;
sbit k2=P3^4;
sbit k3=P3^5;
unsigned char table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
void Delay(unsigned char x)
{
while(x--)
{
unsigned char i, j;
i = 2;
j = 239;
do
{
while (--j);
} while (--i);
}
}
void nixie (unsigned char wei,unsigned char num)
{
switch(wei)
{
case 1:P2_0=0;P2_1=1;P2_2=1;P2_3=1;
P0=table[num];
break;
case 2:P2_0=1;P2_1=0;P2_2=1;P2_3=1;
P0=table[num];
break;
case 3:P2_0=1;P2_1=1;P2_2=0;P2_3=1;
P0=table[num];
break;
case 4:P2_0=1;P2_1=1;P2_2=1;P2_3=0;
P0=table[num];
break;
}
}
void main()
{
while(1)
{
if(k1==0)
{
Delay(50);
if(k1==0)
{
nixie(1,6);
Delay(500);
nixie(2,6);
Delay(500);
nixie(3,6);
Delay(500);
nixie(4,6);
Delay(500);
}
}
if(k2==0)
{
nixie(1,8);
Delay(500);
nixie(2,8);
Delay(500);
nixie(3,8);
Delay(500);
nixie(4,8);
Delay(500);
}
while(k2==0);
}
if(k3==0)
{
Delay(50);
if(k3==0)
{
nixie(1,1);
Delay(5);
nixie(2,2);
Delay(5);
nixie(3,3);
Delay(5);
nixie(4,4);
Delay(5);
}
}
}
作者:
mengzhixinheng
时间:
2021-3-27 03:32
按键程序怎么样就不说了,关键是编译不过吧!
作者:
wulin
时间:
2021-3-27 06:30
楼主把代码花括号对对齐,你会发现k3已经在主循环while(1)之外成为弃儿了。
作者:
长风007
时间:
2022-3-4 10:00
楼主这个编程习惯还需要规范呀!把代码的对应括号对对齐,自己先运行一下,错误比较明显:k3在主循环while(1)之外。我想你的本意是K3与K1和K2是并行进程。
作者:
zhxiufan
时间:
2022-3-4 10:44
while(k2==0);
}
这两行去掉就可以了
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1