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

📄 kechengsheji.c

📁 基于C-51做的抢答器设计
💻 C
字号:
//五人抢答系统:
//当主持人按下开始(P2.2)时,
//五个发光二极管(P1.0~P1.4)跑马闪亮
//当有一个人按下抢答开关(P0.0~P0.4),
//他的灯亮,同时蜂鸣(P2.1) 
//主持人控制场面,按下开关(P3.3),让灯灭,蜂鸣停止,准备下一轮
#include <reg51.h>
sbit P20=P2^0;
sbit P21=P2^1;
sbit P22=P2^2;
sbit P23=P2^3;//跑马灯锁存器
unsigned char a=1,b=0; //全局变量,控制跑马退出

void cut(void) interrupt 0	//中断
{
	EA=0;
	P20=1;//关锁存器
	ACC=P0;	//读取结果
	ACC|=0x1f;
	P1=ACC;//抢答灯亮
	P23=0;//关灯锁存
	b=1;
	EA=1;
}

void restart(void) interrupt 2
{
	 a=0;//正常结束
	if(b==0)//非正常结束
	b=1;
}

void delay(int a)//延时程序
{	 int i;
	 while(--a!=0)
	 {
	  	for(i=0;i<125;i++);
	 }
}

void beep( )
{	int a,b;
	for(a=300;a>0;a--)
	{ P21=~P21;
	 for(b=100;b>0;b--);}
}

main()
{	char i=0;
		while(1)
	{
	IT0=1;IT1=1;
	EX0=1;EX1=1;
	EA=1;
	P22=1;P21=0;P20=0;a=1;P23=1;
	while(P22);//等待开始
	while(!P22);//dengdaisongkai anjian
	while(a) //跑马灯闪
		{
		P1=0xfe;
		for(i=0;i<5;i++)
		 {delay(200);	//延时200ms
		  if(b) break; 
		  P1<<=1;  //此处可能会有漏洞,三种方法可能会解决:1对跑马灯加锁存器,并由中断管理 2简化程序
		 }		   // 3 汇编语言   4在中断中加入延时程序 (1月11日再次修改,用方法1)
	    if(b)
		 {beep( );//蜂鸣器响
		  while(a);
		  while(!a);
		  }//等待跳出循环,重新开始
		}
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -