资源描述
ORG 0000H
SJMP MAIN ;跳至主程序
ORG 0003H
SJMP ZHUCHIREN ;跳至主持人的中断程序
ORG 0013H
SJMP XUANSHOU ;跳至选手抢答的中断程序
MAIN:SETB EA ;中断初始化程序
SETB EX0 ;开外部中断0
CLR IT0
CLR EX1
CLR IT1 ;关闭外部中断1
CLR P0.7 ;关闭蜂鸣器
MOV SP,#70H ;设置堆栈地址
SJMP $ ;等待主持人按键
ZHUCHIREN:PUSH ACC
PUSH PSW ;堆栈保护
SETB RS0
CLR RS1 ;设置工作寄存器组1
MOV P0, #3FH ;数码管清零
SETB EX1 ;打开外部中断1开关
POP PSW
POP ACC ;出栈
RETI ;主持人中断返回
XUANSHOU:PUSH ACC
PUSH PSW
SETB RS1
CLR RS0 ;设置工作寄存器组2
JNB P1.0, NUM1 ;若选手一按下跳至程序NUM1
JNB P1.1, NUM2 ;若选手二按下跳至程序NUM2
JNB P1.2, NUM3 ;若选手三按下跳至程序NUM3
JNB P1.3, NUM4 ;若选手四按下跳至程序NUM4
MOV P0, #6DH ;若前四位选手均未按,数码管显示5
SJMP FENGMINGQI ;跳至FENGMINGQI
NUM1: MOV P0, #06H ;数码管显示1
SJMP FENGMINGQI
NUM2: MOV P0,#5BH ;数码管显示2
SJMP FENGMINGQI
NUM3: MOV P0, #4FH ;数码管显示3
SJMP FENGMINGQI
NUM4: MOV P0, #66H ;数码管显示4
FENGMINGQI:SETB P0.7
ACALL DELAY
CLR P0.7 ;蜂鸣器响一秒左右后关闭
CLR EX1 ;屏蔽其它选手按键后的电路动作
POP PSW
POP ACC
RETI ;选手抢答中断返回
DELAY: MOV R5, #09H ;延时1秒程序
DLY1: MOV R6, #0C8H
NOP ;时间补偿
DLY2: MOV R7, #0F8H
DJNZ R7, $
DJNZ R6, DLY2
DJNZ R5, DLY1
RET
END ;程序结束
展开阅读全文