求大神做一个51单片机的四路抢答器,要汇编程序,电路图,和分析过程,还有4天答辩,

2025-01-01 19:19:02
推荐回答(1个)
回答1:

有一个八路的发给你吧,供参考

     ORG   0000H

     JMP   BEGIN

     ORG 0030H

TABLE:      ; 共阴极数码管显示代码表

          DB    3FH,06H,5BH,4FH,66H ;12345

          DB    6DH,7DH,07H,7FH     ;6789

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

        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