📄 vfd.asm
字号:
Readkeyend01: mov a,#0x08 b0mov counter,aReadkeyend02: 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 Readkeyend07Readkeyend03: b0mov a,keytime cmprs a,#0 jmp Interruptend b0bset F_NO_TONE mov a,#40 jmp Readkeyend05Readkeyend04: b0mov a,keybuffer b0mov keybuffercopy,a b0bclr F_NO_TONE mov a,#100Readkeyend05: b0mov keytime,a b0bset F_KEY jmp InterruptendReadkeyend06: b0mov a,keybuffer b0mov keybuffercopy,a Readkeyend07: mov a,#100 b0mov keytime,a b0bclr F_KEY b0bclr F_NO_TONEInterruptend: clr INTRQ b0xch a,pflagbuffer b0xch a,PFLAG b0xch a,accbuffer reti ;\\\\\\\\\\\Tobcd: b0mov bufferL,a clr bufferHH clr bufferHTobcd01: b0mov a,bufferL sub a,#10 b0bts1 FC jmp Tobcd02 b0mov bufferL,a incms bufferH jmp Tobcd01Tobcd02: add a,#10 b0mov bufferL,aTobcd03: b0mov a,bufferH sub a,#10 b0bts1 FC jmp Tobcd04 b0mov bufferH,a incms bufferHH jmp Tobcd03Tobcd04: 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,aPt6312writ1: 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,aPt6312read1: 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,aClrstatus01: 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 ZVerify02: b0mov a,@YZ cmprs a,#0x00 jmp Verify04 incms Z nop decms counter jmp Verify02Verify03: clr P1 clr P2Init: clr Y clr ZInit01: mov a,#0 b0mov @YZ,a incms Z mov a,#0x2f cmprs a,Z jmp Init01 b0bset TONE_ENABLE jmp Init02Verify04: b0mov a,portacopy b0mov P1,a b0mov a,portbcopy b0mov P2,aInit02: mov a,#0xb0 ;1:32 b0mov TC0M,a mov a,#131 ;0x56 b0mov TC0C,a b0bset FTC0IEN b0bset FGIE clr INTRQMain: 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 Keyactive01Full6312buffer: 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 dataFull6312buffer01: 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 Dry30active02Dry60active02: 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 Keyactive01Dry60active04: clr flag4 b0bts1 F_MINUTE jmp Dry60active01 b0bclr F_MINUTE jmp Keyactive01;\\\\\\\\\\\\\\\\\\\\\\\\\\\ ;********************Poweractive: b0bts1 F_ON_OFF jmp Poweractive01 call Clrstatus jmp Keyactive01Poweractive01: b0bset F_ON_OFF jmp Ster90active;*********** Dry30active: b0bts0 F_STER jmp Dry30active03Dry30active01: clr flag2 b0bset F_DRY30 b0mov a,flag2 b0mov ledbuffer,a call Clrstatus01 mov a,#30 b0bset FAN b0bset F_FANDry30active02: b0bset F_DRY b0bset DRY ;\\\\\\\\\\\\\\\\\\\\\\\\\\\ Keyactive: b0mov Dminute,a clr DsecondKeyactive01: 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 Dry60active03Dry30active04: clr flag4 b0bts1 F_MINUTE jmp Dry30active01 b0bclr F_MINUTE jmp Keyactive01;\\\\\\\\\\\\\\\\\\\\\\\\\\\ Lightactive: b0bts0 F_LIGHT jmp Lightactive01 b0bset F_LIGHT b0bset LIGHT jmp Keyactive01Lightactive01: b0bclr F_LIGHT b0bclr LIGHT jmp Keyactive01;\\\\\\\\\\\\\\\\\\\\\\\\\\\Houractive: b0bts0 F_ON_OFF jmp Houractive02Houractive01: incms hour nop b0mov a,hour sub a,#12 b0bts0 FC clr hour jmp Keyactive01Houractive02: mov a,#0x05 b0mov delaybuffer,a b0bts0 F_DELAY jmp Houractive01 b0bset F_DELAY jmp Keyactive01;\\\\\\\\\\\\\\\\\\\\\\\\\\\ Minuteactive: b0bts0 F_ON_OFF jmp Minuteactive02Minuteactive01: incms minute nop b0mov a,minute sub a,#60 b0bts0 FC clr minute jmp Keyactive01Minuteactive02: 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 MainDry30_time: b0mov a,Dminute sub a,#60 b0bts1 FC jmp Keyactive01 mov a,#30 jmp KeyactiveDry60_time: b0mov a,Dminute sub a,#121 b0bts1 FC jmp Keyactive01 mov a,#60 jmp KeyactiveSter45_time: b0mov a,Dminute sub a,#90 b0bts1 FC jmp Keyactive01 mov a,#45 jmp KeyactiveSter90_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_ster01Dry60_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,aDry60_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,#45Ster45active01: 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 retAdjDisplay01: 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,s7StertableL: dw 0xff10 ;00010000b ;1 dw 0xff18 ;00011000b ;2b2 dw 0xff1c ;00011100b ;3b3 dw 0xff1e ;00011110b ;4b4 dw 0xff1f ;00011111b ;5b5Segtable:; 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 ;9Stertable: ;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 + -