51单片机4路抢答器,求大神帮我做一个,急需。要求用汇编语言。还要有protues的仿真图!!!
答案:1 悬赏:30 手机版
解决时间 2021-01-06 18:23
- 提问者网友:不要迷恋哥
- 2021-01-06 07:59
51单片机4路抢答器,求大神帮我做一个,急需。要求用汇编语言。还要有protues的仿真图!!!
最佳答案
- 五星知识达人网友:酒醒三更
- 2021-01-06 08:30
ORG 0000H
JMP BEGIN
ORG 0030H
TABLE: ; 共阴极数码管显示代码表
DB 3FH,06H,5BH,4FH,66H ;01234
DB 6DH,7DH,07H,7FH,6fh ;56789
DELAY: MOV R5,#20
LOOP4: MOV R6,#50H ;延时20x20ms
LOOP5: MOV R7,#100
DJNZ R7,$
DJNZ R6,LOOP5
DJNZ R5,LOOP4
RET
;---------------------------------------
BEGIN: MOV P2,#0FFH ;P2口置高电平,准备接收信号
MOV R4,#0
MOV A,R4 ;R4位标志值送A寄存器
AGAIN: MOV DPTR,#TABLE
MOVC A,@A+DPTR
MOV P1,A
LOOP1: MOV A,P3 ; 接收p3口的抢答信号
CPL A
JZ LOOP1
LOOP2: RRC A ;有人抢答信号则逐次移动判断哪一位抢答
INC R4
JNC LOOP2
;********************
MOV A,R4
CJNE A,#5,LOOP3
LOOP3:
JC LOOP4
MOV R4,#0
SJMP LOOP1
LOOP4:
MOVC A,@A+DPTR ;找到相应位显示代码
MOV P1,A
LEDDIS:
MOV A,#0FFH
CLR C
LEDDIS1:
RLC A
DJNZ R4,LEDDIS1
MOV P0,A
LOOP3: JNB P2.2,BEGIN ;若主持人按下复位信号键,则转向主程序
CPL P2.0 ;若没按复位信号键,则通过p2.2口给出高低信号驱动蜂鸣器
LCALL DELAY ;调用延时子程序
SJMP LOOP3 ;p2.2口反复间隔0.4s变化,驱动蜂鸣器
END追问大神,可能附张protues图啊
大神,这是不是你做的8路抢答器如果是四路的话我们怎么判定是哪一位选手按的键
追答 ORG 0000H
JMP BEGIN
ORG 0030H
TABLE:
DB 3FH,06H,5BH,4FH,66H ;01234
DB 6DH,7DH,07H,7FH,6fh ;56789
DELAY: MOV R5,#20
DLY1: MOV R6,#50H
DLY2: MOV R7,#100
DJNZ R7,$
DJNZ R6,DLY2
DJNZ R5,DLY1
RET
BEGIN: MOV P2,#0FFH
MOV P0,#0FFH
MOV R4,#0
MOV A,R4
AGAIN: MOV DPTR,#TABLE
MOVC A,@A+DPTR
MOV P1,A
LOOP1: MOV A,P3
CPL A
JZ LOOP1
LOOP2: RRC A
INC R4
JNC LOOP2
MOV A,R4
CJNE A,#5,LOOP3
LOOP3:
JC LOOP4
MOV R4,#0
SJMP LOOP1
LOOP4:
MOVC A,@A+DPTR
MOV P1,A
LEDDIS:
MOV A,#0FFH
CLR C
LEDDIS1:
RLC A
DJNZ R4,LEDDIS1
MOV P0,A
LOOP5: JNB P2.2,BEGIN
CPL P2.0
LCALL DELAY
SJMP LOOP5
END
追问谢谢谢谢了
JMP BEGIN
ORG 0030H
TABLE: ; 共阴极数码管显示代码表
DB 3FH,06H,5BH,4FH,66H ;01234
DB 6DH,7DH,07H,7FH,6fh ;56789
DELAY: MOV R5,#20
LOOP4: MOV R6,#50H ;延时20x20ms
LOOP5: MOV R7,#100
DJNZ R7,$
DJNZ R6,LOOP5
DJNZ R5,LOOP4
RET
;---------------------------------------
BEGIN: MOV P2,#0FFH ;P2口置高电平,准备接收信号
MOV R4,#0
MOV A,R4 ;R4位标志值送A寄存器
AGAIN: MOV DPTR,#TABLE
MOVC A,@A+DPTR
MOV P1,A
LOOP1: MOV A,P3 ; 接收p3口的抢答信号
CPL A
JZ LOOP1
LOOP2: RRC A ;有人抢答信号则逐次移动判断哪一位抢答
INC R4
JNC LOOP2
;********************
MOV A,R4
CJNE A,#5,LOOP3
LOOP3:
JC LOOP4
MOV R4,#0
SJMP LOOP1
LOOP4:
MOVC A,@A+DPTR ;找到相应位显示代码
MOV P1,A
LEDDIS:
MOV A,#0FFH
CLR C
LEDDIS1:
RLC A
DJNZ R4,LEDDIS1
MOV P0,A
LOOP3: JNB P2.2,BEGIN ;若主持人按下复位信号键,则转向主程序
CPL P2.0 ;若没按复位信号键,则通过p2.2口给出高低信号驱动蜂鸣器
LCALL DELAY ;调用延时子程序
SJMP LOOP3 ;p2.2口反复间隔0.4s变化,驱动蜂鸣器
END追问大神,可能附张protues图啊
大神,这是不是你做的8路抢答器如果是四路的话我们怎么判定是哪一位选手按的键
追答 ORG 0000H
JMP BEGIN
ORG 0030H
TABLE:
DB 3FH,06H,5BH,4FH,66H ;01234
DB 6DH,7DH,07H,7FH,6fh ;56789
DELAY: MOV R5,#20
DLY1: MOV R6,#50H
DLY2: MOV R7,#100
DJNZ R7,$
DJNZ R6,DLY2
DJNZ R5,DLY1
RET
BEGIN: MOV P2,#0FFH
MOV P0,#0FFH
MOV R4,#0
MOV A,R4
AGAIN: MOV DPTR,#TABLE
MOVC A,@A+DPTR
MOV P1,A
LOOP1: MOV A,P3
CPL A
JZ LOOP1
LOOP2: RRC A
INC R4
JNC LOOP2
MOV A,R4
CJNE A,#5,LOOP3
LOOP3:
JC LOOP4
MOV R4,#0
SJMP LOOP1
LOOP4:
MOVC A,@A+DPTR
MOV P1,A
LEDDIS:
MOV A,#0FFH
CLR C
LEDDIS1:
RLC A
DJNZ R4,LEDDIS1
MOV P0,A
LOOP5: JNB P2.2,BEGIN
CPL P2.0
LCALL DELAY
SJMP LOOP5
END
追问谢谢谢谢了
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