抢答器使用说明.docx

上传人:b****5 文档编号:6476325 上传时间:2023-01-06 格式:DOCX 页数:23 大小:246.20KB
下载 相关 举报
抢答器使用说明.docx_第1页
第1页 / 共23页
抢答器使用说明.docx_第2页
第2页 / 共23页
抢答器使用说明.docx_第3页
第3页 / 共23页
抢答器使用说明.docx_第4页
第4页 / 共23页
抢答器使用说明.docx_第5页
第5页 / 共23页
点击查看更多>>
下载资源
资源描述

抢答器使用说明.docx

《抢答器使用说明.docx》由会员分享,可在线阅读,更多相关《抢答器使用说明.docx(23页珍藏版)》请在冰豆网上搜索。

抢答器使用说明.docx

抢答器使用说明

图中

1~8号按键选手按键

9:

复位键

10:

开始/重答键

11:

停止/确定键

12:

抢答时间调节键

13:

回答时间调节键

14:

时间调节、分数调节加一键

15:

时间调节、分数调节减一键

16:

分数查看/犯规处理/回答完毕

使用说明:

1、抢答、答题

在EEE状态(初始状态)下,按下键10,则开始进入抢答中,若无人抢答,当计时结束后跳回初始状态。

若有人抢答,则进入回答等待状态,当再次按下键10则开始计时,在计时没结束之前可以按下键10重新回答。

当计时结束或按下键16表示回答完毕,进入分数修改程序。

按键14/15修改分数后,再按键11返回。

2、查看分数

当数码管显示EEE状态时,点击键16会进入分数查看程序,初始时显示选手1的等分情况,每位选手初试分数为10分,当长按下各选手的抢答开关,就会显示对应选手的得分。

开关断开,又会回到初始状态,当按下键11即可恢复到EEE状态。

3、抢答犯规程序

当数码管显示EEE时,若有选手抢答则是违规的,数码将显示抢答位数,点击键16进入分数修改程序,按键14/15实现对分数的加减,修改完毕按键11,确定并退出。

4、抢答时间/回答时间修该

按下键12/13进入分数修改程序,按键14/15实现对分数的加减,修改完毕按键11,确定并退出。

5、复位

按下键9则复位单片机,清除一切数据。

程序:

OKEQU20H;抢答开始标志位

RINGEQU22H;响铃标志位

ORG0000H

AJMPMAIN

ORG0003H

AJMPQTIM0

ORG000BH

AJMPOVERR

ORG0013H

AJMPASKTIM0

ORG001BH

AJMPOVERT

ORG0040H

MAIN:

MOVR1,#20;初设抢答时间为20s

MOVR2,#60;初设答题时间为60s

MOV50H,#10

MOV51H,#10

MOV52H,#10

MOV53H,#10

MOV54H,#10

MOV55H,#10

MOV56H,#10

MOV57H,#10;初始化各选说分数为10分

MOVTMOD,#11H;设置定时器/不受外部中断控制/定时/模式1

MOVTH0,#0F0H

MOVTL0,#0FFH;越高发声频率越高,越尖

MOVTH1,#3CH

MOVTL1,#0B0H;50ms为一次溢出中断

SETBEA;CPU开中断

SETBET0

SETBET1

SETBEX0

SETBEX1;允许四个中断,T0/T1/INT0/INT1

CLROK

CLRRING

SETBTR1

SETBTR0;一开始就运行定时器,以开始显示EEE.如果想重新计数,重置TH1/TL1就可以了

;*****查询程序*****

START:

MOVR5,#0BH

MOVR4,#0BH

MOVR3,#0BH

ACALLXIANSHI;未开始抢答时候显示EEE

JNBP3.6,SCOCH

JBP3.0,NEX;如果"开始键"按下就向下执行,否者跳到非法抢答查询

ACALLBARK;按键发声

MOVA,R1

MOVR6,A;送R1->R6,因为R1中保存了抢答时间

SETBOK;抢答标志位,用于BACKT只程序中判断是否查询抢答

MOVR7,#01H;读抢答键数据信号标志,这里表示只读一次有用信号

MOVR3,#0AH;抢答只显示计时,灭号数

AJMPBACKT;进入倒计时程序,"查询有效抢答的程序"在BACKT里面

NEX:

AJMPNEXT

;*****分数查询******

STAR:

ACALLBARK

AJMPSTART

SCOCH:

ACALLBARK

AJMPSCOCHA

SCOCHA:

JNBP3.1,STAR

JNBP1.0,S1

JNBP1.1,S2

JNBP1.2,S3

JNBP1.3,S4

JNBP1.4,S5

JNBP1.5,S6

JNBP1.6,S7

JNBP1.7,S8

