📄 四路抢答器.c
字号:
#include<reg51.h>
sbit P2_0=P2^0;
sbit P2_2=P2^2;
unsigned char GroupNo;
unsigned char code Seg3code[5]={0x3f,0x06,0x5b,0x4f,0x66};//0到4的代码
void delay(void)//延迟1毫秒
{
unsigned char i;
for(i=0;i<250;i++);
}
void ShowGroup(unsigned char n)//显示出第几组
{
P1=Seg3code[n];
}
unsigned char KeySweep(void)//键盘扫描,获取组数
{
unsigned char temp,n=0;
if(P3!=0xff) //若有选手抢答
{
delay(); //延时消抖
if(P3!=0xff)
temp=~P3;
}
while(temp!=0)
{
temp=temp>>1;
n++;
}
return n; //返回组数
}
void timer0(void) interrupt 1
{
static unsigned j;
TH0=(65536-50000)/256;//装载计数初值
TL0=(65536-50000)%256;
j++;
if(j%20==0)
{
EA=0;
}
P2_0=~P2^0;
}
void Time0(void)//定时器0初始化
{
TMOD=(TMOD&0xF0)|0x01;//定时器0方式1
TH0=(65536-50000)/256;//装载计数初值
TL0=(65536-50000)%256;
ET0=1; //CPU开中断
TR0=1; //启动T/C0开始定时
}
void main()
{
Time0();
while(1)
{
P3=0xff;
ShowGroup(0);
while(P3==0xff);
GroupNo=KeySweep();//调用键盘扫描函数
ShowGroup(GroupNo);//调用显示函数
EA=1;//CPU开中断,进入中断程序
while(P2_2==1);//若主持人无按键按下
delay(); //延时消抖
while(P2_2==1);
EA=0;//CPU关中断
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -