📄 vfd.asm
字号:
;************************************;ster program ;crystal:3.58MHz;MCU: PIC16C54(CF745 or MDT2005 or EM78P156 or NT66P20A);************************************; LIST P=16C54,F=INHX8M; Processor snp1602 chip sn8p1602ap//{{SONIX_CODE_OPTION .Code_Option OSG Enable .Code_Option High_Clk 4M_X'tal .Code_Option High_Clk/2 Disable .Code_Option Security Enable .Code_Option Watch_Dog Enable .Code_Option Int_16K_RC Always_ON//}}SONIX_CODE_OPTION; include f:\flash\sonix\user_inc\sn8p1602h.incflag1 equ 00hflag2 equ 01hflag3 equ 02hsecond equ 03hhour equ 04hminute equ 05hDminute equ 06hDsecond equ 07hsumbuffer equ 08hsterbuffer equ 09hfantime equ 0ahfanbuffer equ 0bhdatabuffer equ 0chbufferHH equ 0dhkeybuffer equ 0ehcounter equ 0fhsterbuffer1 equ 10hkeybuffercopy equ 11htonetime equ 12hbufferH equ 13hbufferL equ 14htimer1 equ 15hdelaybuffer equ 16htimer equ 17hcounter1 equ 18hportbcopy equ 19hportacopy equ 1ahflashtime equ 1bhozone equ 1chaccbuffer equ 1dhpflagbuffer equ 1ehflag4 equ 1fhdisplaybuffer2 equ 20hdisplaybuffer3 equ 21hdisplaybuffer4 equ 22hdisplaybuffer5 equ 23hdisplaybuffer6 equ 24hdisplaybuffer7 equ 25hdisplaybuffer8 equ 26hdisplaybuffer9 equ 27hkeycounter equ 28hkeybuffer1 equ 29hledbuffer equ 2ahtimer2 equ 2bhDminute_Dry equ 2chkeytime equ 2dhstertime equ 2ehtimer3 equ 2fh;***********;BIT DEFINITION;*****************;************CLK EQU P1.0 ;OUTPUT STB EQU P1.1 ;OUTPUTBUZZER EQU P1.2 ;OUTPUTDOOR EQU P1.3 ;INPUTLIGHT EQU P2.0 ;OUTPUTSTER EQU P2.1 ;OUTPUTDRY EQU P2.2 ;OUTPUTFAN EQU P2.3 ;OUTPUTDO EQU P2.4 ;INPUTDI EQU P2.5 ;OUTPUT;**********F_FAN EQU flag1.0F_STER EQU flag1.1F_DRY EQU flag1.2TONE_ENABLE EQU flag1.4F_NO_DOOR EQU flag1.5F_DISPLAY1 EQU flag1.6F_DISPLAY EQU flag1.7F_STER90 EQU flag2.2F_STER45 EQU flag2.3F_DRY60 EQU flag2.1F_DRY30 EQU flag2.0F_ON_OFF EQU flag3.0F_FLASH EQU flag3.1F_LIGHT EQU flag3.2F_KEY EQU flag3.3F_FINISH EQU flag3.4F_NO_TONE EQU flag3.6F_MINUTE EQU flag3.7F_DISPLAY_FLASH60 EQU flag4.0F_DISPLAY_FLASH30 EQU flag4.1F_DELAY EQU flag4.2F_DISPLAY_FLASH EQU flag4.3F_FLASH1 EQU flag4.4;*****************************************KPOWER EQU keybuffer.6KMINUTE EQU keybuffer.0KLIGHT EQU keybuffer.7KHOUR EQU keybuffer.1KDRY60 EQU keybuffer.2KSTER90 EQU keybuffer.4KDRY30 EQU keybuffer.3KSTER45 EQU keybuffer.5;\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ org 0x00 jmp Start org 0x08 jmp Interrupt org 0x10 Interrupt: b0bset FWDRST b0mov accbuffer,a b0mov a,PFLAG b0mov pflagbuffer,a b0bts1 FTC0IRQ jmp Interruptend mov a,#131 mov TC0C,a b0bts1 DOOR jmp Testdoor01Testdoor: b0bset F_NO_DOOR b0bclr STER jmp Testdoor02Testdoor01: b0bclr F_NO_DOOR b0bts0 F_STER b0bset STERTestdoor02: b0mov a,keytime cmprs a,#0 decms keytime nop incms timer1 nop b0mov a,timer1 sub a,#20 ;100ms b0bts1 FC jmp Display01 clr timer1 b0bset F_DISPLAY incms fanbuffer nop b0mov a,fanbuffer sub a,#0x03 b0bts0 FC clr fanbuffer Display01: incms timer2 nop b0mov a,timer2 sub a,#100 ;400ms b0bts1 FC jmp Display02 clr timer2 incms sterbuffer nop b0mov a,sterbuffer sub a,#0x05 b0bts0 FC clr sterbufferDisplay02: incms timer3 nop b0mov a,timer3 sub a,#50 ;200ms b0bts1 FC jmp Tone clr timer3 incms sterbuffer1 nop b0mov a,sterbuffer1 sub a,#0x0a b0bts0 FC clr sterbuffer1Tone: b0bts0 TONE_ENABLE b0bset BUZZER incms tonetime nop b0mov a,tonetime sub a,#60 ;240ms b0bts1 FC jmp Notone clr tonetime b0bclr BUZZER b0bclr TONE_ENABLE Notone: incms flashtime nop b0mov a,flashtime sub a,#125 b0bts1 FC jmp Timer0ok_1_1 clr flashtime b0bts0 F_FLASH1 jmp Timer0ok_1 b0bset F_FLASH1 jmp Timer0ok_1_1Timer0ok_1: b0bclr F_FLASH1Timer0ok_1_1: incms timer nop b0mov a,timer sub a,#125 ;500ms b0bts1 FC jmp Keyscan6312 clr timer b0bts0 F_FLASH jmp Timer0ok_1a b0bset F_FLASH jmp Keyscan6312Timer0ok_1a: b0bclr F_FLASH b0bts1 F_DELAY jmp Timer0ok_1x decms delaybuffer jmp Timer0ok_1x clr flag4 b0bclr F_MINUTETimer0ok_1x: incms second nop b0mov a,second sub a,#60 b0bts1 FC jmp Timer0ok_2 clr second incms minute nop b0mov a,minute sub a,#60 b0bts1 FC jmp Timer0ok_2 clr minute incms hour nop b0mov a,hour sub a,#12 b0bts1 FC jmp Timer0ok_2 clr hourTimer0ok_2: b0bts1 F_ON_OFF jmp Keyscan6312 b0bts1 F_NO_DOOR jmp Timer0ok_2a b0bts0 F_STER jmp Keyscan6312Timer0ok_2a: b0mov a,Dsecond cmprs a,#0x00 jmp Timer0ok_2x jmp Timer0ok_4Timer0ok_2x: decms Dsecond nop jmp Keyscan6312Timer0ok_4: b0mov a,fantime cmprs a,#0xff incms fantime nop b0mov a,stertime cmprs a,#0xff incms stertime nop mov a,#59 b0mov Dsecond,a decms Dminute nop call AdjDisplay b0mov a,Dminute cmprs a,#0xff jmp Timer0ok_7Timer0ok_5: b0bts1 F_STER jmp Timer0ok_6 b0mov a,Dminute_Dry b0mov Dminute,a clr Dsecond clr flag2 b0bset F_DRY60 b0mov a,flag2 b0mov ledbuffer,a call Clrstatus01 b0bset F_DRY b0bset DRY jmp Keyscan6312Timer0ok_6: b0bset F_FINISH jmp InterruptendTimer0ok_7: b0bts0 F_STER jmp Keyscan6312 b0mov a,Dminute sub a,#30 b0bts1 FC jmp Timer0ok_8 b0mov a,fantime sub a,#20 b0bts1 FC jmp Keyscan6312Timer0ok_8: b0bset FAN b0bset F_FAN;\\\\\\\\\\\\\\\ Keyscan6312: b0bts1 F_DISPLAY_FLASH jmp Keyscan6312_1_2 b0bts1 F_FLASH1 jmp Keyscan6312_1_1 b0mov a,Dminute_Dry jmp Keyscan6312_3_1Keyscan6312_1_1: mov a,#0 b0mov displaybuffer2,a b0mov displaybuffer3,a b0mov displaybuffer4,a b0mov displaybuffer5,a jmp Keyscan6312_5Keyscan6312_1_2: b0bts0 F_DELAY jmp Keyscan6312_1 b0bts0 F_ON_OFF jmp Keyscan6312_3Keyscan6312_1: b0mov a,hour cmprs a,#0x00 jmp Keyscan6312_1x mov a,#12 jmp Keyscan6312_1xxKeyscan6312_1x: b0mov a,hourKeyscan6312_1xx: call Tobcd call Toseg b0bts0 F_FLASH b0bset bufferH.0 mov a,#11111110b and a,bufferH cmprs a,#0xee jmp Keyscan6312_2x mov a,#00000001b and bufferH,aKeyscan6312_2x: b0mov a,bufferH b0mov displaybuffer2,a rrcm bufferL b0mov a,bufferL b0mov displaybuffer3,a b0mov a,minute jmp Keyscan6312_4Keyscan6312_3: b0mov a,DminuteKeyscan6312_3_1: call Tobcd b0mov a,bufferHH cmprs a,#0x00 jmp Keyscan6312_3xxa jmp Keyscan6312_3xxKeyscan6312_3xxa: call Toseg b0mov a,bufferH b0mov displaybuffer4,a rrcm bufferL b0mov a,bufferL b0mov displaybuffer5,a clr bufferH b0mov a,bufferHH b0mov bufferL,a call TosegKeyscan6312_2: mov a,#0x00 b0mov displaybuffer2,a rrcm bufferL b0mov a,bufferL b0mov displaybuffer3,a jmp Keyscan6312_5Keyscan6312_3xx: call Toseg b0bset bufferH.0 b0mov a,Dminute sub a,#10 b0bts0 FC jmp Keyscan6312_3x mov a,#00000001b and bufferH,aKeyscan6312_3x: b0mov a,bufferH b0mov displaybuffer2,a rrcm bufferL b0mov a,bufferL b0mov displaybuffer3,a b0bts1 F_DISPLAY_FLASH jmp Keyscan6312_3x_1 b0bts0 F_FLASH1 b0bset displaybuffer2.0 mov a,#0 jmp Keyscan6312_4Keyscan6312_3x_1: b0mov a,DsecondKeyscan6312_4: call Tobcd call Toseg b0mov a,bufferH b0mov displaybuffer4,a rrcm bufferL b0mov a,bufferL b0mov displaybuffer5,a Keyscan6312_5:;=============================== clr bufferH clr bufferL b0bts1 F_STER jmp Keyscan6312_6 b0mov a,stertime sub a,#2 b0bts1 FC jmp Keyscan6312_5_1 clr stertime b0mov a,ozone sub a,#7 b0bts1 FC incms ozoneKeyscan6312_5_1: b0mov Y,#StertableL$M b0mov Z,#StertableL$L b0mov a,sterbuffer add Z,a movc b0mov bufferH,a b0mov Y,#StertableH$M b0mov Z,#StertableH$L b0mov a,sterbuffer1 add Z,a movc jmp Keyscan6312_6_2 ;;===================Keyscan6312_6: clr bufferL clr bufferH b0bts1 F_DRY jmp Keyscan6312_6_3 b0mov a,ozone b0bts0 FZ jmp Keyscan6312_6_3 b0mov a,stertime sub a,#4 b0bts1 FC jmp Keyscan6312_6_1 clr stertime decms ozoneKeyscan6312_6_1: mov a,#0x1f ;00011111b b0mov bufferH,a b0mov Y,#Stertable$M b0mov Z,#Stertable$L b0mov a,ozone add Z,a movc Keyscan6312_6_2: b0mov databuffer,a b0mov bufferL,a mov a,#000000111b and databuffer,a swapm databuffer b0bclr FC rlcm databuffer b0mov a,databuffer or bufferH,a rrcm bufferL rrcm bufferL rrcm bufferL mov a,#11110000b or bufferL,a b0bts1 F_DRY jmp Keyscan6312_6_3 b0bclr bufferL.5 b0bclr bufferL.6Keyscan6312_6_3: b0mov a,bufferH b0mov displaybuffer6,a b0mov a,bufferL b0mov displaybuffer7,a clr bufferH clr bufferL b0bts1 F_DRY jmp Keyscan6312_7 mov a,#0x70 b0mov bufferL,a b0bts0 F_FLASH b0bclr bufferL.5Keyscan6312_7: b0bts1 F_LIGHT jmp Keyscan6312_8 mov a,#00001110b or bufferL,aKeyscan6312_8: b0bts1 F_FAN jmp Keyscan6312_11 b0bset bufferL.0 b0mov a,fanbuffer cmprs a,#0x00 jmp Keyscan6312_9 b0bset bufferH.7 jmp Keyscan6312_11Keyscan6312_9: b0bts1 fanbuffer.0 jmp Keyscan6312_10 b0bset bufferH.6 jmp Keyscan6312_11Keyscan6312_10: b0bset bufferH.5Keyscan6312_11: b0mov a,bufferH b0mov displaybuffer8,a b0mov a,bufferL b0mov displaybuffer9,aSetled: b0bclr STB mov a,#01000001b ;sets led port call Pt6312writ b0bts1 F_ON_OFF jmp Setled01 b0mov a,ledbuffer jmp Setled02Setled01: mov a,#0x00 Setled02: call Pt6312writ b0bset STB Readkey: b0bclr STB mov a,#01000010b call Pt6312writ nop nop nop nop nop nop nop call Pt6312read b0mov a,databuffer b0mov keybuffer,a call Pt6312read swap databuffer or keybuffer,a b0bset STB b0mov a,keybuffer1 cmprs a,keybuffer jmp Readkey01 incms keycounter nop b0mov a,keycounter sub a,#10 b0bts1 FC jmp Interruptend jmp ReadkeyendReadkey01: clr keycounter b0mov a,keybuffer b0mov keybuffer1,a jmp Interruptend Readkeyend: clr counter1 ;keycounter b0mov a,keybuffer b0mov databuffer,a
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -