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

📄 bianjiema.asm

📁 电话DTMF编码解码仿真。有线方式编解码:P2口为显示
💻 ASM
字号:
;/////////////////////////////////////////////
;有线方式编解码:P2口为显示,P3口为编码的输出
;P0口为解码的读入,P1口为键盘。
;/////////////////////////////////////////////
     ORG 0000H
     TEMP EQU 76H
     KEYBOARD EQU P1
     CODE EQU P3
     CODE1 EQU P0
    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 76H,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 READ
      
      MOV 78H,A
      ;LCALL LEFT
      LCALL DISPLAY
      CLR P3.4
      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
READ:MOV A,CODE1
     ANL A,#0FH
      CJNE A,#00H,K1
      RET
 K1:  CJNE A,#01H,K2
      RET
 K2:  CJNE A,#02H,K3
      RET
 K3:  CJNE A,#03H,K4
      RET
 K4:  CJNE A,#04H,K5
      RET
 K5:  CJNE A,#05H,K6
      RET
 K6:  CJNE A,#06H,K7
      RET
 K7:  CJNE A,#07H,K8
      RET
 K8:  CJNE A,#08H,K9
      RET
 K9:  CJNE A,#09H,K10
      RET
 K10: MOV A,#0FFH
      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 + -