📄 qiangda.c
字号:
#include<reg51.h>
unsigned char DATA_7seg[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};//两位时间段码
sbit start=P1^7; //抢答开始
sbit mode=P2^7; //模式选择——抢答-定
sbit add=P3^7; //调时
sbit beep=P0^7; //蜂鸣器
sbit k1=P0^0;
sbit k2=P0^1;
sbit k3=P0^2;
sbit k4=P0^3;
sbit k5=P0^4;
sbit k6=P0^5;
sbit k7=P0^6;
unsigned int time=10; //默认倒计时
unsigned int time_set=10;
void Timer();
/*******延时 n*1mS 程序********/
void Delay(unsigned int k)
{
unsigned int i,j;
for(i=0;i<k;i++)
{
for(j=0;j<0x60;j++)
{;}
}
}
/**************输入倒计时——时间**********************/
in_time()
{
while(1)
{
P3=0xbf;
P2=DATA_7seg[time/10];
P1=DATA_7seg[time%10];
if(add==0) //输入时间
{ Delay(8);
if(add==0)
{ time++;
time_set=time;
Delay(250); }
if(time==100)
{ time=0; }
}
if(start==0) break;
}
}
/************抢答选择**********/
void question(void)
{
while(1)
{
if(k1==0) { P3=0xf9; break; } //1 号
if(k2==0) { P3=0xa4; break; } //2 号
if(k3==0) { P3=0xb0; break; } //3 号
if(k4==0) { P3=0x99; break; } //4 号
if(k5==0) { P3=0x92; break; } //5 号
if(k6==0) { P3=0x82; break; } //6 号
if(k7==0) { P3=0xf8; break; } //7 号
P3=0xbf; P2=0xbf; P1=0xbf;
}
}
/*************************************************/
//倒计时
void Timer()
{
while(1)
{ P2=DATA_7seg[time/10];
P1=DATA_7seg[time%10];
--time;
Delay(1200); //延时大约一秒
if(time==0) {time=time_set; break; }
}
}
/***************主程序**************/
main()
{
while(start)
{
P3=0xbf;
P2=0xc0;
P1=0xc0;
Delay(50);
P2=0xff; P1=0xff;
Delay(50);
if(mode==0)
{
Delay(8);
if(mode==0) { in_time();}
}
}
Delay(350);
while(1)
{
P3=0xc0;
P2=0xbf;
P1=0xbf;
P0=0xff; //抢答器初始化
Delay(50);
P2=0xff; P1=0xff;
Delay(50);
if(start==0)
{
Delay(8);
if(start==0)
{
question(); // 抢答选择
Timer(); //进入倒计时
}
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -