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

📄 键盘—多功能new.asm

📁 这是“led广告屏”程序
💻 ASM
字号:
        MOV R0,#79H
        MOV R2,#00H       ;暂存取得的字型码,它将在填充缓存子程序中使用
        MOV R3,#00H       ;用于取得键值后,键值暂存此中
        MOV 70H,#10H      ;70h放置速度系数
        MOV 71H,#00H      ;71h=00h,表示右移,01h表示左移

FILL:   ACALL FILLFUL     ;填充数据缓冲区
        MOV A,70H
        MOV 72H,A
DIS_CAL:ACALL DISPLAY
        ACALL KEY_SCAN    ;检测是否有键按下
        JNZ DEAL          ;有键按下,则跳出程序主线,转去键处理
        DJNZ 72H,DIS_CAL  ;速度系数循环完,则应改变字位
        SJMP FILL

DEAL:   ACALL DISPLAY
        ACALL DISPLAY     ;消抖动
        ACALL KEY_SCAN    ;确认有键按下吗?
        JZ FILL           ;无键按下则跳回主线,继续显示
        ACALL GET_KEY     ;取键值
        ACALL GET_K_NUM   ;计算键代码
        MOV A,R3
        CLR C
        SUBB A,#10H
        JNC FUN_KEY       ;键码大于10h,则为功能键,转去功能键判断

KFREE_0:MOV A,R3
        MOV R2,A          ;把键码装入R2,以供填充缓冲使用
        ACALL CORRECT     ;字位修正,以免字位跳动不均匀
        ACALL FILLFUL     ;由于字型改变了 ,因而要重新装入字型
DIS_IT: ACALL DISPLAY     ;;;;;;;;;;;
        ACALL KEY_SCAN
        JZ  KILL_REMAIN
        DJNZ 72H,DIS_IT
WAIT_FREE: ACALL FILLFUL
        MOV A,70H
        MOV 72H,A         ;等待键释放,并且维持显示
WAIT_DIS:ACALL DISPLAY
        ACALL KEY_SCAN
        JZ  KILL_REMAIN
        DJNZ 72H,WAIT_DIS
        SJMP WAIT_FREE

KILL_REMAIN:ACALL DISPLAY
        DJNZ 72H,KILL_REMAIN
OUT_OT_0:SJMP FILL        ;;;;;;;;;;;;;


FUN_KEY:CJNE R3,#15H,CON_COMP   ;功能键判断,是右移键吗?
        MOV B,#00H
        MOV A,71H
        CJNE A,B,COR_LR
        SJMP KFREE
COR_LR: MOV 71H,#00H
        ACALL CORRECT1
        SJMP KFREE

CON_COMP:CJNE R3,#16H,NEXT2     ;是左移键吗?
        MOV B,#01H
        MOV A,71H
        CJNE A,B,CO_LR2
        SJMP KFREE
CO_LR2: MOV 71H,#01H
        ACALL CORRECT2
        SJMP KFREE

NEXT2:  CJNE R3,#13H,NEXT3      ;是加速键吗?
        MOV A,70H
        JB ACC.0,KFREE
        RR A
        MOV 70H,A
        SJMP KFREE

NEXT3:  CJNE R3,#12H,SPEED      ;是减速键吗?
        MOV A,70H
        JB ACC.7,KFREE
        RL A
        MOV 70H,A
        SJMP KFREE

SPEED:  ACALL COMPUTE           ;是其余的功能键,则用于直接控制速度
KFREE:  ACALL DISPLAY           ;;;;;;;;;;;;;
        ACALL KEY_SCAN
        JZ  OUT_OT
        DJNZ 72H,KFREE
CON_FIL:ACALL FILLFUL
        MOV A,70H
        MOV 72H,A
DIS_F:  ACALL DISPLAY
        ACALL KEY_SCAN          ;等待键释放
        JZ OUT_OT
        DJNZ 72H,DIS_F
        SJMP CON_FIL

OUT_OT: ACALL DISPLAY
        DJNZ 72H,OUT_OT
        LJMP FILL               ;;;;;;;;;;;;;;; 

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;填充缓冲子程序;;;;;;;;;;;;;;;
FILLFUL:MOV R1,#79H
GO_ON: MOV @R1,#10H
       INC R1
       CJNE R1,#7FH,GO_ON
       MOV A,R2                 ;STORING THE NUMBER
       MOV @R0,A
       MOV A,71H
       CJNE A,#00H,LEFT
       INC R0
       CJNE R0,#7FH,OUT
       MOV R0,#79H
       SJMP OUT
LEFT:  DEC R0
       CJNE R0,#78H,OUT
       MOV R0,#7EH
OUT:   RET

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;通用显示子程序;;;;;;;;;;;;;;;;;;
DISPLAY:
      MOV R1,#79H
      MOV R4,#01H
DISP1:MOV A,@R1
      MOV DPTR,#TAB
      MOVC A,@A+DPTR
      MOV P1,A
      MOV A,R4
      ORL A,#0C0H
      MOV P3,A

      ACALL DELAYT
      INC R1
      MOV A,R4
      JB ACC.5,DISP2
      RL A
      MOV R4,A
      SJMP DISP1

DISP2:RET

       ;;;延时子程序在;;;
DELAYT:MOV R7,#02H
DLY1: MOV R6,#0FFH
DLY2: DJNZ R6,DLY2
      DJNZ R7,DLY1
      RET
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;键扫描子程序、取键值子程序和计算键码子程序#

⌨️ 快捷键说明

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