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

📄 aa.asm

📁 实现键盘控制LED功能 实现数据显示于数码管上的功能 实现在单片机控制下实现键盘控制“000000”—“999999”的数据显示功能
💻 ASM
字号:
ORG 00H              
START:  MOV R4,#06H               ;清除30h-35h的地址,让数码管
        MOV R0,#30H                 初始显示全部为0
CLEAR:  MOV @R0,#00H          
        INC R0              
        DJNZ R4,CLEAR          
L1:     MOV R3,#0F7H              ;扫描初值(p13=0)
        MOV R1,#00H               ;取码指针
L2:     MOV A,R3                  ;开始扫描
        MOV P1,A                  ;将扫描值输出至p1
        MOV A,P1                  ;读入p1值,判断是否有键按下
        MOV R4,A                  ;存入R4,判断是否有键放开
        SETB C                    ;c=1
        MOV R5,#04H               ;扫描p14-p17
L3:     RLC A                     ;将扫描值左移一位,扫描下一列
        JNC KEYIN                 ;判断c=0?有键按下则c=0,
跳至KEYIN
        INC R1                    ;c=1则表示没有键按下,将取码指针值加1
        DJNZ R5,L3                ;4列扫描完毕了?
        CALL DISP                 ;扫描完毕,调用显示子程序
        MOV A,R3                  ;扫描值的载入
        SETB C                    ;c=1
        RRC A                   ;右移扫描值,扫描下一行(p13-p10)
        MOV R3,A                 ; 存回扫描寄存器
        JC L2                    ;从c=1?是,则p10尚未扫描到
        JMP L1                   ;c=0则4行已扫描完毕
KEYIN:  MOV R7,#60               ;消除抖动
D2:     MOV R6,#248              
        DJNZ R6,$                
        DJNZ R7,D2               
D3:     MOV A,P1                 ;读入p1值  
        XRL A,R4                 ;与上次读入值作比较
        JZ D3                    ;acc=0则相等,则表示按钮未放
        MOV A,R1                 ;按键已放开,取码指针载入累加器
        MOV DPTR,#TABLE          ;数据指针指到TALBLE
        MOVC A,@A+DPTR           ;至TALBLE取码
        XCH A,30H                ; 现按键值存入(30H)
        XCH A,31H                ;旧(30H)值存入(31H)
        XCH A,32H                ;旧(31H)值存入(32H)
        XCH A,33H                ;旧(32H)值存入(33H)
        XCH A,34H                ;旧(33H)值存入(34H)
        XCH A,35H                ;旧(34H)值存入(35H)
        CALL DISP               ;调用显示子程序  
        JMP L1                   ;开始重新的扫描
DISP:   MOV A,35H                 
        ADD A,#50H               ;D6数据值加上74LS138扫描值     
        MOV P0,A                 ;显示D6(靠近单片机第一个数码管)
        CALL DELAY               ;扫描延时
        MOV A,34H                
        ADD A,#40H               ;D5数据值加上74LS138扫描值
        MOV P0,A                 ;显示D5
        CALL DELAY               ;扫描延时  
        MOV A,33H                      
        ADD A,#30H               ;D4数据值加上74LS138扫描值  
        MOV P0,A                 ;显示D4
        CALL DELAY               ;扫描延时
        MOV A,32H                     
        ADD A,#20H               ;D3数据值加上74LS138扫描值  
        MOV P0,A                 ;显示D3
        CALL DELAY               ;扫描延时
        MOV A,31H                    
        ADD A,#10H               ;D2数据值加上74LS138扫描值      
        MOV P0,A                 ;显示D2
        CALL DELAY               ;扫描延时
        MOV A,30H                      
        ADD A,#00H               ;D1数据值加上74LS138扫描值     
        MOV P0,A                 ;显示D1
        CALL DELAY               ;扫描延时
        RET                        
DELAY:  MOV R7,#06               ; 显示器扫描延时时间   
D1:     MOV R6,#248                          
        DJNZ R6,$                         
        DJNZ R7,D1                   
        RET                    
        ORG 300H                    
TABLE:  DB 0CH,08H,04H,00H       ;存储对外部键盘的定义值
        DB 0DH,09H,05H,01H                   
        DB 0EH,0AH,06H,02H              
        DB 0FH,0BH,07H,03H              
END

⌨️ 快捷键说明

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