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

📄 5088.asm

📁 基于5088和8870的DTMF信号的编解码程序
💻 ASM
字号:
;////////////////////////////////////////
;5088编码程序:按键1~9分别显示1~9九个数字,
;p3口为编码的输出口
;p2口作为段码和数码管位选输出,高四位为位选码,低四位为BCD码,p1口为键盘输入
;////////////////////////////////////
     ORG 0000H
     TEMP EQU 76H
     KEYBOARD EQU P1
     CODE EQU P3 
    OUTPUT EQU P2
     AJMP MAIN
     ORG 0030H
MAIN:MOV SP,#60H
     CLR P3.4
     MOV 75H,#10
     MOV 76H,#10
     MOV 77H,#10
     MOV 78H,#10
     MOV 79H,#10
     MOV 7AH,#10
     MOV 7BH,#10
     MOV 7CH,#10
     MOV 7DH,#10
     MOV 7EH,#10
     MOV 7FH,#10

RETURN:LCALL KEYIN
       CJNE A,#0FFH,JUDGE
       LCALL DISPLAY
       SJMP RETURN
JUDGE:MOV 75H,A
      MOV CODE,A
      SETB P3.4
      MOV R5,#255
DE:   MOV R6,#255
DE1:   DJNZ R6,DE1
       DJNZ R5,DE
       CLR P3.4
      LCALL LEFT
      LCALL DISPLAY
      SJMP RETURN

;///////////////////////////////////////////////////
;键盘子程序
;////////////////////////////////////////////////////
KEYIN:MOV KEYBOARD,#0FH;反转读键
      MOV A,KEYBOARD
      ANL A,#0FH
      MOV B,A
      MOV P1,#0F0H
      MOV A,KEYBOARD
      ANL A,#0F0H
      ORL A,B
      CJNE A,#0FFH,KEYIN1
      RET            ;未按键
KEYIN1:;LCALL D
       LCALL SCAN
       CJNE A,#0FFH,KEYINN
       RET            ;未按键
KEYINN:MOV B,A;暂存特征吗
       MOV DPTR,#KEYCOD;指向码表
       MOV R3,#0FFH;顺序码初始化
KEYIN2:INC R3
       MOV A,R3
       MOVC A,@A+DPTR
       CJNE A,B,KEYIN3
       MOV A,R3

REL:   LCALL SCAN
       CJNE A,#0FFH,REL
       MOV A,R3

       RET
KEYIN3:CJNE A,#0FFH,KEYIN2
       RET                ;已查完,未找到,以未按键处理
KEYCOD:DB 77H,7BH,7DH,7EH
       DB 0B7H,0BBH,0BDH,0BEH
       DB 0D7H,0DBH,0DDH,0DEH
       DB 0E7H,0EBH,0EDH,0EEH
       RET
SCAN:  MOV KEYBOARD,#0FH;反转读键
       MOV A,KEYBOARD
       ANL A,#0FH
       MOV B,A
       MOV KEYBOARD,#0F0H
       MOV A,KEYBOARD
       ANL A,#0F0H
       ORL A,B
       RET
;/////////////////////////////////////////////////////////////////

;               显示子程序
;//////////////////////////////////////////////////////////////////
DISPLAY:MOV R0,#76H
        MOV R3,#00H
LD0:    MOV A,@R0
        ANL A,#0FH
        MOV B,A
        MOV A,R3
        ANL A,#0FH
        SWAP A
	ORL A,B
	MOV OUTPUT,A
        ;LCALL D
        INC R0
        CJNE R3,#09H,ADDONE
	  RET
ADDONE:        INC R3

        AJMP LD0
RET



;///////////////////////////////////////////
        ;延时3ms
;///////////////////////////////////////////
D:MOV R5,#3;
D1:MOV R6,#100
 D2:  DJNZ R6,D2
     DJNZ R5,D1
	  RET


;//////////////////////////////////////////
;            左移
;//////////////////////////////////////////
LEFT:MOV TEMP,TEMP+1
       MOV TEMP+1,TEMP+2
       MOV TEMP+2,TEMP+3
       MOV TEMP+3,TEMP+4
       MOV TEMP+4,TEMP+5
       MOV TEMP+5,TEMP+6
       MOV TEMP+6,TEMP+7
       MOV TEMP+7,75H
        RET

      END

⌨️ 快捷键说明

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