⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 四路抢答器.c

📁 四路抢答器 单片机开发 可以四人一起抢答 功能强大
💻 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 + -