📄 5lqdq.c
字号:
/***********************************************************
实验名称:4路抢答器示例程序
程序说明:按键S6,S3,S1,S4,S2分别代表5路抢答器,抢答成功后,数码管显示相应的代号,并有声音提醒,每次抢答后要等约两秒钟的时间才能进行下一轮抢答。
作者:RF-X1开发板团队
日期:2008-07-26
***********************************************************/
#include <reg51.h>
#include <intrins.h>
#define uchar unsigned char
#define uint unsigned int
sbit K1 = P3^2; sbit K2 = P3^3; // K1对应S6 K2对应S3 K3对应S1 K4对应S4 K5对应S2
sbit K3 = P3^4; sbit K4 = P3^5;
sbit K5 = P3^6;
sbit BEEP = P3^7; //蜂鸣器控制端口P21
uchar temp;
void beep(); //蜂鸣器
void delay0(uchar x); //x*0.14MS
/******************************************/
/* 延时子程序 */
/******************************************/
void delay1(uchar x)
{ uchar j;
while((x--)!=0)
{ for(j=0;j<125;j++)
{;}
}
}
void delay(uint ms)
{
uchar t;
while(ms--)
{
for(t = 0; t < 120; t++);
}
}
void beep()
{
unsigned char i;
for (i=0;i<100;i++)
{
delay0(4);
BEEP=!BEEP; //BEEP取反
}
BEEP=1; //关闭蜂鸣器
delay1(250); //延时
}
void delay0(uchar x) //x*0.14MS
{
unsigned char i;
while(x--)
{
for (i = 0; i<13; i++) {}
}
}
/******************************************/
/* 主程序 */
/******************************************/
main()
{
P0 = 0xff;
P2 = 0xff;
while(1)
{
P0 = 0xc0; //显示“0”
P2 = 0xfe;
P3 = 0xff; //置P3.2-3.5为输入状态
_nop_();
temp = P3;
while(temp==0xff)
{
temp = P3;
temp=temp&0xff;
}
if(K1==0)
{ beep();
P0 = 0xf9; //显示”1“
delay(2000);
}
else if(K2==0)
{ beep();
P0 = 0xa4; //显示”2“
delay(2000);
}
else if(K3==0)
{ beep();
P0 = 0xb0; //显示“3”
delay(2000);
}
else if(K4==0)
{ beep();
P0 = 0x99; //显示“4”
delay(2000);
}
else if(K5==0)
{ beep();
P0 = 0x92; //显示"5"
delay(2000);
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -