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

📄 lab5_2.asm

📁 针对51单片机的按键显示,反转法扫描,以及相关功能
💻 ASM
字号:
;--------------------------------------------------------------
;               伪指令定义区
;--------------------------------------------------------------
                key equ 75h
                org 0000h
                ljmp main
                org 0030h
;--------------------------------------------------------------
;               程序初始化
;--------------------------------------------------------------
                main:
                clr ea
                mov key,#00h
                mov p1,#00h
                mov p0,#0fh
                mov P2,#0ffh
                mov sp,#60h
;--------------------------------------------------------------
                start:

                call scan_key
                jnb  f0,exit
                mov  P0,a
                exit:
                ljmp start
;--------------------------------------------------------------
;               键盘扫描函数
;               P2口作为键盘输入
;--------------------------------------------------------------
                scan_key:
                mov P2,#0ffh
                mov P2,#0fh
                mov a,P2
                cjne a,#0fh,h1
                ljmp over
                h1:
                cjne a,p2,scan_key
                mov r7,a
                mov P2,#0ffh
                mov P2,#0f0h
                nop
                mov a,P2
                cjne a,#0f0h,check
                ljmp scan_key
                check:
                cjne r7,#0eh,rank_2
                mov  dptr,#rank_one
                ljmp com
                rank_2:
                cjne r7,#0dh,rank_3
                mov dptr,#rank_two
                ljmp com
                rank_3:
                cjne r7,#0bh,rank_4
                mov dptr,#rank_three
                ljmp com
                rank_4:
                mov dptr,#rank_four
                com:
                cjne a,#0e0h,colo_2
                mov  a,#00h
                ljmp add_all
                colo_2:
                cjne a,#0d0h,colo_3
                mov  a,#01h
                ljmp add_all
                colo_3:
                cjne a,#0b0h,colo_4
                mov  a,#02h
                ljmp add_all
                colo_4:
                mov  a,#03h
                add_all:
                movc a,@a+dptr
                mov key,a
                setb f0
                over:
                ret

;--------------------------------------------------------------
;               延时函数
;--------------------------------------------------------------
                delay:
                mov r6,#1;
                loop0:mov r5,#250
                loop:
                mov r4,#250
                loop1:
                djnz r4,loop1
                djnz r5,loop
                djnz r6,loop0
                ret
                delay1:
                mov r6,#100;
                djnz r6,$
;--------------------------------------------------------------
;               定时中断
;--------------------------------------------------------------
                int0:
                reti
;--------------------------------------------------------------
;               定义LED编码表,该编码遵从行线接低,列线接高
; 0 1 2 3 4 5 6 7 8 9 hour  minute enter
;
;
;--------------------------------------------------------------
                rank_one:
                db 3fh,06h,5bh,4fh
                rank_two:
                db 66h,6dh,7dh,07h
                rank_three:
                db 6fh,6fh,6fh,6fh
                rank_four:
                db 6fh,6fh,6fh,6fh
;--------------------------------------------------------------
;              2008-11-29   肖波
;--------------------------------------------------------------

⌨️ 快捷键说明

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