⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 th25(8255).asm

📁 请认真阅读您的文件包然后写出其具体功能(至少要20个字)。尽量不要让站长把时间都花费在为您修正说明上。压缩包解压时不能有密码。系统会自动删除debug和release目录
💻 ASM
字号:
  ;8255
OUTBIT   equ 7FFDH   ; 位控制B 口
OUTSEG   equ 7FFCH   ; 段控制A口
 ;P1 键盘读入口

HasRcv equ   20h.0   ; 接收标志位
LEDBuf equ   40h     ; 显示缓冲
RCVBuf equ   50H     ; 接收缓冲

        ORG     0000H
        LJMP    START

; 串行口中断程序  =========================
        ORG     0023H
        JNB     TI,S0_R
        CLR     TI
        NOP
        SJMP    S0_RET
S0_R:                          ; 接收数据
        CLR     RI
        MOV     RCVBUF,SBUF    ; 保存数据
        SETB    HasRcv         ; 提示收到数据
        NOP
S0_RET:
        RETI  ;==============================

LEDMAP:              ; 八段管显示码
       db    3fh, 06h, 5bh, 4fh, 66h, 6dh, 7dh, 07h
       db    7fh, 6fh, 77h, 7ch, 39h, 5eh, 79h, 71h ,00h

Delay:               ; 延时子程序
       mov   r7, #0
DelayLoop:
       djnz  r7, DelayLoop
       djnz  r6, DelayLoop
       ret

DisplayLED:
       mov   r0,   #LEDBuf
       MOV   DPTR, #LEDMAP
       MOV   A,    @R0
       MOVC  A,    @A+DPTR
       MOV   DPTR, #OUTSEG
       MOVX  @DPTR,A
       MOV   R2,   #01H
       MOV   A,    R2
       mov   DPTR, #OUTBIT
       MOVX  @DPTR,A
       MOV   R6,   #1
       ACALL DELAY
       ret

            ;***********************************                 BVB
TestKey:MOV   P1,  #0FH
        MOV   A,   P1      ; 读入键状态
        cpl   a
        anl   a, #0fh      ; 高四位不用
        ret

KeyTable:DB   0EEH,0DEH,0BEH,07EH
         DB   0EDH,0DDH,0BDH,07DH
         DB   0EBH,0DBH,0BBH,07BH
         DB   0E7H,0D7H,0B7H,077H      ; 键码定义

GetKey: MOV R6,#10
        ACALL DELAY
      MOV   P1,  #0FH
      MOV   A,   P1
      CJNE  A,   #0FH, K12
      LJMP  MLOOP
K12:  MOV   B,A
      MOV   P1,  #0EFH ;
      MOV   A,   P1
      CJNE  A,   #0EFH,K13 ;
      MOV   P1,  #0DFH
      MOV   A,   P1
      CJNE  A,   #0DFH,K13 ;
      MOV   P1,  #0BFH
      MOV   A,   P1
      CJNE  A,   #0BFH,K13;
      MOV   P1,  #7FH
      MOV   A,   P1
      CJNE  A,   #7FH, K13;
      LJMP  MLOOP
K13:  ANL   A,   #0F0H;
      ORL   A,   B
      MOV   B,   A
      MOV   R1,  #16
      MOV   R2,  #0
      MOV   DPTR,#KEYTABLE
K14:  MOV   A,   R2
      MOVC  A,   @A+DPTR
      CJNE  A,   B,    K16
      MOV   P1,  #0FH;
K15:  MOV   A,   P1
      CJNE  A,   #0FH, K15;
      MOV   R6, #10
      ACALL DELAY
      MOV   A,   R2
      RET
      
K16:  INC   R2
      DJNZ  R1,  K14
      LJMP  MLOOP
             ;#########################
START:
       MOV   SP,  #60H
       MOV   IE,  #0     ; DISABLE ALL INTERRUPT
       MOV   TMOD,#020H  ; 定时器1工作于方式2 (8位重装)
       MOV   TH1, #0F9H  ; 波特率

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -