利用51中断系统设计一个三人抢答器,求程序

作者&投稿:令湛 (若有异议请与网页底部的电邮联系)
求MCS-51中断系统设计1个4人抢答器软件设计流程图!程序如下~

这个简单,
开始
中断初始化
显示初始化
MAIN:将20H地址内容送显示
跳转MAIN


进入中段服务程序
判断P0.7(写按键名字)是否按下? 是 跳转DIV1

判断P0.6(写按键名字)是否按下? 是 跳转DIV2

判断P0.5(写按键名字)是否按下? 是 跳转DIV3

判断P0.4(写按键名字)是否按下? 是 跳转DIV4

关中断
中断程序返回
DIV1:将1送P1口显示
跳转 MAIN
DIV2:将2送P1口显示
跳转 MAIN
DIV3:将3送P1口显示
跳转 MAIN
DIV4:将4送P1口显示
跳转 MAIN

;;;;开始!
ORG 00H
JMP START
ORG 0BH
JMP TIMER
START:Mov TMOD,#01H
Mov TH0,#0BDH
Mov TL0,#0C0H
Mov IE,#82H
Mov 20H,#10
Mov 21H,#10
Mov R7,#10
CLR TR0
A4: JNB P1.0,B0_0
;;;跳转
JNB P1.1,B1_1
JNB P1.2,B2_2
JNB P1.3,B3_3
JNB P1.4,B4_4
JNB P1.5,B5_5
JNB P1.6,B6_6
JNB P1.7,B7_7
B0_0:AJMP B0
B1_1:AJMP B1
B2_2:AJMP B2
B3_3:AJMP B3
B4_4:AJMP B4
B5_5:AJMP B5
B6_6:AJMP B6
B7_7:AJMP B7
Mov p2,#10H
CALL DELAY
ANL P2,#00H
Mov P2,#20H
CALL DELAY
ORL P2,#00H
JB P3.0,A4
SETB TR0
A1: Mov A,20H
Mov DPTR,#TABLE
Movc A,@A+DPTR
ADD A,#10H
Mov P2,A
CALL DELAY
ANL P2,#00H
Mov A,21H
Mov DPTR,#TABLE
Movc A,@A+DPTR
ADD A,#20H
Mov P2,A
CALL DELAY
ANL P2,#00H
Mov A,#01H
CJNE A,21H,A1
Mov A,#01
CJNE A,20H,A1
JMP START
TIMER:DJNZ R7,A2
Mov TH0,#0BDH
Mov TL0,#0C0H
Mov R7,#16
DJNZ 20H,A2
Mov 20H,#10
DJNZ 21H,A2
MOV 21H,#10
A2: RETI
B0:MOV P2,#11H
ACALL DELAY
AJMP A4
B1:MOV P2,#12H
ACALL DELAY
AJMP A4
B2:MOV P2,#13H
ACALL DELAY
AJMP A4
B3:MOV P2,#14H
ACALL DELAY
AJMP A4
B4:MOV P2,#15H
LCALL DELAY
LJMP A4
B5:MOV P2,#16H
ACALL DELAY
AJMP A4
B6:MOVX P2,#17H
LCALL DELAY
LJMP A4
B7:MOV P2,#18H
;ACALL DELAY
;ALJMP A4
DELAY:MOV R6,#248
DJNZ R6,$
RET
;;;按键用
TABLE:DB 00H,00H,01H,02H,03H,04H
DB 05H,06H,07H,08H,09H
END

#include<reg51.h>

//
void forled()
//数码管驱动程序
{

}
void forsound()
{

}
//
void debouncer( uchar ms)
{
//这个是延时函数
}
void init_timer()
{
//定时器初始化
}
void init_ser()
{
//串口初始化如果你需要跟电脑通信就写
}
void main()
{
while(1)
{
if(P0!=0xff) //这里只是给你一个思路 也可以是其他的条件来判断
//如果有人按键想应的位变成0
{
if( fg )
//自己设置一个变量来判断是否犯规
forsound(fg);
else
{
forsound(fg);
forled();//显示几号台强大成功和当前的分数 你可以把选手的的分数保存在数组里面
}
}
}
}
void timer0() interrupt 1
{
//这里来计时
forled();//来显示计时时间
}

有具体点的设计要求或者设计任务书吗?


