单片机八人抢答器程序设计

设计要求
利用KEILC51仿真软件分别编制控制程序。
利用proteus仿真软件,绘制单片机控制系统,P1口接8个按钮,分别代表8个小组,各小组编号为1、2、3、。。。 7、8;P3.7接主持人“开始或复位”按钮;P0口接一个数码管(共阳极);P2口接8个LED灯,用于对应8个小组抢答指示。
(1)当主持人没有按下“开始”按钮时,数码管显示0;
(2)当主持人按下“开始”按钮并松开后,数码管显示P,允许各小组抢答;
(3)若有某一个小组按钮按下,点亮抢答小组的指示灯,并将抢答小组号显示在数码管上。
(4)当主持人按下“复位”按钮并松开后,重新进入(1)。
源程序 汇编 和 C51 都可以!

;------------------------------------------
KAI BIT P3.7 ;开始
;------------------------------------------
ORG 0000H
JMP START
START:
;----------------------;下面是清零(复位)
MOV P0, #0C0H ;显示0
MOV P2, #255 ;熄灯
MOV R4, #0
;----------------------;下面等待按下"开始"键
KAISHI:
JB KAI, KAISHI ;没有按"开始",就循环
CALL DELAY ;延时
JB KAI, KAISHI ;消抖
JNB KAI, $ ;等待释放
;----------------------
MOV P0, #0CH ;显示P
WAIT: ;等待抢答
MOV A, P1
CPL A
JZ WAIT ;继续等待
;----------------------
XS: ;查找选手按键的位置
CPL A
MOV P2, A
JNB ACC.0, J0
JNB ACC.1, J1
JNB ACC.2, J2
JNB ACC.3, J3
JNB ACC.4, J4
JNB ACC.5, J5
JNB ACC.6, J6
; JMP J7
J7: INC R4
J6: INC R4
J5: INC R4
J4: INC R4
J3: INC R4
J2: INC R4
J1: INC R4
J0: INC R4
MOV A, R4
MOV DPTR, #D_TAB
MOVC A, @A + DPTR
MOV P0, A
;----------------------;下面等待按下复位键
W_FW:
JB KAI, W_FW ;没有按,则转
CALL DELAY ;延时
JB KAI, W_FW ;消抖
JNB KAI, $ ;等待释放
JMP START
;------------------------
D_TAB:
DB 0C0H,0F9H,0A4H,0B0H, 99H ;共阳极0-9
DB 92H, 82H,0F8H, 80H, 90H,0BFH ;-
;------------------------------------------
DELAY: ;延时约10ms
MOV R6, #20
DJNZ R7, $
DJNZ R6, $ - 2
RET
;==========================================
END

;以上程序已经调好。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-12-06
貌似是之前帮做过这类似的,需要可以Q我追问

我之前没有提过这样的问题,已经加你QQ了,我真的很需要,很急用!

追答

汗,帮别人做的