S1:

MOVR3,#01H

MOVA,50H

AJMPSS

S2:

MOVR3,#02H

MOVA,51H

AJMPSS

S3:

MOVR3,#03H

MOVA,52H

AJMPSS

S4:

MOVR3,#04H

MOVA,53H

AJMPSS

S5:

MOVR3,#05H

MOVA,54H

AJMPSS

S6:

MOVR3,#06H

MOVA,55H

AJMPSS

S7:

MOVR3,#07H

MOVA,56H

AJMPSS

S8:

MOVR3,#08H

MOVA,57H

AJMPSS

SS:

MOVB,#0AH

DIVAB

MOVR5,A

MOVR4,B

ACALLDELAY1

AJMPSCOCHA

NEXT:

MOVA,P1

MOV36H,A

JNBP1.0,FALSE1

JNBP1.1,FALSE2

JNBP1.2,FALSE3

JNBP1.3,FALSE4

JNBP1.4,FALSE5

JNBP1.5,FALSE6

JNBP1.6,FALSE7

JNBP1.7,FALSE8

AJMPSTART

;*****非法抢答处理程序*****

FALSE1:

MOVR3,#01H

AJMPERROR

FALSE2:

MOVR3,#02H

AJMPERROR

FALSE3:

MOVR3,#03H

AJMPERROR

FALSE4:

MOVR3,#04H

AJMPERROR

FALSE5:

MOVR3,#05H

AJMPERROR

FALSE6:

MOVR3,#06H

AJMPERROR

FALSE7:

MOVR3,#07H

AJMPERROR

FALSE8:

MOVR3,#08H

AJMPERROR

;*****抢答时间R1调整程序*****

QTIM0:

ACALLBARK

QTIME:

MOVA,R1

MOVB,#0AH

DIVAB

MOVR5,A

MOVR4,B

MOVR3,#0AH

ACALLXIANSHI;先在两个时间LED上显示R1

JNBP3.4,INC0;P3.4为+1s键,如按下跳到INCO

JNBP3.5,DEC0;P3.5为-1s键,如按下跳到DECO

JNBP3.1,BACK0;P3.1为确定键,如按下跳到BACKO

AJMPQTIME

INC0:

ACALLBARK

MOVA,R1

CJNEA,#63H,ADD0;如果不是99,R2加1,如果加到99,R1就置0,重新加起。

MOVR1,#00H

ACALLDELAY1

AJMPQTIME

ADD0:

ACALLBARK

INCR1

ACALLDELAY1

AJMPQTIME

DEC0:

ACALLBARK

MOVA,R1

JZSETR1;如果R1为0,R1就置99,

DECR1

ACALLDELAY1

AJMPQTIME

SETR1:

ACALLBARK

MOVR1,#63H

ACALLDELAY1

AJMPQTIME

BACK0:

RETI

;*****回答时间R2调整程序*****

ASKTIM0:

CLROK

CLRRING

ACALLBARK

ASKTIME:

MOVA,R2

MOVB,#0AH

DIVAB

MOVR5,A

MOVR4,B

MOVR3,#0AH

ACALLXIANSHI

JNBP3.4,INC1

JNBP3.5,DEC1

JNBP3.1,BACK1

AJMPASKTIME

INC1:

ACALLBARK

MOVA,R2

CJNEA,#63H,ADD1

MOVR2,#00H

ACALLDELAY1

AJMPASKTIME

ADD1:

INCR2

ACALLDELAY1

AJMPASKTIME

DEC1:

ACALLBARK

MOVA,R2

JZSETR2

DECR2

ACALLDELAY1

AJMPASKTIME

SETR2:

MOVR2,#63H

ACALLDELAY1

AJMPASKTIME

BACK1:

RETI

;*********分数修改********

SCORES:

MOVA,R7

MOVB,#0AH

DIVAB

MOVR5,A

MOVR4,B

ACALLXIANSHI

JNBP3.4,INC2

JNBP3.5,DEC2

JNBP3.1,BACK2

AJMPSCORES

INC2:

ACALLBARK

MOVA,R7

CJNEA,#63H,ADD2

MOVR7,#00H

ACALLDELAY1

AJMPSCORES

ADD2:

INCR7

ACALLDELAY1

AJMPSCORES

DEC2:

ACALLBARK

MOVA,R7

JZSETR3;若A为零转SETR2

DECR7

ACALLDELAY1

AJMPSCORES

SETR3:

MOVR7,#63H

ACALLDELAY1

AJMPSCORES

BACK2:

RET

;*****抢答倒计时和回答倒计时程序*****

REASK:

MOVA,R2;重答重新计时

MOVR6,A

CLRRING

BACKT:

MOVR0,#00H;重置定时器中断次数