51单片机的中断系统由什么寄存器组成
该系统是由中断允许寄存器、中断优先级寄存器组成的。1、中断允许寄存器(IE):用于控制对应位的中断是否允许。EA位为总中断允许位,ET1、EX1、ET0、EX0分别为定时器\/计数器T1、T0的中断允许位。2、中断优先级寄存器(IP):用于设置中断优先级。PS位为串口中断优先级选择位,PT1位为定时器\/计数器T1...

MCS-51系列单片机的中断系统分为几个优先级?如何设定?
优先级设定方法:1、IP的状态由软件设定,某位设定为“1”,则相应的中断源为高优先级中断;某位设定为“0”,则相应的中断源为低优先级中断。2、同一优先级中的中断申请不止一个时,则有中断优先权排队问题。3、同一优先级的中断优先权排队,由中断系统硬件确定的自然优先级形成,其排列从高到低为...

51单片机中断系统的组成:
详情请查看视频回答

51单片机的中断系统有哪些源?
51的中断系统有5个中断源,中断系统的结构及级别如下:与中断系统相关的特殊寄存器:中断寄存器就是用于存贮中断状态的,包含是否启用中断或者是否发生中断。1)中断允许控制寄存器(IE)--- 控制各中断的开放和屏蔽 2)中断优先级控制寄存器(IP)---设置各中断的优先级 3)定时器\/计数器控制寄存器(TCON...

MCS-51系列单片机中断系统提供哪几种中断?什么是中断优先级,中断嵌套...
【答案】:(1)MCS-51系列单片机中断系统提供了5-6个中断源,分别是:外部中断0(\/INT0)(IE0)、定时器\/计数器0(TF0)、外部中断1(\/INT1)(IE1)、定时器\/计数器1(TF1)、串行口(TI或RI)、定时器\/计数器2(TF2或EXF2)。(2)为使系统能及时响应并处理发生的所有中断,系统根据引起中断事件的重要...

单片机中,比如51单片机有五个中断源,两个外部中断源,两个定时器中断源...
MCS-51单片机中断系统的结构:5个中断源的符号、名称及产生的条件如下。INT0:外部中断0,由P3.2端口线引入,低电平或下跳沿引起。INT1:外部中断1,由P3.3端口线引入,低电平或下跳沿引起。T0:定时器/计数器0中断,由T0计满回零引起。T1:定时器/计数器l中断,由T1计满回零引起。TI/RI...

51单片机中断系统的作用?
说直白点就是cpu处理事件的过程时,有了突发事件需要其去处理。这时cpu会自动保存当前程序进程,然后去处理突发事件,突发事件处理完后再回到刚才程序停止的位置继续执行主程序。图片说明:

MCS-51单片机的中断系统的处理过程是什么?
从本质上说,每一个中断都一个专门的寄存器,即中端标志寄存器。当中断寄存器的值为1时,会向cpu发送中断请求。但是响不响应是根据 ie寄存器里的位所决定的。总的来说,mcs-51的硬件里有好几个寄存器是专门负责中断的。

51单片机中断系统与F2812中断系统有和异同
功能不同。1、51单片机系统由外部中断源产生的,具有预测和随机性,F2812中断系统只有生产是的数据来维持的。2、51单片机为辅助程序服务,F2812主要为主程序服务。

51单片机中断系统IE控制寄存器里面的开关是受CPU控制,还是受它自己控制...
就是IE的每一位,教材上为了表示中断系统的控制过程,画成了开关,这样表示是为了更直观,但并非真是开关。其实,这些开关,就是写程序时所写的那些中断允许位。如 EA=1;这就是打开了中断的总开关 ET0=1;这是打开了定时器T0的中断开关 总结,中断允许位是用程序来打开的,准确说是数字开关。

新郑市19132232335: 利用51中断系统设计一个三人抢答器,求程序 -
夫哪康立: #include<reg51.h>// void forled()//数码管驱动程序 { } void forsound() { }// void debouncer( uchar ms) { //这个是延时函数 } void init_timer() { //定时器初始化 } void init_ser() { //串口初始化如果你需要跟电脑通信就写 } void main() { while(1) { if(...

新郑市19132232335: 用单片机80C51编程的3人抢答器 -
夫哪康立: p3.0 按键1 0时表示按下 p3.1 按键2 p3.2 按键3 FLAG BIT 00H ORG 00H MOV SP,#80H MAIN: MOV 30H,#0 ; =1 表示1号抢到 =2 2号... loop: lcall keyd JNB FLAG,loop CJNE A,30H,XX ;;自己编写代码 此时30H代表谁抢到了 sjmp loop keyd: ...

新郑市19132232335: 用一个51单片机最小系统扩展智能抢答器所需的元器件有哪些?哪位学哥学姐帮忙回答一下,谢谢了! -
夫哪康立: 我感觉要有弹性按键 发光二极管 蜂鸣器 每一个弹性按键对应一个二极管 这些就够用了 主要是程序你要写好 当一个按键按下去对应一个灯亮 让后蜂鸣器发声 这时候程序应停在这里 别的按键在按下去的时候保证别的灯不亮 然后弄一个复位按键就行了 当然电阻和三极管是必不可少的

新郑市19132232335: 求51单片机的控制的八路抢答器的程序 -
夫哪康立: OK EQU 20H;抢答开始标志位RING EQU 22H;响铃标志位ORG 0000HAJMP MAINORG 0003HAJMP INT0SUBORG 000BHAJMP T0INTORG 0013HAJMP INT1SUBORG 001BHAJMP T1INTORG 0040H MAIN: MOV R1,#0FH...

新郑市19132232335: 请各路大师教我怎么用AT89C51做抢答器,最好是用C语言写的程序.我急急急,拜托好心人了 -
夫哪康立: 这是我这里的抢答器,你可以对照着看看#include<reg51.h> sbit key1=P3^0;//定义按键位置 需要切换到独立按键模式 sbit key2=P3^1; sbit key3=P3^2; sbit key4=P3^3;/******************************************************************//* 主函数 *//*******...

新郑市19132232335: 用单片机AT89C51设计十路智力竞赛抢答器怎么设计 -
夫哪康立: P1口按键输入,P0口输出LED8段数码管. 用switch 处理P1口的数据,看是否有键按下,如果有键按下,则进入switch处理函数,看是什么键码,对应键码控制P0口输出对应的数字.最后再来一个while按键释放程序.搞定~!因为你需要用10路,但是P1口直接连接的话只有8路,还有2路接不到.所以在输入给P1前,需要加上一个编码器,可以用74LS148或者74HC148优先编码器,8路的输入经过编码器3路输出给P1口,剩下2路直接与P1口闲置的IO口相连,这样就按键输入OK了

新郑市19132232335: 用51单片机做抢答器需要买什么东西 -
夫哪康立: 扬声器,单片机最小系统,三级管,以及抢答的按钮,电线若干

新郑市19132232335: PLC程序设计:三人的抢答器.第一个人抢到了之后回答,回答错误直接由第二个人继续回答,以此类推. -
夫哪康立: 说的太笼统,你要的是设计思路还是具体的程序?要是要程序你是用什么plc,不同的品牌或者型号对指令都有不同.. 不过你只要记住在三者按下开关后,有互锁..就容易做了 先A数字量输入(常开),B的常闭,C的常闭,三者串联再加一个A的线圈 B的数字量输入(常开),A的常闭,C的常闭,三者串联再加一个B的线圈 C的数字量输入(常开),B的常闭,A的常闭,三者串联再加一个C的线圈 ...公司电脑没有编程软件..就随便写写.三个人每一个人一个定时器,从他们分别按下时,开始计时,当其中第一人回答错误的时候就让另外两个定时器同时停止计时,比较大小,如果怕时间不够的话 利用定时器计数器做个长时间的计时...

新郑市19132232335: 基于单片机52八路抢答器编程 -
夫哪康立: #include<reg51.h> #define uchar unsigned char uchar table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f}; sbit rstkey=P3^7; main() { uchar i,key;while(1){P2=0xff;i=0;P0=table[i];while(1){key=P1;if(key!=0xff)break;}switch(~key){...

新郑市19132232335: 单片机课程设计——电子抢答器设计 要求:选择51单片机,晶振12MHZ;电子抢答器可供8名选手参赛;
夫哪康立: <p></p> <p> ORG 0000H</p> <p> JMP BEGIN </p> <p> ORG 0030H </p> <p>TABLE: ; 共阴极数码管显示代码表 </p> <p> DB 3FH,06H,5BH,4FH,66H ;12345 </p> <p> DB 6DH,7DH,07H,7FH ;6789 </p> <p>DELAY: MOV R5,#20 </p> <p>...

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网