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

📄 8155-成功.asm

📁 这是“led广告屏”程序
💻 ASM
字号:
        OUTBIT   EQU  0E101H
        CLK_DAT  EQU  0E102H
        IN_KEY   EQU  0E103H

        MOV R0,#79H
        MOV R2,#00H       ;暂存取得的字型码,它将在填充缓存子程序中使用
        MOV R3,#00H       ;用于取得键值后,键值暂存此中
        MOV 70H,#10H      ;70h放置速度系数
        MOV 71H,#00H      ;71h=00h,表示右移,01h表示左移
        MOV 7AH,#0B0H

        MOV DPTR,#0E100H  ;初始化8155
        MOV A,#03H
        MOVX @DPTR,A
        
FILL:   ACALL FILLFUL     ;填充数据缓冲区
        MOV A,70H
        MOV 72H,A
DIS_CAL:ACALL KEY_SCAN    ;检测是否有键按下
        JNZ DEAL          ;有键按下,则跳出程序主线,转去键处理
        ACALL DISPLAY
        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
        ACALL KEY_SCAN
        JNZ DEAL
        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
        MOV A,72H
        JB ACC.0,KFREE
        RR A
        MOV 72H,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
        ACALL KEY_SCAN
        JNZ DEAL_NEW
        DJNZ 72H,OUT_OT
        LJMP FILL
DEAL_NEW:LJMP DEAL              ;;;;;;;;;;;;;;; 
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;填充缓冲子程序;;;;;;;;;;;;;;;
FILLFUL:MOV R1,#79H
GO_ON: MOV @R1,#10H
       INC R1
       CJNE R1,#7FH,GO_ON
       MOV A,R2                 
       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 R3,#20H

NEXT_XT:MOV DPTR,#0E101H
        MOV A,#00H
        MOVX @DPTR,A

        MOV A,@R1
        MOV DPTR,#TAB
        MOVC A,@A+DPTR
        MOV 74H,#08H

SEND_164:MOV R5,A
SEND_RE:MOV A,R5
        RL A
        MOV R5,A
        ANL A,#0FDH
        MOV DPTR,#0E102H
        MOVX @DPTR,A
        ORL A,#02H
        MOVX @DPTR,A
        ANL A,#0FDH
        MOVX @DPTR,A
        DJNZ 74H,SEND_RE
        MOV DPTR,#0E101H
        MOV A,R3
        MOVX @DPTR,A

        ACALL DELAYT
        MOV DPTR,#0E101H
        MOV A,#00H
        MOVX @DPTR,A
        MOV A,R3
        RR A
        MOV R3,A
        INC R1
        CJNE R1,#7FH,NEXT_XT
        RET
        
      ;;;延时子程序在;;;
DELAYT:MOV R7,#02H
DLY1: MOV R6,#0
DLY2: DJNZ R6,DLY2
      DJNZ R7,DLY1
      RET
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;键扫描子程序、取键值子程序和计算键码子程序#

⌨️ 快捷键说明

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