- 10
- 0
- 约1.72万字
- 约 16页
- 2017-02-09 发布于江苏
- 举报
抢答器全功能供参习
OK EQU 20H ;抢答开始标志位
RING EQU 22H ;响铃标志位
ORG 0000H
AJMP MAIN
ORG 0003H
AJMP QTIME
ORG 000BH
AJMP OVERR
ORG 0013H
AJMP ASKTIME
ORG 001BH
AJMP OVERT
ORG 0040H
MAIN:
MOV R1,#20 ;初设抢答时间为20s
MOV R2,#60 ;初设答题时间为60s
MOV 50H ,#10
MOV 52H ,#10
MOV 54H ,#10
MOV 56H ,#10
MOV 58H ,#10
MOV 60H ,#10
MOV 62H ,#10
MOV 64H ,#10 ;初始化各选说分数为10分
MOV TMOD,#11H ;设置定时器/模式1
MOV TH0,#0F0H
MOV TL0,#0FFH ;越高发声频率越高,越尖
MOV TH1,#3CH
MOV TL1,#0B0H ;50ms为一次溢出中断
SETB EA ;CPU开中断
SETB ET0
SETB ET1
SETB EX0
SETB EX1 ;允许四个中断,T0/T1/INT0/INT1
CLR OK
CLR RING
SETB TR1
SETB TR0 ;一开始就运行定时器,以开始显示E EE.如果想重新计数,重置TH1/TL1就可以了
;*****查询程序*****
START:
MOV R5,#0BH
MOV R4,#0BH
MOV R3,#0BH
ACALL XIANSHI ;未开始抢答时候显示E EE
JNB P3.6,SCOCHA
JB P3.0,NEX ;如果开始键按下就向下执行,否者跳到非法抢答查询
ACALL BARK ;按键发声
MOV A,R1
MOV R6,A ;送R1-R6,因为R1中保存了抢答时间
SETB OK ;抢答标志位,用于BACKT只程序中判断是否查询抢答
MOV R7,#01H ;读抢答键数据信号标志,这里表示只读一次有用信号
MOV R3,#0AH ;抢答只显示计时,灭号数
AJMP BACKT ;进入倒计时程序,查询有效抢答的程序在BACKT里面
NEX:
JMP NEXT
;*****分数查询******
SCOCHA:
JNB P3.1,START
JNB P1.0,S1
JNB P1.1,S2
JNB P1.2,S3
J
原创力文档

文档评论(0)