本帖最后由 JNV小陈子 于 2012-7-15 23:20 编辑
OBUF1 EQU 30H ;初始化程序
OBUF2 EQU 31H
OBUF3 EQU 32H
OBUF4 EQU 33H
FLAGB BIT 00H
STOPB BIT 01H
ORG 0000H
AJMP MAIN
ORG 000BH
LJMP PGT0
MAIN:MOV SP, #60H
SETB P2.0
MOV P1,#11111111B
LOOP:JB P2.0,$ ;判断主持人按键是否按下
MOV P1,#11111110B
MOV P3,#11111111B ;绿灯亮
LOOP1:JB P2.1,LOOP2 ;判断一号是否抢答
MOV P1,#11111101B
MOV P3,#11101011B ;显示一号
ACALL MAIN1
JB P2.0,$
MOV P2,#0FFH
MOV P1,#11111111B
MOV P3,#11111111B
ACALL DELAY
AJMP LOOP
LOOP2:JB P2.2,LOOP3; ;判断二号是否抢答
MOV P1,#11111011B
MOV P3,#10000101B ;显示二号
ACALL MAIN1
JB P2.0,$
MOV P1,#11111111B
MOV P3,#11111111B
ACALL DELAY
AJMP LOOP
LOOP3:JB P2.3,LOOP4; ;判断三号是否抢答
MOV P1,#11110111B
MOV P3,#11000001B ;显示三号
ACALL MAIN1
JB P2.0,$
MOV P1,#11111111B
ACALL DELAY
AJMP LOOP ;判断四号是否抢答
LOOP4:JB P2.4,LOOP1;
MOV P1,#11101111B
MOV P3,#11101000B ;显示四号
ACALL MAIN1
JB P2.0,$
MOV P1,#11111111B
MOV P3,#11111111B
ACALL DELAY
AJMP LOOP
DELAY:MOV TMOD,#10H ;延时程序
MOV TL1,#0DCH
MOV TH1,#0BH
MOV R2,#4
SETB TR1
LOP:JNB TF1,$
MOV TL0,#0DCH
MOV TH0,#0BH
CLR TF1
DJNZ R2,LOP
CLR TR1
RET
MAIN1:
MOV TMOD,#02H ;定时器初始化
MOV TH0,#06H
MOV TL0,#06H
SETB ET0 ;启动定时器T0
SETB EA ;启动总中断
MAIN2: ;主程序
LCALL YS10M ;延时去抖动
SETB TR0 ;按钮有效
MOV OBUF1,#00H
MOV OBUF2,#00H
MOV OBUF3,#00H
MOV OBUF4,#00H
CLR FLAGB
CLR STOPB
JNB STOPB,$
YS10M: ;10ms延时子程序
MOV R6,#20
D1: MOV R7,#248
DJNZ R7,$
DJNZ R6,D1
RET
PGT0: ;定时器T0中断服务程序
INC OBUF3 ;中断服务程序中发出一声"叮咚"响声
MOV A,OBUF3
CJNE A,#60,NEXT
MOV OBUF3,#00H
INC OBUF4
MOV A,OBUF4
CJNE A,#20,NEXT
MOV OBUF4,#00H
JB FLAGB,PGSTP
CPL FLAGB
AJMP NEXT
PGSTP:
SETB STOPB
CLR TR0
LJMP INT0RET
NEXT:JB FLAGB,SOU2
INC OBUF2
MOV A,OBUF2
CJNE A,#03H,INT0RET
MOV OBUF2,#00H
CPL P3.7
LJMP INT0RET
SOU2:INC OBUF1
MOV A,OBUF1
JNE A,#04H,INT0RET
MOV OBUF1,#00H
CPL P3.7
LJMP INT0RET
INT0RET:
RE
ti
RET
END
-
错误显示
-
-
程序.txt
下载积分: 积分 -1 分
2.96 KB, 下载次数: 10, 下载积分: 积分 -1 分
一周热门 更多>