📄 main.asm
字号:
org 00h ;开始
MOV P1,#00H;开机电压置0
SETB P3.7
SETB P3.6
SETB P3.5
start:
V15:;1.5伏
LCALL DELAY2;防按鍵抖动
MOV P1,#03H;1.5V数据量
;-----------------------------------
B1:
CLR P2.6
CLR P2.7
lcall delay_us
MOV P0,#10000110B;显示1和小数点
SETB P2.6
CLR P2.7
LCALL delay
CLR P2.6
CLR P2.7
lcall delay_us
MOV P0,#11101101B;显示5
CLR P2.6
SETB P2.7
LCALL delay
;JNB P3.5,T;关机
;JNB P3.6,V3;减
;JNB P3.7,S1;增
;-------KEY1
K_1:
JNB P3.5,key_1;减键
jmp K2_1
key_1:
lcall delay_us
jnb P3.5,T
;-------KEY2
K2_1:
JNB P3.6,key2_1;减键
jmp K3_1
key2_1:
lcall delay_us
jnb P3.6,V3
;-------KEY3
K3_1:
JNB P3.7,key3_1;减键
jmp B1
key3_1:
lcall delay_us
jnb P3.7,S1
JMP B1
;-------------------------------------
T:LJMP V12;因为程序太长,不能直接转移,所以要用长调用命令!
S1:LJMP STOP;因为程序太长,不能直接转移,所以要用长调用命令!
V3:;3伏
LCALL DELAY2
MOV P1,#1bH;3V数据量
B2:
CLR P2.6
CLR P2.7
lcall delay_us
MOV P0,#00111111B;显示0
SETB P2.6
CLR P2.7
LCALL delay
CLR P2.6
CLR P2.7
lcall delay_us
MOV P0,#01001111B;显示3
CLR P2.6
SETB P2.7
LCALL delay
;JNB P2.4,S2;检测是否短路,过流。
;JNB P3.5,S2;关机
;JNB P3.6,V15;减
;JNB P3.7,V42;增
K_2:
JNB P3.5,key_2;减键
jmp K2_2
key_2:
lcall delay_us
jnb P3.5,T
;-------KEY2
K2_2:
JNB P3.6,key2_2;减键
jmp K3_2
key2_2:
lcall delay_us
jnb P3.6,V3
;-------KEY3
K3_2:
JNB P3.7,key3_2;减键
jmp B1
key3_2:
lcall delay_us
jnb P3.7,S1
JMP B2
S2:LJMP STOP
V42:;4.2伏
LCALL DELAY2
MOV P1,#2FH;4.2V数据量
B3:
CLR P2.6
CLR P2.7
lcall delay_us
MOV P0,#11100110B;显示4和小数点
SETB P2.6
CLR P2.7
LCALL delay
CLR P2.6
CLR P2.7
lcall delay_us
MOV P0,#11011011B;显示2
CLR P2.6
SETB P2.7
LCALL delay
JNB P2.4,S3;检测是否短路,过流。
JNB P3.5,s3;关机
JNB P3.6,V3;减
JNB P3.7,V5;增
JMP B3
S3:LJMP STOP
V5:;5伏
LCALL DELAY2
MOV P1,#3FH;5V数据量
B4:
CLR P2.6
CLR P2.7
lcall delay_us
MOV P0,#00111111B;显示0
SETB P2.6
CLR P2.7
LCALL delay
CLR P2.6
CLR P2.7
lcall delay_us
MOV P0,#01101101B;5
CLR P2.6
SETB P2.7
LCALL delay
JNB P2.4,S4;检测是否短路
JNB P3.5,s4;关机
JNB P3.6,V42;减
JNB P3.7,V6;增
JMP B4
S4:LJMP STOP
V6:;6伏
LCALL DELAY2
MOV P1,#4EH;6V数据量
B5:
CLR P2.6
CLR P2.7
lcall delay_us
MOV P0,#00111111B;显示0
SETB P2.6
CLR P2.7
LCALL delay
CLR P2.6
CLR P2.7
lcall delay_us
MOV P0,#01111101B;显示6
CLR P2.6
SETB P2.7
LCALL delay
JNB P2.4,S5;检测是否短路
JNB P3.5,S5;关机
JNB P3.6,V5;减
JNB P3.7,V84;增
JMP B5
S5:LJMP STOP
V84:;8.4伏
LCALL DELAY2
MOV P1,#78H;8.4V数据量
B6:
CLR P2.6
CLR P2.7
lcall delay_us
MOV P0,#11111111B;显示8
SETB P2.6
CLR P2.7
LCALL delay
CLR P2.6
CLR P2.7
lcall delay_us
MOV P0,#11100110B;显示4
CLR P2.6
SETB P2.7
LCALL delay
JNB P2.4,STOP;检测是否短路
JNB P3.5,STOP;关机
JNB P3.6,V6;减
JNB P3.7,V12;增
JMP B6
V12:;12伏
LCALL DELAY2
MOV P1,#0B4H;12V数据量
B7:
CLR P2.6
CLR P2.7
lcall delay_us
MOV P0,#00000110B;显示1
SETB P2.6
CLR P2.7
LCALL delay
CLR P2.6
CLR P2.7
lcall delay_us
MOV P0,#01011011B;显示2
CLR P2.6
SETB P2.7
LCALL delay
JNB P2.4,STOP;检测是否短路
JNB P3.5,STOP;关机
JNB P3.6,V84;减
JNB P3.7,T2;增
JMP B7
T2:JMP V15
STOP:;关机
LCALL DELAY2
MOV P1,#00H;令LM317电压最低
STOP2:
CLR P2.6
CLR P2.7
lcall delay_us
MOV P0,#00111111B;显示O
SETB P2.6
CLR P2.7
LCALL delay
CLR P2.6
CLR P2.7
lcall delay_us
MOV P0,#01110001B;显示F
CLR P2.6
SETB P2.7
LCALL delay
JNB P3.5,ST;再次开机
jNb p3.6,st;再次开机
jNb p3.7,st;再次开机
JMP STOP2
ST:LJMP V15
delay: MOV R2,#70;延时子程序
L1001: mov R3,#100
DJNZ R3,$
DJNZ R2, L1001
ret
delay_us:
mov R3,#220
DJNZ R3,$
ret
DELAY2:;延时子程序
MOV R6,#3
D2:MOV R4,#80
D3:MOV R5,#100
DJNZ R5,$
DJNZ R4,D3
djnz r6,d2
RET
end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -