六路抢答器KT配套实验_第1页
六路抢答器KT配套实验_第2页
六路抢答器KT配套实验_第3页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

六路抢答器(KT230配套实验)1、如果想调节抢答时间或答题时间,按"抢答时间调节"键或"答题时间调节"键进入调节状态,此时会显示现在设定的抢答时间或回答时间值,如想加一秒按一下"加1s"键,如果想减一秒按一下"-1s"键,时间LED上会显示改变后的时间,调整范围为0s~99s,0s时再减1s会跳到99,99s时再加1s会变到0s。

2、主持人按"抢答开始"键,会有提示音,并立刻进入抢答倒计时(预设15s抢答时间),如有选手抢答,会有提示音,并会显示其号数并立刻进入回答倒计时(预设10s抢答时间),不进行抢答查询,所以只有第一个按抢答的选手有效。倒数时间到小于5s会每秒响一下提示音。

3、如倒计时期间,主持人想停止倒计时可以随时按"停止"按键,系统会自动进入准备状态,等待主持人按"抢答开始"进入下次抢答计时。

4、如果主持人未按"抢答开始"键,而有人按了抢答按键,犯规抢答,LED上不断闪烁FF和犯规号数并响个不停,直到按下"停止"键为止。P1.0为开始抢答,P1.7为停止,p1.1-p1.6为六路抢答输入数码管段选P0口,位选P2口,蜂鸣器输出为P3.6口。RINGEQU22H;响铃标志位ORG0000HAJMPMAINORG0003HAJMPINT0SUBORG000BHAJMPT0INTORG0013HAJMPINT1SUBORG001BHAJMPT1INTORG0040HMAIN:

MOVR1,#0FH;初设抢答时间为15s

MOVR2,#0AH;初设答题时间为10s

MOVTMOD,#11H;设置未定时器/模式1

MOVTH0,#0F0H

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

MOVTH1,#3CH

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

SETBEA

SETBET0

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

CLROKCLRRING

SETBTR1

SETBTR0;一开始就运行定时器,以开始显示FFF.如果想重新计数,重置TH1/TL1就可以了;=====查询程序=====START:

MOVR5,#0BH

MOVR4,#0BH

MOVR3,#0BHACALLDISPLAY;未开始抢答时候显示FFF

JBP1.0,NEXT;ddddddd

ACALLDELAY

JBP1.0,NEXT;去抖动,如果"开始键"按下就向下执行,否者跳到非法抢答查询

ACALLBARK;按键发声

MOVA,R1

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

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

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

AJMPCOUNT;进入倒计时程序,"查询有效抢答的程序"在COUNT里面NEXT:

JNBP1.1,FALSE1

JNBP1.2,FALSE2

JNBP1.3,FALSE3

JNBP1.4,FALSE4

JNBP1.5,FALSE5

JNBP1.6,FALSE6

AJMPSTART;=====非法抢答处理程序=====FALSE1:ACALLBARK;按键发声MOVR3,#01H

AJMPERRORFALSE2:ACALLBARKMOVR3,#02H

AJMPERRORFALSE3:ACALLBARKMOVR3,#03H

AJMPERRORFALSE4:ACALLBARKMOVR3,#04H

AJMPERRORFALSE5:ACALLBARKMOVR3,#05H

AJMPERRORFALSE6:ACALLBARKMOVR3,#06H

AJMPERROR;=====INT0(抢答时间R1调整程序)=====INT0SUB:MOVA,R1

MOVB,#0AH

DIVAB

MOVR5,A

MOVR4,B

MOVR3,#0AH

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

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

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

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

AJMPINT0SUBINC0:

MOVA,R1

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

MOVR1,#00H

ACALLDELAY1AJMPINT0SUBADD0:

INCR1

ACALLDELAY1

AJMPINT0SUBDEC0:

MOVA,R1

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

DECR1

ACALLDELAY1

AJMPINT0SUBSETR1:

MOVR1,#63H

ACALLDELAY1

AJMPINT0SUBBACK0:

RETI;=====INT1(回答时间R2调整程序)=====INT1SUB:MOVA,R2

MOVB,#0AH

