3、3键控制实验,如数据调整、功能转换等
;电子表程序范例
;K1调整时+1
;K2调整分+1
;P1.1脚LED指示灯隔一秒闪一次
;========================
;
a_bit equ 20h ;数码管个位数存放内存位置
b_bit equ 21h ;数码管十位数存放内存位置
c_bit equ 22h ;数码管百位数存放内存位置
d_bit equ 23h ;千位数值存放内存位置;
ORG 00H
AJMP MAIN
ORG 0BH
AJMP TIMED
ORG 30H
MAIN:MOV SP,#60H
MOV P0,#0FFH
MOV P2,#0FFH
MOV P3,#0FFH
MOV R0,#20H
MOV R7,#7H
TIME:MOV @R0,#00
INC R0
DJNZ R7,TIME
;*************************初始化
MOV TMOD,#01H
MOV TH0,#3CH
MOV TL0,#0B0H
SETB EA
SETB ET0
SETB TR0
TIME1:
ACALL DISP
MOV A,R1
CJNE A,#20,L1
MOV R1,#0
CPL P1.1
;CPL P3.2;蜂鸣器
INC R2
L1: MOV A,R2
CJNE A,#60,L2
MOV R2,#0
INC 24H
L2: MOV A,24H
SUBB A,#60
JNZ L3
MOV 24H,#0H
INC 25H
L3: MOV A,25H
SUBB A,#12
JNZ L4
MOV 25H,#0H
;*********************************
L4:
MOV A,24H
MOV B,#10
DIV AB
MOV A_BIT,B
MOV B_BIT,A
MOV A,25H
MOV B,#10
DIV AB
MOV C_BIT,B
MOV D_BIT,A
AJMP TIME1
RET
;*******************************
TIMED:PUSH PSW
PUSH ACC
MOV TH0,#3CH
MOV TL0,#0B0H
INC R1
POP ACC
POP PSW
RETI
;******************************************显示子程序
DISP:mov dptr,#numtab ;指定查表启始地址
mov a,a_bit ;取个位数
MOVC A,@A+DPTR ;查个位数的7段代码
mov p0,a ;送出个位的7段代码
clr p2.6 ;开个位显示
ACALL DELY1;显示1毫秒
setb p2.6;关闭个位显示,防止鬼影
mov a,b_bit ;取十位数
MOVC A,@A+DPTR ;查代码
mov p0,a ;送出7段代码
clr p2.5 ;开显示
ACALL DELY1;显示1毫秒
setb p2.5;关闭显示,防止鬼影
mov a,c_bit ;取百位数
MOVC A,@A+DPTR ;查代码
mov p0,a ;送出7段代码
clr p2.4 ;开显示
ACALL DELY1;显示1毫秒
setb p2.4;关闭显示,防止鬼影
mov a,D_bit ;取千位数
MOVC A,@A+DPTR ;查代码
mov p0,a ;送7段代码
clr p2.3 ;开显示
ACALL DELY1;显示1毫秒
setb p2.3;关闭显示,防止鬼影
;********************************
C1:JB P3.3,C2
ACALL DELAY10;延时10毫秒消抖
JB P3.3,C1
JNB P3.3,$;等待按键松开
INC 25H
AJMP C5
C2:JB P3.6,C3
ACALL DELAY10;延时10毫秒消抖
JB P3.6,C2
JNB P3.6,$;等待按键松开
INC 24H
AJMP C5
C3:JB P3.7,C5
ACALL DELAY10
JB P3.7,C3
JNB P3.7,$
INC 27H
AJMP C5
;C4:JB P2.6,C5
; ACALL DELAY10
; JB P2.6,C4
; JB P2.6,$
; INC 26H
C5:
ret
;***************************************
;1毫秒延时子程序
DELY1: MOV R4,#2
D1: MOV R5,#248
DJNZ R5,$
DJNZ R4,D1
RET
;10毫秒延时子程序
DELAY10:MOV R4,#20
D2: MOV R5,#248
DJNZ R5,$
DJNZ R4,D2
RET
;实验板上的7段数码管0~9数字的共阴显示代码
numtab:DB 0EBH,00AH,067H,06EH,08EH,0ECH,0EDH,02AH,0EFH,0EEH
END