📄 vfd.asm
字号:
Readkeyend01:
mov a,#0x08
b0mov counter,a
Readkeyend02:
rrcm databuffer
b0bts0 FC
incms counter1 ;keycounter
nop
decms counter
jmp Readkeyend02
b0mov a,counter1 ;keycounter
cmprs a,#0x01
jmp Readkeyend06
b0mov a,keybuffer
cmprs a,keybuffercopy
jmp Readkeyend04
b0bts0 KMINUTE
jmp Readkeyend03
b0bts1 KHOUR
jmp Readkeyend07
Readkeyend03:
b0mov a,keytime
cmprs a,#0
jmp Interruptend
b0bset F_NO_TONE
mov a,#40
jmp Readkeyend05
Readkeyend04:
b0mov a,keybuffer
b0mov keybuffercopy,a
b0bclr F_NO_TONE
mov a,#100
Readkeyend05:
b0mov keytime,a
b0bset F_KEY
jmp Interruptend
Readkeyend06:
b0mov a,keybuffer
b0mov keybuffercopy,a
Readkeyend07:
mov a,#100
b0mov keytime,a
b0bclr F_KEY
b0bclr F_NO_TONE
Interruptend:
clr INTRQ
b0xch a,pflagbuffer
b0xch a,PFLAG
b0xch a,accbuffer
reti
;\\\\\\\\\\\
Tobcd:
b0mov bufferL,a
clr bufferHH
clr bufferH
Tobcd01:
b0mov a,bufferL
sub a,#10
b0bts1 FC
jmp Tobcd02
b0mov bufferL,a
incms bufferH
jmp Tobcd01
Tobcd02:
add a,#10
b0mov bufferL,a
Tobcd03:
b0mov a,bufferH
sub a,#10
b0bts1 FC
jmp Tobcd04
b0mov bufferH,a
incms bufferHH
jmp Tobcd03
Tobcd04:
add a,#10
b0mov bufferH,a
ret
;\\\\\\\\\\
Toseg:
b0mov Y,#Segtable$M
b0mov Z,#Segtable$L
b0mov a,bufferH
add Z,a
movc
b0mov bufferH,a
b0mov Y,#Segtable$M
b0mov Z,#Segtable$L
b0mov a,bufferL
add Z,a
movc
b0mov bufferL,a
ret
;\\\\\\\\\\\\\
;*******************
Pt6312writ:
b0mov databuffer,a
mov a,#0x08
b0mov counter,a
Pt6312writ1:
b0bclr CLK
b0bclr DI
rrcm databuffer
b0bts0 FC
b0bset DI
nop
nop
b0bset CLK
nop
nop
decms counter
jmp Pt6312writ1
nop
nop
ret
;*******************
;********************
Pt6312read:
mov a,#0x08
b0mov counter,a
Pt6312read1:
b0bclr CLK
nop
nop
nop
b0bclr FC
b0bts0 DO
b0bset FC
rrcm databuffer
b0bset CLK
nop
nop
decms counter
jmp Pt6312read1
ret
;**************
;**********************
Clrstatus:
b0bclr F_ON_OFF
b0bclr F_FINISH
mov a,#0
b0mov ledbuffer,a
Clrstatus01:
clr flag1
clr fantime
clr stertime
clr flag4
b0bclr DRY
b0bclr STER
b0bclr FAN
ret
;\\\\\\\\
Sum:
b0mov a,00h
add a,01h
add a,02h
add a,03h
add a,04h
add a,05h
add a,06h
add a,07h
b0mov databuffer,a
ret
;*****************
Start:
clr OSCM
clr PFLAG
mov a,#00000111b
b0mov P1M,a
mov a,#01101111b
b0mov P2M,a
mov a,#0xff
b0mov PUR,a
call Sum
mov a,databuffer
cmprs a,sumbuffer
jmp Verify03
mov a,#0x09
b0mov counter,a
clr Y
clr Z
Verify02:
b0mov a,@YZ
cmprs a,#0x00
jmp Verify04
incms Z
nop
decms counter
jmp Verify02
Verify03:
clr P1
clr P2
Init:
clr Y
clr Z
Init01:
mov a,#0
b0mov @YZ,a
incms Z
mov a,#0x2f
cmprs a,Z
jmp Init01
b0bset TONE_ENABLE
jmp Init02
Verify04:
b0mov a,portacopy
b0mov P1,a
b0mov a,portbcopy
b0mov P2,a
Init02:
mov a,#0xb0 ;1:32
b0mov TC0M,a
mov a,#131 ;0x56
b0mov TC0C,a
b0bset FTC0IEN
b0bset FGIE
clr INTRQ
Main:
b0bset FWDRST
call Sum
b0mov a,databuffer
b0mov sumbuffer,a
b0mov a,P1
b0mov portacopy,a
b0mov a,P2
b0mov portbcopy,a
b0bts1 F_FINISH
jmp Full6312buffer
call Clrstatus
jmp Keyactive01
Full6312buffer:
b0bts1 F_DISPLAY
jmp main00
b0bclr F_DISPLAY
mov a,#00000001b ;5g/16s
b0bclr STB
call Pt6312writ
b0bset STB
mov a,#01000000b ;set display buffer mode
b0bclr STB
call Pt6312writ
b0bset STB
mov a,#11000000b
b0bclr STB
call Pt6312writ ;set address
mov a,#0x00
call Pt6312writ ;set data
mov a,#0x00
call Pt6312writ ;set data
Full6312buffer01:
b0mov a,displaybuffer2
call Pt6312writ ;set data
b0mov a,displaybuffer3
call Pt6312writ ;set data
b0mov a,displaybuffer4
call Pt6312writ ;set data
b0mov a,displaybuffer5
call Pt6312writ ;set data
b0mov a,displaybuffer6
call Pt6312writ ;set data
b0mov a,displaybuffer7
call Pt6312writ ;set data
b0mov a,displaybuffer8
call Pt6312writ ;set data
b0mov a,displaybuffer9
call Pt6312writ ;set data
b0bset STB
mov a,#10001111B ;sets display contorl(command 4)
b0bclr STB
call Pt6312writ
b0bset STB
main00:
b0bts1 F_KEY
jmp Main
b0bclr F_KEY
b0bts0 KPOWER
jmp Poweractive
b0bts0 KLIGHT
jmp Lightactive
b0bts0 KHOUR
jmp Houractive
b0bts0 KMINUTE
jmp Minuteactive
b0bts1 F_ON_OFF
jmp Main
b0bts0 KSTER90
jmp Ster90active
b0bts0 KSTER45
jmp Ster45active
b0bts0 KDRY30
jmp Dry30active
b0bts1 KDRY60
jmp Main
;\\\\\\\\\\\\\\\\\\\\\\\\\\\
Dry60active:
b0bts0 F_STER
jmp Dry60active02
Dry60active01:
clr flag2
b0bset F_DRY60
b0mov a,flag2
b0mov ledbuffer,a
call Clrstatus01
mov a,#60
jmp Dry30active02
Dry60active02:
b0bts0 F_DISPLAY_FLASH60
jmp Dry60active04
b0bset F_DISPLAY_FLASH60
b0bclr F_DISPLAY_FLASH30
b0bset F_DISPLAY_FLASH
b0bclr F_MINUTE
b0mov a,Dminute_dry
sub a,#60
b0bts0 FC
jmp Dry60active03
mov a,#60
b0mov Dminute_dry,a
Dry60active03:
mov a,#10
b0mov delaybuffer,a
b0bset F_DELAY
jmp Keyactive01
Dry60active04:
clr flag4
b0bts1 F_MINUTE
jmp Dry60active01
b0bclr F_MINUTE
jmp Keyactive01
;\\\\\\\\\\\\\\\\\\\\\\\\\\\
;********************
Poweractive:
b0bts1 F_ON_OFF
jmp Poweractive01
call Clrstatus
jmp Keyactive01
Poweractive01:
b0bset F_ON_OFF
jmp Ster90active
;***********
Dry30active:
b0bts0 F_STER
jmp Dry30active03
Dry30active01:
clr flag2
b0bset F_DRY30
b0mov a,flag2
b0mov ledbuffer,a
call Clrstatus01
mov a,#30
b0bset FAN
b0bset F_FAN
Dry30active02:
b0bset F_DRY
b0bset DRY
;\\\\\\\\\\\\\\\\\\\\\\\\\\\
Keyactive:
b0mov Dminute,a
clr Dsecond
Keyactive01:
clr flashtime
b0bset F_FLASH1
b0bts0 F_NO_TONE
jmp Main
b0bset TONE_ENABLE
clr tonetime
jmp Main
;*******************
Dry30active03:
b0bts0 F_DISPLAY_FLASH30
jmp Dry30active04
b0bset F_DISPLAY_FLASH30
b0bclr F_DISPLAY_FLASH60
b0bset F_DISPLAY_FLASH
b0bclr F_MINUTE
b0mov a,Dminute_dry
sub a,#60
b0bts1 FC
jmp Dry60active03
mov a,#30
b0mov Dminute_dry,a
jmp Dry60active03
Dry30active04:
clr flag4
b0bts1 F_MINUTE
jmp Dry30active01
b0bclr F_MINUTE
jmp Keyactive01
;\\\\\\\\\\\\\\\\\\\\\\\\\\\
Lightactive:
b0bts0 F_LIGHT
jmp Lightactive01
b0bset F_LIGHT
b0bset LIGHT
jmp Keyactive01
Lightactive01:
b0bclr F_LIGHT
b0bclr LIGHT
jmp Keyactive01
;\\\\\\\\\\\\\\\\\\\\\\\\\\\
Houractive:
b0bts0 F_ON_OFF
jmp Houractive02
Houractive01:
incms hour
nop
b0mov a,hour
sub a,#12
b0bts0 FC
clr hour
jmp Keyactive01
Houractive02:
mov a,#0x05
b0mov delaybuffer,a
b0bts0 F_DELAY
jmp Houractive01
b0bset F_DELAY
jmp Keyactive01
;\\\\\\\\\\\\\\\\\\\\\\\\\\\
Minuteactive:
b0bts0 F_ON_OFF
jmp Minuteactive02
Minuteactive01:
incms minute
nop
b0mov a,minute
sub a,#60
b0bts0 FC
clr minute
jmp Keyactive01
Minuteactive02:
b0bts0 F_DISPLAY_FLASH30
jmp Dry30_time_ster
b0bts0 F_DISPLAY_FLASH60
jmp Dry60_time_ster
incms Dminute
nop
b0bts0 F_STER90
jmp Ster90_time
b0bts0 F_STER45
jmp Ster45_time
b0bts0 F_DRY60
jmp Dry60_time
b0bts0 F_DRY30
jmp Dry30_time
b0bts0 F_DELAY
jmp Minuteactive01
jmp Main
Dry30_time:
b0mov a,Dminute
sub a,#60
b0bts1 FC
jmp Keyactive01
mov a,#30
jmp Keyactive
Dry60_time:
b0mov a,Dminute
sub a,#121
b0bts1 FC
jmp Keyactive01
mov a,#60
jmp Keyactive
Ster45_time:
b0mov a,Dminute
sub a,#90
b0bts1 FC
jmp Keyactive01
mov a,#45
jmp Keyactive
Ster90_time:
b0mov a,Dminute
sub a,#241
b0bts1 FC
jmp Keyactive01
mov a,#90
jmp Keyactive
;\\\\\\\\\\\\\\\\\\\\\\\\\\\
Dry30_time_ster:
incms Dminute_dry
nop
b0mov a,Dminute_dry
sub a,#60
b0bts1 FC
jmp Dry60_time_ster01
mov a,#30
b0mov Dminute_dry,a
jmp Dry60_time_ster01
Dry60_time_ster:
incms Dminute_dry
nop
b0mov a,Dminute_dry
sub a,#121
b0bts1 FC
jmp Dry60_time_ster01
mov a,#60
b0mov Dminute_dry,a
Dry60_time_ster01:
mov a,#15
b0mov delaybuffer,a
b0bset F_DELAY
b0bset F_MINUTE
b0bclr F_FLASH
clr flashtime
jmp Keyactive01
;\\\\\\\\\\\\\\\\\\\\\\\\\\\
Ster90active:
mov a,#60
b0mov Dminute_Dry,a
clr flag2
b0bset F_STER90
b0mov a,flag2
b0mov ledbuffer,a
call Clrstatus01
mov a,#90
jmp Ster45active01
;\\\\\\\\\\\\\\\\\\\\\\\\\\\
Ster45active:
mov a,#60
b0mov Dminute_Dry,a
clr flag2
b0bset F_STER45
b0mov a,flag2
b0mov ledbuffer,a
call Clrstatus01
mov a,#45
Ster45active01:
b0bset F_STER
b0bset STER
clr ozone
jmp Keyactive
;\\\\\\\\\\\\
AdjDisplay:
b0bts1 F_STER90
jmp AdjDisplay01
mov a,Dminute
sub a,#45
b0bts0 FC
ret
b0bclr F_STER90
b0bset F_STER45
b0mov a,flag2
b0mov ledbuffer,a
ret
AdjDisplay01:
b0bts1 F_DRY60
ret
mov a,Dminute
sub a,#30
b0bts0 FC
ret
b0bclr F_DRY60
b0bset F_Dry30
b0mov a,flag2
b0mov ledbuffer,a
ret
;\\\\\\\\\\\\\\\\\\\\\\\\\
StertableH: ;x2345678
dw 0xff00 ;00000000b ;
dw 0xff40 ;01000000b ;s2
dw 0xff48 ;01001000b ;s2,s5
dw 0xff49 ;01001001b ;s2,s5,s8
dw 0xff00 ;00000000b ;
dw 0xff20 ;00100000b ;s3
dw 0xff24 ;00100100b ;s3,s6
dw 0xff00 ;00000000b ;
dw 0xff10 ;00010000b ;s4
dw 0xff12 ;00010010b ;s4,s7
StertableL:
dw 0xff10 ;00010000b ;1
dw 0xff18 ;00011000b ;2b2
dw 0xff1c ;00011100b ;3b3
dw 0xff1e ;00011110b ;4b4
dw 0xff1f ;00011111b ;5b5
Segtable:
; XDECGFBA
dw 0xffee ;01110111b ;0
dw 0xff48 ;00010010b ;1
dw 0xffd6 ;01101011b ;2
dw 0xffda ;01011011b ;3
dw 0xff78 ;00011110b ;4
dw 0xffba ;01011101b ;5
dw 0xffbe ;01111101b ;6
dw 0xffe8 ;00010111b ;7
dw 0xfffe ;01111111b ;8
dw 0xfffa ;01011111b ;9
Stertable:
;x1234567
dw 0xff00 ;00000000b ;
dw 0xff08 ;00001000b ;s4
dw 0xff18 ;00011000b ;s4,s3
dw 0xff1c ;00011100b ;s4,s3,s5
dw 0xff3c ;00111100b ;s4,s3,s5,s2
dw 0xff3e ;00111110b ;s4,s3,s5,s2,s6
dw 0xff7e ;01111110b ;s4,s3,s5,s2,s6,s1
dw 0xff7f ;01111111b ;s4,s3,s5,s2,s6,s1,s7
;;*******
endp
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -