nieshuli 2019-06-11 22:23
浏览 474

普中科技的51开发版00课程设计 抢答器

得不出结果
#include#define uchar unsigned char #define uint unsigned int uchar num=0; //定义中断变量,num计满20表示1秒时间到 uchar num1; //十秒倒计时显示初始值 uchar flag1,flag2; //清零键及开始键按下标志位 uchar flag3,flag4; //定义键盘按下标志位 uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; //数码管编码sbit LSA=P2^2;sbit LSB=P2^3;sbit LSC=P2^4;sbit sp=P1^5; //定义蜂鸣器端口 sbit start=P3^0; sbit clear=P3^1;sbit key3=P3^2;sbit key4=P3^3; //key1到key4为选手按键 void delay1(uint i){ while(i--); }void delay(uint z) { uint i,j; for(i=z;i>0;i--) for(j=110;j>0;j--); } void beep() { sp=~sp;delay1(10); //延时大约100us 通过修改此延时时间达到不同的发声效果}void display(uint i) { while(1){ LSA=0; LSB=0; LSC=0; P0=table[i]; delay(5); P0=0x00; }}void clr() //清零函数(主持人按下清零键后数码管显示0){ LSA=0; LSB=0; LSC=0; P0=table[0]; delay(5); LSA=1; LSB=1; LSC=1; P0=table[0]; delay(5); LSA=0; LSB=1; LSC=1; P0=table[0]; delay(5);}void dis30s() //十秒倒计时显示函数{ uchar shi,ge; shi=num1/30; ge=num1%30; while(1) { LSA=1; LSB=1; LSC=1; P0=table[shi]; delay(5); LSA=0; LSB=1; LSC=1; P0=table[ge]; delay(5); }}void player() //选手按键检测函数{ if(key3==0&&flag4==0) { delay(10); if(key3==0&&flag4==0) { display(3); TR0=0; flag1=flag2=0; flag4=1; beep(); while(!key3); } } if(key4==0&&flag4==0) { delay(10); if(key4==0&&flag4==0) { display(4); TR0=0; flag1=flag2=0; flag4=1; beep(); while(!key4); } }}void keyscan() //检测按键{ P3=P3|0x0f; if(clear==0&&flag2==0) //判断清零键,判断语句的作用是按下开始键清零键失效 { delay(10); if(clear==0&&flag2==0) { flag1=0; flag2=0; flag3=0; flag4=0; num=0; num1=10; clr(); //清零 flag1=1; //按下清零键标志位 } while(!clear); } if(flag1==1) //如果按下清零键 { if(start==0&&flag3==0) //判断开始键,判断语句的作用是按下开始键后开始键失效 { delay(10); if(start==0&&flag3==0) { flag2=1; flag3=1; while(!start); } } } if(flag2==1) //按下开始键 { TR0=1; //启动定时器0 dis30s(); player(); }}void main(){ TMOD=0X01;//选择为定时器0模式,工作方式1,仅用TR0打开启动。 TH0=(65536-50000)/256; TL0=(65536-50000)%256; ET0=1;//打开定时器0中断允许 EA=1;//打开总中断 while(1) //一直检测按键 { keyscan(); }}void T0_ser() interrupt 1{ TH0=(65536-50000)/256; TL0=(65536-50000)%256; num++; if(num==20) { num=0; num1--; } if(num1==0) { TR0=0; flag1=0; flag2=0; num=0; num1=30; clr(); beep(); }}

  • 写回答

0条回答 默认 最新

    报告相同问题?

    悬赏问题

    • ¥15 求差集那个函数有问题,有无佬可以解决
    • ¥15 MATLAB动图问题
    • ¥15 【提问】基于Invest的水源涵养
    • ¥20 微信网友居然可以通过vx号找到我绑的手机号
    • ¥15 寻一个支付宝扫码远程授权登录的软件助手app
    • ¥15 解riccati方程组
    • ¥15 display:none;样式在嵌套结构中的已设置了display样式的元素上不起作用?
    • ¥15 使用rabbitMQ 消息队列作为url源进行多线程爬取时,总有几个url没有处理的问题。
    • ¥15 Ubuntu在安装序列比对软件STAR时出现报错如何解决
    • ¥50 树莓派安卓APK系统签名