求教:为什么这个关于独立按键的程序只能执行一个按键的功能,我明明写了两个按键的执行程序
怎么才能让着两个按键执行程序?而不是再开关一次电源。
# include "reg52.h"
# define u16 unsigned int
typedef unsigned char u8;
sbit k1 = P3^1; // 位定义 k1
sbit k2 = P3^0; // 位定义 k2
sbit beep = P1^5; // 定义P1^5为蜂鸣器
sbit a = P2^2; //
sbit b = P2^3;
sbit c = P2^4;
u8 h,m;
u8 code n[]={0x7b,0x3e,0x3f,0x38}; // 显示L o v e
# define smg P0 // 宏定义 led
void delay(u16 i) // 延时函数
{
while (i--);
}
void key1() // 独立按键k1控制数码管动态显示
{
if (k1)
{
delay(1000);
if (k1 == 0)
{
while (1)
{
for(h=0;h<=7;h+=2)
{
switch (h) // 位选,选择点亮的数码管,
{
case 0: a=0;b=0;c=0;break; //显示第0位
case 2: a=0;b=1;c=0;break; // 2
case 4: a=0;b=0;c=1;break; // 4
case 6: a=0;b=1;c=1;break; // 6
}
m=h/2;
smg=n[m]; // 发送段码
delay(100);
}
}
}
while (!k1);
}
}
void key2() // 独立按键k2控制蜂鸣器
{
if (k2 == 0)
{
delay(1000);
if (k2 == 0)
{
while (1)
{
beep=~beep;
delay(500);
}
}
while (!k2);
}
}
void main()
{
while (1)
{
key1();
key2();
}
}
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
在while (!k2);之后,加一个关闭蜂鸣器的语句,比如高电平关闭蜂鸣器,则加一个beep=1;
一周热门 更多>