MOVTH1,#3CH

MOVTL1,#0B0H;重置定时器

BACKTIM:

MOVA,R6;R6保存了倒计时的时间,之前先将抢答时间或回答时间给R6

MOVB,#0AH

DIVAB;除十分出个位/十位

MOV30H,A;十位存于(30H)

MOV31H,B;个位存于(31H)

MOVR5,30H;取十位

MOVR4,31H;取个位

MOVA,R6

SUBBA,#07H;(A)-CY-#07H-->A

JNCLARGER;大于5s跳到LARGER,小于等于5s会提醒

MOVA,R0

CJNEA,#0AH,FULL;1s中0.5s向下运行

CLRRING

AJMPCHECK

FULL:

CJNEA,#14H,CHECK;下面是1s的情况,响并显示号数并清R0,重新计

SETBRING

MOVA,R6

JZTUICH00;计时完毕

MOVR0,#00H

DECR6;一秒标志减1

AJMPCHECK

LARGER:

MOVA,R0

CJNEA,#14H,CHECK;如果1s向下运行,否者跳到查"停/显示"

DECR6;计时一秒R6自动减1

MOVR0,#00H

CHECK:

JNBOK,AGAIN;只在回答倒计时才有效

JNBP3.1,TUICHU;如按下停止键退出

AJMPNEXTT

AGAIN:

JNBP3.0,REASK;判断是否重新答题

JNBP3.6,TUICH00;是否预先结束

NEXTT:

ACALLXIANSHI

JBOK,FIND;如果是抢答倒计时,如是则查询抢答,否者跳过查询继续倒数(这里起到锁抢答作用)

AJMPBACKTIM

TUICH00:

JBOK,TUICHU;判断退出时是否在抢答中

AJMPTUICHU0

FIND:

MOVA,36H

JNBACC.0,TRUE1

JNBACC.1,TRUE2

JNBACC.2,TRUE3

JNBACC.3,TRUE4

JNBACC.4,TRUE5

JNBACC.5,TRUE6

JNBACC.6,TRUE7

JNBACC.7,TR8

AJMPBACKTIM

TR8:

AJMPTRUE8

TUICHU:

CLROK;如果按下了"停止键"执行的程序

CLRRING

ACALLBARK

SETBP2.7;指示灯熄灭

AJMPSTART

;*****正常抢答处理程序*****

TRUE1:

ACALLBARK

MOVA,R2

MOVR6,A;答题时间R2送R6

MOVR3,#01H

CLRP2.4

CLRP2.5

CLRP2.6;显示抢答结果

AJMPTRUEE

TRUE2:

ACALLBARK

MOVA,R2

MOVR6,A

MOVR3,#02H

SETBP2.4

CLRP2.5

CLRP2.6

AJMPTRUEE

TRUE3:

ACALLBARK

MOVA,R2

MOVR6,A

MOVR3,#03H

CLRP2.4

SETBP2.5

CLRP2.6

AJMPTRUEE

TRUE4:

ACALLBARK

MOVA,R2

MOVR6,A

MOVR3,#04H

SETBP2.4

SETBP2.5

CLRP2.6

AJMPTRUEE

TRUE5:

ACALLBARK

MOVA,R2

MOVR6,A

MOVR3,#05H

CLRP2.4

CLRP2.5

SETBP2.6

AJMPTRUEE

TRUE6:

ACALLBARK

MOVA,R2

MOVR6,A

MOVR3,#06H

SETBP2.4

CLRP2.5

SETBP2.6

AJMPTRUEE

TRUE7:

ACALLBARK

MOVA,R2

MOVR6,A

MOVR3,#07H

CLRP2.4

SETBP2.5

SETBP2.6

AJMPTRUEE

TRUE8:

ACALLBARK

MOVA,R2

MOVR6,A

MOVR3,#08H

SETBP2.4

SETBP2.5

SETBP2.6

AJMPTRUEE

TRUEE:

CLRP2.7;启动74138

CLROK;封锁抢答

ASK:

MOVA,R6;R6保存了倒计时的时间,之前先将抢答时间或回答时间给R6

MOVB,#0AH

DIVAB;除十分出个位/十位

MOV30H,A;十位存于(30H)

MOV31H,B;个位存于(31H)

MOVR5,30H;取十位

MOVR4,31H

ACALLXIANSHI

JBP3.0,ASK;等待开始答题指令

ACALLBARK

AJMPBACKT

;*****选择分数修改位*****

TUICHU0:

CLROK

CLRRING

MOVA,36H

JNBACC.0,SCO1

JNBACC.1,SCO2

JNBACC.2,SCO3

JNBACC.3,SCO4

JNBACC.4,SCO5

