四路抢答器程序.txt
来自「基于单片机控制的4路抢答器程序」· 文本 代码 · 共 54 行
TXT
54 行
#include<reg51.h>
#define uchar unsigned char
#define uint unsigned int
sbit P2_0=P2^0;//扬声器输出
sbit P2_2=P2^2;//主持人开关控制
uchar GroupNo;
uchar code Seg7code[9]={0x3f,0x06,0x5b,0x4f,0x66};//0到4的代码
void delay1ms(void)//延迟
{uchar i;
for(i=250;i>0;i--);
}
void ShowG(uchar no)//显示出第几个人按下按键
{P1=Seg7code[no];}
uchar KeySweep(void)//键盘扫描,获取组数
{uchar temp,no=0;
if(P3!=0x00)
{delay1ms();
if(P3!=0x00)
temp=P3;
}
while(temp!=0)
{temp=temp>>1;//扫描右移
no++;
}
return no;//返回第几个按键按下
}
void timer0_isr(void) interrupt 1//t0中断
{TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
P2_0=~P2_0;
}
void main()//主函数部分
{TMOD=0x02;//设置TMOD的工作方式 工作在定时器方式2
TH0=(65536-50000)/256;//预置计数初值
TL0=(65536-50000)%256;
ET0=1;
TR0=1;
while(1)
{P3=0x00;
ShowG(0);//没有按键按下时数码管显示0
while(P3==0x00);
GroupNo=KeySweep();//调用键盘扫描函数
ShowG(GroupNo);//调用显示函数
EA=1;//进入中断服务程序
while(P2_2==1);
delay1ms();
while(P2_2==1);//主持人开关清零
EA=0;
}
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?