📄 display.asm
字号:
;**********************************************
;Name :mndisplay
;Function:
;Input :
;Output :
;Register Used:
;***********************************************
mndisplay:
b0bts0 stoprunflag
jmp mndisplay90 ;关机状态下,关闭所有显示
call p2output ;如果显示闪动,时间改小(可以用跑一个循环显示一次)
;-------
mov a,#11110000b
or p4,a
bset ptcom5
bset ptcom6
call delay_10us
;--------------------------------
b0bts0 com1flag
jmp displaycom2
mov a,seg1buf
mov p2,a
mov a,combuf
and p4,a
jmp mndisplay80
;--------------------------------
displaycom2:
b0bts0 com2flag
jmp displaycom3
mov a,seg2buf
mov p2,a
mov a,combuf
and p4,a
jmp mndisplay80
;--------------------------------
displaycom3:
b0bts0 com3flag
jmp displaycom4
mov a,seg3buf
mov p2,a
mov a,combuf
and p4,a
jmp mndisplay80
;--------------------------------
displaycom4:
b0bts0 com4flag
jmp mndisplay90
mov a,seg4buf
mov p2,a
mov a,combuf
and p4,a
mov_ combuf,#11101111b
ret
;--------------------------------
mndisplay80:
bset fc
rlcm combuf
;-----
mndisplay90:
ret
;**********************************************
;Name :mntwinkle
;Function:
;Input :
;Output :
;Register Used:
;***********************************************
mntwinkle:
b0bts0 malfunctionflag
jmp mntwinkle80
b0bts1 timecomeflag
jmp mntwinkle90
;------
mntwinkle80:
b0bts1 ledfrequentflag
jmp mntwinkle90
;------
bclr ledfrequentflag
;-------------------
b0bts1 frieddishflag
jmp mntwinkle10
;---
notbit frieddishled
jmp mntwinkle90
;--------------------
mntwinkle10:
b0bts1 chaffydishflag
jmp mntwinkle20
;---
notbit chaffydishled
jmp mntwinkle90
;--------------------
mntwinkle20:
b0bts1 barbecueflag
jmp mntwinkle30
;---
notbit barbecueled
jmp mntwinkle90
;--------------------
mntwinkle30:
b0bts1 cookingflag
jmp mntwinkle40
;---
notbit cookingled
jmp mntwinkle90
;--------------------
mntwinkle40:
b0bts1 soupingflag
jmp mntwinkle50
;---
notbit soupingled
jmp mntwinkle90
;--------------------
mntwinkle50:
b0bts1 warmmilkflag
jmp mntwinkle60
;---
notbit warmmilkled
jmp mntwinkle90
;--------------------
mntwinkle60:
b0bts1 boilwaterflag
jmp mntwinkle90
;---
notbit boilwaterled
jmp mntwinkle90
;--------------------
mntwinkle90:
ret
;**********************************************
;Name :mngetdata
;Function:
;Input :
;Output :
;Register Used:temp3
;***********************************************
mngetdata:
b0bts0 refurbishflag
jmp mngetdata70 ;刷新显示
;// b0bts1 operateflag ;只有在使能工作下,进入该程序
;// jmp mngetdata90
b0bts1 timekeyflag
jmp mngetdata90
b0bts1 t1mflag
jmp mngetdata90
;----
bclr t1mflag ;到计时
;----
mov a,timerbuf
and a,#0fh
sub a,#1
b0bts0 fc
jmp mngetdata60
;----
mov a,timerbuf
sub a,#10h
or a,#09h
mov timerbuf,a
jmp mngetdata70
;----
mngetdata60:
decms timerbuf
jmp mngetdata70
jmp mngetdata80 ;定时到
;----
mngetdata70:
bclr refurbishflag
;----
;求得个位值
b0mov y,#font_tbl$m
b0mov z,#font_tbl$l
mov a,timerbuf
and a,#0fh
add z,a
mov a,#0
adc y,a
movc
mov seg2buf,a
;----
;求得十位值
b0mov y,#font_tbl$m
b0mov z,#font_tbl$l
swap timerbuf
and a,#0fh
b0bts0 fz
jmp hidedisplay
add z,a
mov a,#0
adc y,a
movc
mov seg1buf,a
ret
;-----
hidedisplay:
mov_ seg1buf,#0ffh
ret
;------------------
mngetdata80:
;-----
b0bts0 firstsettimeflag
jmp mngetdata50
mov_ seg2buf,#0ffh
bset timecomeflag
bclr timekeyflag
bclr ptcout ;close IGBT
bclr fpwm1out
bclr ftc1enb ;stop t1 count
ret
;-----
mngetdata50:
bclr timekeyflag
bclr firstsettimeflag
bset timecomeflag
;----
mngetdata90:
ret
/*
;********************************************
;name:conv_hex_bcd
;function:小于10000的十六进制转换BCD码(要作10000以上的加个条件判断)
;input: hexh,hexl
;output:bcdh,bcdl
;register:
;********************************************
conv_hex_bcd:
clr bcdl
clr bcdh
gethighnibble:
mov a,hexl
sub a,#100
mov hexl,a
b0bts1 fc
jmp getmidnibble10
;----
highnibbleinc:
mov a,#1
add bcdh,a
mov a,bcdh
and a,#0fh
sub a,#0ah
b0bts1 fc
jmp gethighnibble
mov a,#06h
add bcdh,a
jmp gethighnibble
;----
getmidnibble10:
mov a,hexh
sub a,#1
mov hexh,a
b0bts1 fc
jmp getmidnibble00
jmp highnibbleinc
;----
getmidnibble00:
mov a,#100
add hexl,a
getmidnibble:
mov a,hexl
sub a,#10
mov hexl,a
b0bts1 fc
jmp getlownibble00
incms bcdl
nop
jmp getmidnibble
;----
getlownibble00:
add a,#10
swapm bcdl
or bcdl,a
ret
;********************************************
;name:conv_bcd_hex
;function:小于10000的BCD码转换为十六进制
;input: bcdl,bcdh
;output:hexl,hexh
;register:var3,var4,var5,var6,var7,var8
;********************************************
conv_bcd_hex:
clr var3
clr var4
clr var5
clr var6
;----
;x1000
swap bcdh
and a,#0fh
mov var7,a
mov_ var8,#8
mov_ var3,#0e8h
mov_ var4,#03h
call mulsub ;two byte multiply
mov_ hexl,var5
mov_ hexh,var6
;----
;x100
clr var3
clr var4
clr var5
clr var6
mov a,bcdh
and a,#0fh
mov var7,a
mov_ var8,#8
mov a,#100
mov var3,a
call mulsub ;two byte multiply
mov a,var5
add hexl,a
mov a,var6
adc hexh,a
;----
;x10
clr var3
clr var4
clr var5
clr var6
swap bcdl
and a,#0fh
mov var7,a
mov_ var8,#8
mov a,#10
mov var3,a
call mulsub ;two byte multiply
mov a,var5
add hexl,a
mov a,var6
adc hexh,a
;----
;x1
mov a,bcdl
and a,#0fh
add hexl,a
mov a,#0
adc hexh,a
ret
;**********************************************
;两个BYTE的数相乘
mulsub:
bclr fc
rrcm var7
b0bts1 fc
jmp deccount
mov a,var3
add var5,a
mov a,var4
adc var6,a
;----
deccount:
decms var8
jmp adjustposition
ret
;----
adjustposition:
bclr fc
rlcm var3
rlcm var4
jmp mulsub
*/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -