微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 四路抢答器的程序,有些地方不懂,求讲解。

四路抢答器的程序,有些地方不懂,求讲解。

时间:10-02 整理:3721RD 点击:
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
         ANL A,#0FH    ;增加这一句,保留低四位
         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
看不懂loop2那里到底是咋样判断是哪位抢答的,还有leddis那两句是干什么的。求讲解,求助攻。

求讲解,求讲解

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top