JNBACC.5,SCO6

JNBACC.6,SCO7

JNBACC.7,SC8

SC8:

AJMPSCO8

TUICHUU:

SETBP2.7;指示灯熄灭

AJMPSTART

SCO1:

ACALLBARK

MOVR7,50H

MOVR3,#01H

ACALLSCORES

MOV50H,R7

AJMPTUICHUU

SCO2:

ACALLBARK

MOVR7,51H

MOVR3,#02H

ACALLSCORES

MOV51H,R7

AJMPTUICHUU

SCO3:

ACALLBARK

MOVR7,52H

MOVR3,#03H

ACALLSCORES

MOV52H,R7

AJMPTUICHUU

SCO4:

ACALLBARK

MOVR7,53H

MOVR3,#04H

ACALLSCORES

MOV53H,R7

AJMPTUICHUU

SCO5:

ACALLBARK

MOVR7,54H

MOVR3,#05H

ACALLSCORES

MOV54H,R7

AJMPTUICHUU

SCO6:

ACALLBARK

MOVR7,55H

MOVR3,#06H

ACALLSCORES

MOV55H,R7

AJMPTUICHUU

SCO7:

ACALLBARK

MOVR7,56H

MOVR3,#07H

ACALLSCORES

MOV56H,R7

AJMPTUICHUU

SCO8:

ACALLBARK

MOVR7,57H

MOVR3,#08H

ACALLSCORES

MOV57H,R7

AJMPTUICHUU

;*****抢答犯规程序*****

ERROR:

MOVR0,#00H

MOVTH1,#3CH

MOVTL1,#0B0H

MOV34H,R3;犯规号数暂存与(34H)

HERE:

MOVA,R0

CJNEA,#06H,FLASH;0.3s向下运行->灭并停响

CLRRING

MOVR3,#0AH

MOVR4,#0AH

MOVR5,#0AH;三灯全灭

AJMPCHECK1

FLASH:

CJNEA,#0CH,CHECK1;下面是0.8s的情况,响并显示号数并清R0,重新计

SETBRING

MOVR0,#00H

MOVR3,34H;取回号数

MOVR5,#0BH

MOVR4,#0BH;显示EE和号数

AJMPCHECK1

CHECK1:

JNBP3.6,TUICHU1;处理犯规

JNBP3.1,STOP;退出犯规处理

ACALLXIANSHI

AJMPHERE

TUICHU1:

CLRRING

CLROK

AJMPTUICHU0

STOP:

AJMPTUICHU

;*****显示程序*****

XIANSHI:

MOVDPTR,#DAT1;查表显示程序,利用P0口做段选码口输出/P2低三位做位选码输出,

MOVA,R3

MOVCA,@A+DPTR

SETBP2.2

CLRP2.0

MOVP0,A

ACALLDELAY2

MOVDPTR,#DAT2

MOVA,R5

MOVCA,@A+DPTR

SETBP2.0

CLRP2.1

MOVP0,A

ACALLDELAY2

MOVA,R4

MOVCA,@A+DPTR

SETBP2.1

CLRP2.2

MOVP0,A

ACALLDELAY2

RET

DAT1:

DB00H,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,00H,79H

;"灭","1","2","3","4","5","6","7","8","9","灭","E"

DAT2:

DB3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,00H,79H

;第一个为零,其他与上相同,因为十位如果为零显示熄灭

;****加减时间延时******

DELAY1:

MOV35H,#08H

LOOP0:

ACALLXIANSHI

DJNZ35H,LOOP0

RET

;*****延时去抖动用到*****

DELAY:

MOV32H,#10H

LOOP:

MOV33H,#0AFH

LOOP1:

DJNZ33H,LOOP1

DJNZ32H,LOOP

RET

;*****延时用于显示*****

DELAY2:

MOV32H,#43H

LOOP3:

MOV33H,#1EH

MOVA,R7;每隔60~70个机器周期读一次P1口,全为1时为无效数据,继续读,有一个不为1时,转到正常抢答处理

JNZREAD0;没读到有效数据时继续转到READ0

LOOP2:

DJNZ33H,LOOP2

DJNZ32H,LOOP3

RET

;*****读抢答按键数据口程序*****

;由于在读抢答数据口的时候,单片机首先进入倒计时程序,再调用显示程序,最后才检测按键口

;然而在检测按键口时动态扫描要调用三次延时程序.这样就会导致读数据口出现滞后,造成1号优先最高.8号最低.

;故采用在延时子程序中加了读数据口程序.保证了灵敏度和可靠性

READ0:

MOVA,P1

CJNEA,#0FFH,AA1;当不全为1时的数据为有效数据

AA0:

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > PPT模板 > 其它模板

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1