;===============================
; 建扫描程序
;----------------------------
键扫描: nop
nop
mov 3fh,#5
;clr EA ; 键扫描禁止中断,试验
;--------------------
; 扫一列 上开始 行1照度上
;----------------
clr 列1
nop
lcall 延时1ms
mov 3fh,#5
;=============
K1行q1循环h1: nop ;键1
jb 行1,K1行q1无效
lcall 延时5ms
djnz 3fh,K1行q1循环h1
mov 3fh,#5
;---------------------------
mov 缓冲,#1
lcall 数据处理
lcall 显示时间单位
;--------------------------
ljmp 键扫描完成
K1行q1无效: nop
;----------------
;--------------------
; 扫一列 上开始 K1行2,红1
;----------------
mov 3fh,#5
K1行q2循环h2: nop
jb 行2,K1行q2无效
lcall 延时5ms
djnz 3fh,K1行q2循环h2
;---------------------------
mov 缓冲,#4
lcall 数据处理
lcall 显示时间单位
;-------------------------- ;
ljmp 键扫描完成
K1行q2无效: nop
;----------------
;--------------------
; 扫一列 上开始 K1行2,紫1
;----------------
mov 3fh,#5
K1行q3循环h3: nop
jb 行3,K1行q3无效
lcall 延时5ms
djnz 3fh,K1行q3循环h3
;---------------------------
mov 缓冲,#7
lcall 数据处理
lcall 显示时间单位
;--------------------------
ljmp 键扫描完成
K1行q3无效: nop
nop
;--------------------
; 扫一列 上开始 K1行2,白1
;----------------
mov 3fh,#5
K1行q4循环h4: nop
jb 行4,K1行q4无效
lcall 延时5ms
djnz 3fh,K1行q4循环h4
;---------------------------
mov 缓冲,#0 ;星号键,清除
mov 2fh,#03h ;设置标志
mov 缓冲,#00h
mov 键值,#00h
;--------------------------
ljmp 键扫描完成
K1行q4无效: nop
setb 列1
nop
nop
; lcall 延时1ms
;==========================================
;--------------------
; 扫二列 上开始 行1照度上
;------ ----------
clr 列2
lcall 延时1ms ;
nop
mov 3fh,#5
;===============================
; 向下
;---------------------------
K2行q1循环h1: nop
jb 行1,K2行q1无效
lcall 延时5ms
djnz 3fh,K2行q1循环h1
mov 3fh,#5
;---------------------------
mov 缓冲,#2
lcall 数据处理
lcall 显示时间单位
;--------------------------
ljmp 键扫描完成
K2行q1无效: nop
;----------------
;--------------------
; 扫二列 上开始 K2行2,红1
;----------------
mov 3fh,#5
K2行q2循环h2: nop
jb 行2,K2行q2无效
lcall 延时5ms
djnz 3fh,K2行q2循环h2
;---------------------------
mov 缓冲,#5
lcall 数据处理
lcall 显示时间单位
;--------------------------
ljmp 键扫描完成
K2行q2无效: nop
;----------------
;--------------------
; 扫一列 上开始 K2行2,紫1
;----------------
mov 3fh,#5
K2行q3循环h3: nop
jb 行3,K2行q3无效
lcall 延时5ms
djnz 3fh,K2行q3循环h3
;---------------------------
mov 缓冲,#8
lcall 数据处理
lcall 显示时间单位
;--------------------------
ljmp 键扫描完成
K2行q3无效: nop
;----------------
;--------------------
; 扫一列 上开始 K2行2,白1
;----------------
mov 3fh,#5
K2行q4循环h4: nop
jb 行4,K2行q4无效
lcall 延时5ms
djnz 3fh,K2行q4循环h4
;---------------------------
mov 缓冲,#0
lcall 数据处理
lcall 显示时间单位
;--------------------------
ljmp 键扫描完成
K2行q4无效: nop
nop
setb 列2
lcall 延时1ms
;----------------
;--------------------
; 扫三列 上开始 行1照度上
;----------------
clr 列3 ;扫描第三列
lcall 延时1ms ;
nop
nop
mov 3fh,#5
;=============
K3行q1循环h1: nop
jb 行1,K3行q1无效
lcall 延时5ms
djnz 3fh,K3行q1循环h1
mov 3fh,#5
;---------------------------
mov 缓冲,#3
lcall 数据处理
lcall 显示时间单位
;--------------------------
ljmp 键扫描完成
K3行q1无效: nop
;----------------
;--------------------
; 扫三列 上开始 K3行2,红1
;----------------
K3行q2循环h2: nop
jb 行2,K3行q2无效
lcall 延时5ms
djnz 3fh,K3行q2循环h2
mov 3fh,#5
;---------------------------
mov 缓冲,#6
lcall 数据处理
lcall 显示时间单位
;--------------------------
ljmp 键扫描完成
K3行q2无效: nop
;----------------
;--------------------
; 扫三列
;----------------
mov 3fh,#5
K3行q3循环h3: nop
jb 行3,K3行q3无效
lcall 延时5ms
djnz 3fh,K3行q3循环h3
;---------------------------
mov 缓冲,#9
lcall 数据处理
lcall 显示时间单位
;--------------------------
ljmp 键扫描完成
K3行q3无效: nop
;----------------
;--------------------
; 扫三列 上开始 K3行2,白3
;----------------
mov 3fh,#5
K3行q4循环h4: nop
jb 行4,K3行q4无效
lcall 延时5ms
djnz 3fh,K3行q4循环h4
;---------------------------
mov a,#5ah ;#号键发送数据
lcall 发数据q2
clr 工作灯
;MOV 2FH,#03H ;
lcall 显示时间单位
lcall 显示时间单位
lcall 显示时间单位
lcall 显示时间单位
lcall 显示时间单位
mov a,键值 ;#号键发送数据
lcall 发数据q2
MOV 2FH,#03H
lcall 显示延时 ;延时100ms
mov a,#5ah ;#号键发送数据
lcall 发数据q2
clr 工作灯
;MOV 2FH,#03H ;
lcall 显示时间单位
lcall 显示时间单位
lcall 显示时间单位
lcall 显示时间单位
lcall 显示时间单位
mov a,键值 ;#号键发送数据
lcall 发数据q2
MOV 2FH,#03H
setb 工作灯
;--------------------------
ljmp 键扫描完成
K3行q4无效: nop
nop
lcall 延时1ms
setb 列3
;----------------
键扫描完成: nop
nop
setb 列1
setb 列2
setb 列3
setb 列4
ret
;=========================== |