DIVABMOVR5,A

MOVR4,B

MOVR3,#0AH

ACALLDISPLAY

JNBP3.4,INC1

JNBP3.5,DEC1

JNBP1.7,BACK1

AJMPINT1SUBINC1:

MOVA,R2

CJNEA,#63H,ADD1

MOVR2,#00H

ACALLDELAY1AJMPINT1SUBADD1:

INCR2

ACALLDELAY1

AJMPINT1SUBDEC1:

MOVA,R2

JZSETR2

DECR2

ACALLDELAY1

AJMPINT1SUBSETR2:

MOVR2,#63H

ACALLDELAY1

AJMPINT1SUBBACK1:

RETI;=====倒计时程序(抢答倒计时和回答倒计时都跳到改程序)=====COUNT:

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

MOVTH1,#3CH

MOVTL1,#0B0H;重置定时器RECOUNT:MOVA,R6;R6保存了倒计时的时间,之前先将抢答时间或回答时间给R6

MOVB,#0AH

DIVAB;除十分出个位/十位

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

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

MOVR5,30H;取十位

MOVR4,31H;取个位

MOVA,R6

SUBBA,#07H

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

MOVA,R0

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

CLRRING

AJMPCHECKFULL:

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

SETBRING

MOVA,R6

JZQUIT;计时完毕

MOVR0,#00H

DECR6;一秒标志减1

AJMPCHECKLARGER:MOVA,R0

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

DECR6;计时一秒R6自动减1

MOVR0,#00HCHECK:JNBP1.7,QUIT;如按下停止键退出

ACALLDISPLAY

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

AJMPRECOUNTACCOUT:JNBP1.1,TRUE1

JNBP1.2,TRUE2

JNBP1.3,TRUE3

JNBP1.4,TRUE4

JNBP1.5,TRUE5

JNBP1.6,TRUE5

AJMPRECOUNTQUIT:

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

CLRRING

AJMPSTART;=====正常抢答处理程序=====TRUE1:ACALLBARK;按键发声

MOVA,R2

MOVR6,A;抢答时间R2送R6

MOVR3,#01H

CLROK;因为答题的计时不再查询抢答,所以就锁了抢答

AJMPCOUNTTRUE2:ACALLBARK;

MOVA,R2

MOVR6,A

MOVR3,#02H

CLROK

AJMPCOUNTTRUE3:ACALLBARK;

MOVA,R2

MOVR6,A

MOVR3,#03H

CLROK

AJMPCOUNTTRUE4:ACALLBARK;

MOVA,R2

MOVR6,A

MOVR3,#04H

CLROK

AJMPCOUNTTRUE5:

ACALLBARK;

MOVA,R2

MOVR6,A

MOVR3,#05H

CLROK

AJMPCOUNTTRUE6:

ACALLBARK;

MOVA,R2

MOVR6,A

MOVR3,#06H

CLROK

AJMPCOUNT;=====犯规抢答程序=====ERROR:

MOVR0,#00H

MOVTH1,#3CH

MOVTL1,#0B0H

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

MOVA,R0

CJNEA,#0AH,FLASH;0.5s向下运行->灭并停响

CLRRING

MOVR3,#0AH

MOVR4,#0AH

MOVR5,#0AH;三灯全灭

AJMPCHECK1FLASH:

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

SETBRING

MOVR0,#00H

MOVR3,34H;取回号数

MOVR5,#0BH

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

AJMPCHECK1CHECK1:JNBP1.7,QUIT1

ACALLDISPLAY

AJMPHEREQUIT1:

CLRRING

CLROK

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

MOVA,R5

MOVCA,@A+DPTR

MOVP2,#01H

MOVP0,A

ACALLDELAY

MOVDPTR,#DAT2

MOVA,R4

MOVCA,@A+DPTR

MOVP2,#02H

MOVP0,A

ACALLDELAY

MOVA,R3

MOVCA,@A+DPTR

MOVP2,#04H

MOVP0,A

ACALLDELAY

RETDAT1:DB00H,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fh,00H,71H;"灭","1","2","3","4","5","6","7","8","9","灭","F"DAT2:DB3fh,06h,5

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论