📄 set.asm
字号:
mov a,#20h
lcall display3
mov b,#8bh
lcall enable
power1:cjne a,#8bh,power2
mov b,#86h
mov gbbuf,b
lcall enable
mov a,#7eh
lcall display3
mov b,#8bh
lcall enable
mov a,#20h
lcall display3
mov b,#86h
lcall enable
power2:ajmp main
;----------------按键处理1--------------------------------
plus: mov output,#0ffh
clr keyboard
mov a,output
setb keyboard
jnb acc.0,plus
mov a,symbol2
cjne a,#1,plu1
mov symbol2,#00
ajmp plus0
plu1: mov a,symbol1
cjne a,#1,plu2 ;对温度进行加一
lcall lop01
plu2: cjne a,#2,plu3 ;对输入的密码加一
lcall lop21
plu3: ajmp main
reduce:mov output,#0ffh
clr keyboard
mov a,output
setb keyboard
jnb acc.2,reduce
mov a,symbol2
cjne a,#1,reduc1
mov symbol2,#0
ajmp reduc0
reduc1:mov a,symbol1
cjne a,#1,reduc2 ;对温度进行减一
lcall lop02
reduc2:cjne a,#2,reduc3 ;对输入的密码减一
lcall lop22
reduc3:ajmp main
menu: mov output,#0ffh
clr keyboard
mov a,output
setb keyboard
jnb acc.4,menu
mov signal,#31h ;初始时显示1
mov gbbuf,#80h
ajmp menu1
ajmp main
;----------------按键判断---------------------------------
key: mov output,#0ffh
clr keyboard
mov a,output
setb keyboard
jnb acc.0,plus
jnb acc.1,left
jnb acc.2,reduce
jnb acc.3,right
jnb acc.4,menu
jnb acc.5,enter
ljmp main
;-----------------按键处理2--------------------------------
enter:mov output,#0ffh
clr keyboard
mov a,output
setb keyboard
jnb acc.5,enter
lcall ente0
ajmp menu1
left: mov output,#0ffh
clr keyboard
mov a,output
setb keyboard
jnb acc.1,left
mov b,#0eh
lcall enable
mov a,symbol1
cjne a,#3,lef0
ajmp elemen0
lef0: cjne a,#4,lef1
ajmp power0
lef1: mov a,gbbuf
dec a
mov gbbuf,a
mov b,gbbuf
lcall enable
mov gbbuf,b
loop9:ajmp main
right:mov output,#0ffh
clr keyboard
mov a,output
setb keyboard
jnb acc.3,right
mov b,#0eh
lcall enable
mov a,symbol1
cjne a,#3,righ0
ajmp elemen1
righ0:cjne a,#4,righ1
ajmp power0
righ1:mov a,gbbuf
inc a
mov gbbuf,a
mov b,gbbuf
lcall enable
mov gbbuf,b
loop8:ajmp main
;-----------------确认功能键属性--------------------------
ente0:mov symbol1,#0
mov a,signal
cjne a,#31h,ente1
mov signal,#30h
lcall settemp
ente1:cjne a,#32h,ente2
mov signal,#30h ;伪,为了使下次按enter是不会一直跳在此界面
lcall setcode
ente2:cjne a,#33h,ente3
mov signal,#30h
lcall chooseys
ente3:cjne a,#34h,ente4
mov signal,#30h
lcall choosedy
ente4:cjne a,#35h,ente5
mov signal,#30h
lcall ldjz
ente5:cjne a,#36h,ente6
mov signal,#30h
lcall help
ente6:mov gbbuf,#80h
mov signal,#31h
ret
;-----------------温度设置子程序--------------------------
settemp:lcall busy
mov b,#01h
lcall enable
mov b,#80h ;温度的设置
lcall enable
mov dptr,#table9
lcall display
mov b,#0c0h
lcall enable
mov a,tempbuf1
lcall display3
mov b,#0c1h
lcall enable
mov a,tempbuf2
lcall display3
mov b,#0c2h
lcall enable
mov a,#0dfh
lcall display3
mov b,#0c3h
lcall enable
mov a,#43h
lcall display3
mov b,#0c0h
mov gbbuf,b
lcall enable
mov symbol1,#1
mov symbol2,#0
ajmp main
;-----------------密码设置子程序--------------------------
setcode:lcall busy
mov b,#01h
lcall enable
mov b,#80h ;密码的设置
lcall enable
mov dptr,#table10
lcall display
mov b,#0c5h
lcall enable
mov a,codebuf1
lcall display3
mov b,#0c6h
lcall enable
mov a,codebuf2
lcall display3
mov b,#0c7h
lcall enable
mov a,codebuf3
lcall display3
mov b,#0c8h
lcall enable
mov a,codebuf4
lcall display3
mov b,#0c5h
mov gbbuf,b
lcall enable
mov symbol1,#2
mov symbol2,#0
ajmp main
;-----------------选择元素子程序--------------------------
chooseys:lcall busy
mov b,#01h
lcall enable
mov b,#80h ;温度的设置
lcall enable
mov dptr,#table11
lcall display
mov b,#88h
mov gbbuf,b
lcall enable
mov symbol1,#3
ajmp main
;-----------------选择电源--------------------------
choosedy:lcall busy
mov b,#01h
lcall enable
mov b,#80h ;温度的设置
lcall enable
mov dptr,#table12
lcall display
mov b,#86h
mov gbbuf,b
lcall enable
mov a,#7eh
lcall display3
mov b,#86h
lcall enable
mov symbol1,#4
ajmp main
;-----------------零点校正子程序--------------------------
ldjz: lcall busy
mov b,#01h
lcall enable
mov b,#80h ;温度的设置
lcall enable
mov dptr,#table13
lcall display
mov b,#86h
mov gbbuf,b
lcall enable
ajmp main
;-----------------帮助子程序--------------------------
help: lcall busy
mov b,#01h
lcall enable
mov b,#80h ;温度的设置
lcall enable
mov dptr,#table14
lcall display
ajmp main
;-----------------busy or not-----------------------------
busy: push acc ;正常读写操作之前必须检测LCD控制器状态
mov output,#0ffH
clr rs ;RS=0 RW=1 E=高电平
setb rw
setb e
wait: nop ;DB7: 0 LCD控制器空闲
jb p0.7,wait ; 1 LCD控制器忙
clr e
pop acc
RET
;-----------------写入程序寄存器--------------------------
enable:clr rs ;写指令到寄存器
clr rw
clr e ;先禁止,在第二次进入的时候就有效了
lcall delay
mov output,b
setb e
clr e
ret
;------------------写入数据寄存器,显示-------------------
display: mov r1,#00h
loop1: mov a,r1
movc a,@a+dptr
clr rw ;写数据到寄存器
setb rs
mov output,a
setb e
lcall delay
clr e
inc r1
cjne a,#00h,loop1
ret
;----------------显示-------------------------------------
display3:clr rw
setb rs
mov output,a
setb e
lcall delay
clr e
ret
;----------------键盘中断---------------------------------
ankey:push acc
push psw
setb key_bit
clr lcd_bg
mov tl1,#00h ;重载定时器初值
mov th1,#4ch
mov r4,#100
pop psw
pop acc
reti
;----------------T0定时计数器-----------------------------
lowlight: push acc
push psw
mov tl1,#00h ;重载定时器初值
mov th1,#4ch
djnz r4, exita
mov r4,#100
setb lcd_jd
exita: pop psw
pop acc
reti
;----------------延时程序---------------------------------
delay:mov r7,#100 ;1ms延时
loop2:mov r6,#20
loop3:djnz r6,loop3
djnz r7,loop2
ret
table1:db 'welcome to use ',00h
table2:db 'the system ',00h
table3:db 'set temperature ',00h
table4:db 'set code ',00h
table5:db 'choose element ',00h
table6:db 'choose power ',00h
table7:db 'check zero point',00h
table8:db 'help ',00h
table9:db ' Temperature is',00h
table10:db 'input the code: ',00h
table11:db 'element:H;C;O;F;',00H
table12:db 'power: cell 9vAC',00H
table13:db 'zero: 0-0-0-0 ',00h
table14:db 'ask your friends',00h
end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -