;Copyright 2004 Ogiyama Masao TITLE " ޮ" LIST P=PIC16F819 LIST N=250 ; 1 2 3 4 5 6 7 ;234567890123456789012345678901234567890123456789012345678901234567890123 ; * * * ;LABEL CMD OPERAND COMMENT ; REV DATE COMMENT ; 00-01 04.07.23 ; ; 1 = 8MHz / 4 = 0.5 usec ; Watch Dog (7-33)ms x 8 = (56-264)ms ;--------------------------------- Register Definitions ----------------- W EQU H'0000' ; F EQU H'0001' ; ; INDF EQU H'0000' ; Indirect Addressing TMR0 EQU H'0001' ; Timer 0 PCL EQU H'0002' ; Program Counter Low STATUS EQU H'0003' ; Status Reg. FSR EQU H'0004' ; Special Function Reg. PORTA EQU H'0005' ; Port A PORTB EQU H'0006' ; Port B PCLATH EQU H'000A' ; Program Counter Latch hi INTCON EQU H'000B' ; Interrupt Control PIR1 EQU H'000C' ; Interrupt Flag 1 PIR2 EQU H'000D' ; Interrupt Flag 2 TMR1L EQU H'000E' ; Timer 1 Low TMR1H EQU H'000F' ; Timer 1 Hi T1CON EQU H'0010' ; Timer 1 Control TMR2 EQU H'0011' ; Timer 2 T2CON EQU H'0012' ; Timer 2 Control SSPBUF EQU H'0013' ; Sync Serial Port Buff SSPCON EQU H'0014' ; Sync Serial Port Control CCPR1L EQU H'0015' ; Capture,Comparator,PWM 1 Low CCPR1H EQU H'0016' ; Capture,Comparator,PWM 1 Hi CCP1CON EQU H'0017' ; Capture,Comparator,PWM 1 Control ADRESH EQU H'001E' ; ADC Reg. Hi ADCON0 EQU H'001F' ; ADC Control 0 ; OPTION_REG EQU H'0081' ; Option Reg. TRISA EQU H'0085' ; Port A Control TRISB EQU H'0086' ; Port B Control PIE1 EQU H'008C' ; Interrupt Enable 1 PIE2 EQU H'008D' ; Interrupt Enable 2 PCON EQU H'008E' ; Power Control OSCCON EQU H'008F' ; OSC Control OSCTUNE EQU H'0090' ; OSC Tuning PR2 EQU H'0092' ; Timer 2 Period SSPADD EQU H'0093' ; Sync Serial Port ADR ADRESL EQU H'009E' ; ADC Reg. Low ADCON1 EQU H'009F' ; ADC Control 1 ; EEDATA EQU H'010C' ; EEROM DATA EEADR EQU H'010D' ; EEROM ADR EEDATH EQU H'010E' ; EEROM DATA Hi EEADRH EQU H'010F' ; EEROM ADR Hi ; EECON1 EQU H'018C' ; EEROM Condition 1 EECON2 EQU H'018D' ; EEROM Condition 2 ;--------------------------------- STATUS Bits [03,83,103,183] --------- IRP EQU H'7' ; BANK Sel.ݾ 0:Bank0,1 1:Bank2,3 RP1 EQU H'6' ; BANK Sel. 0: 0: 1: 1: RP0 EQU H'5' ; .. 0:0 1:1 0:2 1:3 NOT_TO EQU H'4' ; ѱ 0:WatchDog 1:PowerON NOT_PD EQU H'3' ; ܰ޳ 0:SLEEP 1:PowerON Z EQU H'2' ; 1: DC EQU H'1' ; ޼ޯķذ 1: C EQU H'0' ; ذ 1: ;--------------------------------- INTCON Bits [0B,8B,10B,18B] --------- GIE EQU H'7' ; IRQ 1:Enabe PEIE EQU H'6' ; I/O IRQ 1:Enable T0IE EQU H'5' ; Timer 0 IRQ 1:Enable INTE EQU H'4' ; RB0/INT IRQ 1:Enable RBIE EQU H'3' ; RB ߰ IRQ 1:Enable T0IF EQU H'2' ; Timer 0 OVF 1: INTF EQU H'1' ; RB0/INT IRQ 1: RBIF EQU H'0' ; RB ߰ IRQ 1: ;--------------------------------- PIR1 Bits [0C] ---------------------- ADIF EQU H'6' ; A/D خ 1:خ SSPIF EQU H'3' ; Sync S ߰ 1:IRQ CCP1IF EQU H'2' ; TMR1 1:ʯ TMR2IF EQU H'1' ; TMR2-PR2 CMP 1: TMR1IF EQU H'0' ; TMR1 OVF 1:ʯ ;--------------------------------- ADCON0 Bits [1F] -------------------- ADCS1 EQU H'7' ; A/D CLK Sel. ADCS0 EQU H'6' ; .. CHS2 EQU H'5' ; Analog Channel Sel. CHS1 EQU H'4' ; .. CHS0 EQU H'3' ; .. GO EQU H'2' ; A/D Status GO NOT_DONE EQU H'2' ; GO_DONE EQU H'2' ; ADON EQU H'0' ; A/D ON 1:ON ;--------------------------------- OPTION_REG Bits [81,181] ------------ NOT_RBPU EQU H'7' ; Port B Pullup 0: INTEDG EQU H'6' ; RB0/INT Edge 0: T0CS EQU H'5' ; TOCKI Select 0:Ų T0SE EQU H'4' ; Timer Edge 0: +1 PSA EQU H'3' ; ؽ 0:Timer0 1:WDT PS2 EQU H'2' ; ؽ Rate PS1 EQU H'1' ; .. PS0 EQU H'0' ; .. ;--------------------------------- PIE1 Bits [8C] ---------------------- ADIE EQU H'6' ; A/D IRQ 1:Enable SSPIE EQU H'3' ; Sync S ߰ IRQ 1:Enable CCP1IE EQU H'2' ; CCP1 IRQ 1:Enable TMR2IE EQU H'1' ; TMR2-PR2 CMP IRQ 1:Enable TMR1IE EQU H'0' ; TMR1 OVF IRQ 1:Enable ;--------------------------------- ADCON1 Bits [9F] --------------------- ADFM EQU H'7' ; A/D Format Sel. ADCS2 EQU H'6' ; A/D Clock Sel. PCFG3 EQU H'3' ; A/D Control PCFG2 EQU H'2' ; .. PCFG1 EQU H'1' ; .. PCFG0 EQU H'0' ; .. ;--------------------------------- EECON1 Bits [18C] ------------------- EEPGD EQU H'7' ; MEM Sel. 1:۸ 0:ް FREE EQU H'4' ; Row Erase WTERR EQU H'3' ; WT Error 1:ERR 0:OK WTEN EQU H'2' ; WT Enable 1:Enable WT EQU H'1' ; WT Start 1:Start 0:End RD EQU H'0' ; RD Start 1:Start ;--------------------------------- RAM Definition [16F819] -------------- __MAXRAM H'1FF' __BADRAM H'07'-H'09', H'18'-H'1D' __BADRAM H'87'-H'89', H'91', H'95'-H'9D' __BADRAM H'105', H'107'-H'109', H'110'-H'11F' __BADRAM H'185', H'187'-H'189', H'18E'-H'19F' ;--------------------------------- Configuration Bits ------------------- ; __CONFIG _HS_OSC & _PWRTE_ON & _LVP_OFF & _WDT_ON & _MCLR_ON ; _CP_ALL EQU H'1FFF' ; ø ALL _CP_OFF EQU H'3FFF' ; ø Ų _WRT_EN_OF EQU H'3FFF' ; ø Ų _WRT_EN_1 EQU H'3DFF' ; ø 0000-01FF _WRT_EN_2 EQU H'3BFF' ; ø 0000-03FF _WRT_EN_3 EQU H'39FF' ; ø 0000-05FF _CCP1_RB2 EQU H'3FFF' ; CCPMX RB2 _CCP1_RB3 EQU H'2FFF' ; RB3 _DEBUG_ON EQU H'37FF' ; DBG Ӱ ON _DEBUG_OFF EQU H'3FFF' ; DBG Ӱ OFF _CPD_ON EQU H'3EFF' ; EEPROM ø ON _CPD_OFF EQU H'3FFF' ; EEPROM ø OFF _LVP_ON EQU H'3FFF' ; Low Volt Program ON _LVP_OFF EQU H'3F7F' ; Low Volt Program OFF _BODEN_ON EQU H'3FFF' ; ׳ݱ ON _BODEN_OFF EQU H'3FBF' ; ׳ݱ OFF _MCLR_ON EQU H'3FFF' ; 4=MCLR _MCLR_OFF EQU H'3FDF' ; 4=RA5 _PWRTE_ON EQU H'3FF7' ; ܰϰ Enable _PWRTE_OFF EQU H'3FFF' ; ܰϰ OFF _WDT_ON EQU H'3FFF' ; Watch Dog Enable _WDT_OFF EQU H'3FFB' ; Watch Dog OFF _EXTRC_OUT EQU H'3FFF' ; EXT RC 15=OUT _EXTRC_IO EQU H'3FFE' ; EXT RC 15=I/O _INTRC_OUT EQU H'3FFD' ; INT RC 15=OUT,16=I/O _INTRC_IO EQU H'3FFC' ; INT RC 15=I/O,16=I/O _EXTCLK EQU H'3FEF' ; EXT _HS_OSC EQU H'3FEE' ; HS 4 < 20 MHz _XT_OSC EQU H'3FED' ; XT < 4 MHz _LP_OSC EQU H'3FEC' ; LP < 200KHz ;--------------------------------- I/O Port ----------------------------- ; CLKI OSC1 RA7(16) <- X'tal RA5:Input Only ; CLKO OSC2 RA6(15) <- X'tal ; MCLR VPP RA5(04) <- MCLR /Vpp ; T0CKI AN4 RA4(03) <- AN CH5 ; Vref+ AN3 RA3(02) <- AN CH4 ; Vref- AN2 RA2(01) <- AN CH3 ; AN1 RA1(18) <- AN CH2 ; AN0 RA0(17) <- AN CH1 ; T1OSI PGD RB7(13) -> PGD ; T1OSC T1CKI PGC RB6(12) <- SW /PGC Low:ON ; SS RB5(11) -> OUT CH5 Low:ON ; SCK SCL RB4(10) -> OUT CH4 Low:ON ; CCP1 PGM RB3(09) -> OUT CH3/PGM Low:ON ; SDO CCP1 RB2(08) -> OUT CH2 Low:ON ; SDI SDA RB1(07) -> OUT CH1 Low:ON ; INT RB0(06) <- ۸۽ 50/60Hz ; VDD(14) +5V ; VSS(05) GND ;------------------------------------------------------------------------ ; General Purpose Registers (H'0020' -> H'007F') BANK 0 ORG H'0020' ; CLR_T_ADR RES 1 ; RAM Top ADR IRQ_S_STS EQU CLR_T_ADR ; IRQ (STATUS Reg) Save IRQ_S_FSR RES 1 ; .. (FSR Reg) IRQ_S_PCH RES 1 ; .. (PCLATH Reg) ; CH1_TMP RES 1 ; CH1 TEMP 50-131C NM CH1_PHS RES 1 ; PHASE 0-100% NM CH1_PH_NOW RES 1 ; CH1 Phase Now 0-44 CH1_PH_TAR RES 1 ; Target 0-44 CH1_PH_ON RES 1 ; ON 0-44 SW_DT RES 1 ; SW Data FRQ RES 1 ; 50/60Hz xx11:50Hz x1x1:60Hz TM_CAL_CNT RES 1 ; TIMING 50/60Hz CNT TMR1H_DT RES 1 ; TMR1H Data TMR1L_DT RES 1 ; TMR1L Data PHS_CNT RES 1 ; PHS 0-39 PHS_NOW RES 1 ; SLUP WK PHS_TAR RES 1 ; . PHS_ON RES 1 ; . PHS_CAL_W1 RES 1 ; PHS_CAL WK PHS_CAL_W2 RES 1 ; . V_CH_1_H RES 1 ; н ݱ CH 1 H V_CH_1_L RES 1 ; L T_NOW_1 RES 1 ; Now CH 1 H_NOW_1 RES 1 ; Now ˰ Status CH 1 H_TAR_1 RES 1 ; Targer ˰ Status CH 1 H_CNT_1 RES 1 ; خ 1 CONV_H RES 1 ; CONV Sub WK CONV_L RES 1 ; CONV_C RES 1 ; CONV_C_WK RES 1 ; CONV_C_TH RES 1 ; CONV_C_TL RES 1 ; PORTA_DT RES 1 ; PORT A Data WK PORTB_DT RES 1 ; PORT B Data WK PCLATH_SV RES 1 ; for RETLW,DT ;- - - - - - - - - - - - - - - - - - - - E_ADR RES 1 ; EEPROM ADR E_LEN RES 1 ; EEPROM LEN E_DATA RES 1 ; EEPROM Data TIM_WK_1 RES 1 ; Timer WK TIM_WK_2 RES 1 ; Timer WK ; IRQ_S_WK EQU H'007F' ; IRQ (WORK Reg) Save (same Bank 1) CLR_E_ADR EQU IRQ_S_WK ; RAM End ADR ;------------------------------------------------------------------------ ; General Purpose Registers (H'00A0' -> H'00FF') BANK 1 ; (00F0->00FF)=(0070-007F) ORG H'00FF' RES 1 ; IRQ (WORK Reg) Save (same Bank 0) ;------------------------------------------------------------------------ ; General Purpose Registers (H'0120' -> H'017F') BANK 2 ; (0170->017F)=(0070-007F) ORG H'017F' RES 1 ; IRQ (WORK Reg) Save (same Bank 0) ;------------------------------------------------------------------------ ; General Purpose Registers (H'01A0' -> H'01FF') BANK 3 ; (01A0->01FF)=(0020-007F) ORG H'01FF' RES 1 ; IRQ (WORK Reg) Save (same Bank 0) ;------------------------------------------------------------------------ ORG H'0000' ; GOTO MAIN ; Power ON ; ORG H'0004' ; GOTO IRQ ; IRQ ;------------------------------------------------------------------------ ORG H'0010' DT H'01' ; REV DT H'20',H'04' ; DATE (YYYY) DT H'07',H'23' ; DATE (MMDD) ;------------------------------------------------------------------------ ; ޶ ݼ 502AT-2 2K 5Vٱ TH_TBL ADDWF PCL,F ; DT H'02',H'19' ; 49C 0 DT H'02',H'10' ; 50C 1 ; DT H'02',H'08' ; 51C 2 DT H'02',H'00' ; 52 3 DT H'01',H'F8' ; 53 4 DT H'01',H'F0' ; 54 5 DT H'01',H'E8' ; 55 6 DT H'01',H'E0' ; 56 7 DT H'01',H'D9' ; 57 8 DT H'01',H'D1' ; 58 9 DT H'01',H'C9' ; 59 10 DT H'01',H'C1' ; 60 11 ; DT H'01',H'BA' ; 61C 12 DT H'01',H'B2' ; 62 13 DT H'01',H'AB' ; 63 14 DT H'01',H'A4' ; 64 15 DT H'01',H'9C' ; 65 16 DT H'01',H'95' ; 66 17 DT H'01',H'8E' ; 67 18 DT H'01',H'87' ; 68 19 DT H'01',H'80' ; 69 20 DT H'01',H'79' ; 70 21 ; DT H'01',H'72' ; 71C 22 DT H'01',H'6C' ; 72 23 DT H'01',H'65' ; 73 24 DT H'01',H'5E' ; 74 25 DT H'01',H'58' ; 75 26 DT H'01',H'52' ; 76 27 DT H'01',H'4B' ; 77 28 DT H'01',H'45' ; 78 29 DT H'01',H'3F' ; 79 30 DT H'01',H'39' ; 80 31 ; DT H'01',H'33' ; 81C 32 DT H'01',H'2E' ; 82 33 DT H'01',H'28' ; 83 34 DT H'01',H'22' ; 84 35 DT H'01',H'1D' ; 85 36 DT H'01',H'17' ; 86 37 DT H'01',H'12' ; 87 38 DT H'01',H'0D' ; 88 39 DT H'01',H'08' ; 89 40 DT H'01',H'02' ; 90 41 ; DT H'00',H'FE' ; 91C 42 DT H'00',H'F9' ; 92 43 DT H'00',H'F4' ; 93 44 DT H'00',H'EF' ; 94 45 DT H'00',H'EB' ; 95 46 DT H'00',H'E6' ; 96 47 DT H'00',H'E2' ; 97 48 DT H'00',H'DD' ; 98 49 DT H'00',H'D9' ; 99 50 DT H'00',H'D5' ; 100 51 ; DT H'00',H'00' ; 101C 52 Dummy ;------------------------------------------------------------------------ PHS_TBL_50 ADDWF PCL,F ; PHASE -> PHS 50Hz DT D'042' ; 0% 0 DT D'038' ; 5% 1 DT D'036' ; 10% 2 DT D'034' ; 15% 3 DT D'032' ; 20% 4 DT D'031' ; 25% 5 DT D'029' ; 30% 6 DT D'028' ; 35% 7 DT D'026' ; 40% 8 DT D'025' ; 45% 9 DT D'024' ; 50% 10 DT D'023' ; 55% 11 DT D'022' ; 60% 12 DT D'020' ; 65% 13 DT D'019' ; 70% 14 DT D'017' ; 75% 15 DT D'016' ; 80% 16 DT D'014' ; 85% 17 DT D'012' ; 90% 18 DT D'010' ; 95% 19 DT D'002' ; 100% 20 ;------------------------------------------------------------------------ ORG H'0100' ; PHS_TBL_60 ADDWF PCL,F ; PHASE -> PHS 60Hz DT D'042' ; 0% 0 DT D'037' ; 5% 1 DT D'035' ; 10% 2 DT D'033' ; 15% 3 DT D'031' ; 20% 4 DT D'030' ; 25% 5 DT D'028' ; 30% 6 DT D'027' ; 35% 7 DT D'025' ; 40% 8 DT D'024' ; 45% 9 DT D'023' ; 50% 10 DT D'022' ; 55% 11 DT D'021' ; 60% 12 DT D'019' ; 65% 13 DT D'018' ; 70% 14 DT D'016' ; 75% 15 DT D'015' ; 80% 16 DT D'013' ; 85% 17 DT D'011' ; 90% 18 DT D'009' ; 95% 19 DT D'002' ; 100% 20 ;------------------------------------------------------------------------ MAIN MOVLW B'00111110' ; Out = Hi MOVWF PORTB ; ; BSF STATUS,RP0 ;|BANK = 1(01) MOVLW B'11001011' ;|Pullupż,RB0,WDT,x8 MOVWF OPTION_REG ;| MOVLW B'11111111' ;| MOVWF TRISA ;|Port A DIR MOVLW B'11000001' ;| MOVWF TRISB ;|Port B DIR BCF STATUS,RP0 ;|BANK = 0(00) ; MOVLW B'00111110' ; Out = Hi MOVWF PORTB ; ; = TMR 1 Set = MOVLW B'00000001' ; :00,OSC:OFF,SyncOFF,Ų,ON MOVWF T1CON ; TMR1 ; == Initialize == MOVLW CLR_T_ADR ; Top ADR MOVWF FSR ; M_0010 CLRF INDF ; INCF FSR,F ; MOVF FSR,W ; SUBLW CLR_E_ADR ; End ADR BTFSS STATUS,Z ; FSR = xxxx -> Skip GOTO M_0010 ; -> Loop ; MOVLW B'00111110' ; OUT = OFF MOVWF PORTB_DT ; ; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - CALL TM_CAL ; 50/60Hz BTFSS FRQ,1 ; FRQ = xx1x (50Hz) -> Skip GOTO M_0020 ; ; MOVLW H'FE' ; 250us/0.5us-24=476(01DCH) 50Hz Data MOVWF TMR1H ; FFFF-01DC=FE23 MOVWF TMR1H_DT ; --> WK MOVLW H'23' ; MOVWF TMR1L ; MOVWF TMR1L_DT ; GOTO M_0025 ; M_0020 MOVLW H'FE' ; 208us/0.5us-24=392(0188H) 60Hz Data MOVWF TMR1H ; FFFF-0188=FE77 MOVWF TMR1H_DT ; --> WK MOVLW H'77' ; MOVWF TMR1L ; MOVWF TMR1L_DT ; ; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - M_0025 MOVLW D'44' ; MOVWF CH1_PH_NOW ; CH1_PH_NOW = 44 (OFF) MOVWF CH1_PH_TAR ; CH1_PH_TAR = 44 (OFF) ; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - M_0030 MOVLW D'040' ; = 40 <--- SW ض MOVWF H_CNT_1 ; ; MOVLW B'00111110' ; MOVWF PORTB_DT ; ; MOVF PORTB,W ; ANDLW B'01000000' ; MOVWF SW_DT ; ; MOVLW R_CH1_TP_1-H'2100' ; SW=ON Data 2 byte BTFSC SW_DT,6 ; SW = ON -> Skip MOVLW R_CH1_TP_0-H'2100' ; SW=OFF Data 2 byte ; MOVWF E_ADR ; ROM Top ADR MOVLW CH1_TMP ; RAM Top ADR MOVWF FSR ; M_0040 CALL EPROM_RD ; EPROM -> RAM 1 Byte MOVWF INDF ; INCF E_ADR,F ; ROM ADR +1 INCF FSR,F ; RAM ADR +1 MOVF FSR,W ; SUBLW CH1_TMP+D'2' ; BTFSS STATUS,Z ; ROM ADR = Max -> Skip GOTO M_0040 ; Max ; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - MOVF CH1_PHS,W ; CH1 CALL PHS_CAL ; PHS % -> MOVWF CH1_PH_ON ; ; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - BSF STATUS,RP0 ;|Bank 1(01) BSF PIE1,TMR1IE ;|TMR 1 IRQ Enable BCF STATUS,RP0 ;|Bank 0(00) BSF INTCON,INTE ; RB0/INT IRQ Enable BSF INTCON,PEIE ; IRQ Enable BSF INTCON,GIE ; IRQ ALL Enable ;------------------------------------------------------------------------ ; 1.н ݱ ذ ݶ ; CH 1 A/D -> V_CH_1 -> T_NOW_1 ; 2.T_NOW_1 ò CH1_TMP ˶ ; V_CH_1 > 037A -> ݾ --------------------> H_TAR_1 = OFF ; CH1_TMP < 50C ----------------------------> H_TAR_1 = OFF ; CH1_TMP > 100C ----------------------------> H_TAR_1 = ON ; H_NOW_1 = OFF ޱ CH1_TMP > T_NOW_1 --> H_TAR_1 = ON ; H_NOW_1 = ON ޱ CH1_TMP =< T_NOW_1 --> H_TAR_1 = OFF ; 3.H_NOW_1 H_TAR_1 -> 5. ; 4.H_CNT_1 = 40 ------> 6. ; 5.H_CNT_1 -1 00 ------> 6. ; = 00 ------> H_TAR_1 -> H_NOW_1 -> 4. ; 6.H_NOW_1 -> I/O ; H_NOW_1 = ON --> SLUP (CH1_PH_TAR , CH1_PH_NOW Set) --> 7. ; H_NOW_1 = OFF --> CH1_PH_TAR , CH1_PH_NOW = 44 ; 7.SW ƭخ ; if SW = ϴ ޳ --> Top ; 8.Timer 10ms ; 9. -->1. ;------------------------------------------------------------------------ BSF STATUS,RP0 ;|BANK = 1(01) MOVLW B'10000000' ;|з޽,Input=ALL A/D MOVWF ADCON1 ;| BCF STATUS,RP0 ;|BANK = 0(00) ;======================================================================== ; 1.н ݱ ذ ݶ ; CH 1 A/D -> V_CH_1 -> T_NOW_1 M_1000 ; ; -------------------------------- == н CH 1 == ---------------- MOVLW B'10000001' ; Fosc/32,CH0,POW_ON MOVWF ADCON0 ; ; CALL TIM_100U ; Aqu Time 100us ; BSF ADCON0,2 ; A/D Start ; M_1100 BTFSC ADCON0,2 ; A/D = End GOTO M_1100 ; = -> Loop ; MOVF ADRESH,W ; A/D Hi MOVWF V_CH_1_H ; MOVWF CONV_H ; BSF STATUS,RP0 ;|BANK = 1(01) MOVF ADRESL,W ;|A/D Low BCF STATUS,RP0 ;|BANK = 0(00) MOVWF V_CH_1_L ; MOVWF CONV_L ; ; CALL CONV_TH ; CONV_H,L(ݱ) -> W Reg() MOVWF T_NOW_1 ; ;======================================================================== ; 2.T_NOW_1 ò CH1_TMP ˶ ; V_CH_1 > 037A -> ݾ --------------------> H_TAR_1 = OFF ; CH1_TMP < 50C ----------------------------> H_TAR_1 = OFF ; CH1_TMP > 100C ----------------------------> H_TAR_1 = ON ; H_NOW_1 = OFF ޱ CH1_TMP > T_NOW_1 --> H_TAR_1 = ON ; H_NOW_1 = ON ޱ CH1_TMP =< T_NOW_1 --> H_TAR_1 = OFF ;------------------------------------ CH 1 ------------------------------ M_2000 ; MOVF CH1_TMP,W ; SUBLW D'049' ; BTFSC STATUS,C ; TAR > 49C -> Skip GOTO M_2040 ; =< -> OFF ; MOVF CH1_TMP,W ; SUBLW D'100' ; BTFSS STATUS,C ; TAR =< 100C -> Skip GOTO M_2020 ; > -> ON ; MOVF V_CH_1_H,W ; ˰ ݾ CK (0C ݾ) SUBLW H'02' ; BTFSC STATUS,C ; THM > 02 -> Skip GOTO M_2010 ; =< 02 -> OK MOVF V_CH_1_L,W ; SUBLW H'7A' ; BTFSS STATUS,C ; THM =< 037A -> Skip GOTO M_2040 ; > 037A -> ݾ -> OFF ; M_2010 BTFSC H_NOW_1,1 ; ˰ 1 Now = 0FF -> Skip GOTO M_2030 ; = ON -> Next ; ; -- TAR > Now -> ON -- MOVF CH1_TMP,W ; SUBWF T_NOW_1,W ; BTFSC STATUS,C ; TAR > Now -> Skip GOTO M_2040 ; =< -> OFF ; M_2020 BSF H_TAR_1,1 ; ˰ 1 ON GOTO M_3000 ; -> Next ; M_2030 ; -- TAR =< Now -> OFF -- MOVF CH1_TMP,W ; SUBWF T_NOW_1,W ; BTFSS STATUS,C ; TAR =< Now -> Skip GOTO M_2020 ; > -> ON ; M_2040 BCF H_TAR_1,1 ; ˰ 1 OFF ;======================================================================== ; 3.H_NOW_1 H_TAR_1 -> 5. ; 4.H_CNT_1 = 40 ------> 6. ; 5.H_CNT_1 -1 00 ------> 6. ; = 00 ------> H_TAR_1 -> H_NOW_1 -> 4. ;------------------------------------ CH 1 ------------------------------ M_3000 MOVF H_NOW_1,W ; SUBWF H_TAR_1,W ; BTFSS STATUS,Z ; NOW = TAR -> Skip GOTO M_3020 ; ; M_3010 MOVLW D'040' ; MOVWF H_CNT_1 ; GOTO M_4000 ; ; M_3020 DECFSZ H_CNT_1,F ; CNT -1 = 0 -> Skip GOTO M_4000 ; 0 -> Next MOVF H_TAR_1,W ; TAR -> Now MOVWF H_NOW_1 ; GOTO M_3010 ; ;------------------------------------------------------------------------ ; 6.H_NOW_1 -> I/O ; H_NOW_1 = ON --> SLUP (CH1_PH_TAR , CH1_PH_NOW Set) --> 7. ; H_NOW_1 = OFF --> CH1_PH_TAR , CH1_PH_NOW = 44 ; --------------------------------- CH 1 -------------------------------- M_4000 ; BTFSS H_NOW_1,1 ; H_NOW_1 = ON -> Skip GOTO M_4010 ; = OFF ; MOVLW CH1_PH_NOW ; ADR Set CALL SLUP ; Slow UP GOTO M_5000 ; ; M_4010 MOVLW D'044' ; MOVWF CH1_PH_TAR ; MOVWF CH1_PH_NOW ; ;------------------------------------------------------------------------ ; 7.SW ƭخ M_5000 ; MOVF PORTB,W ; ANDLW B'01000000' ; SUBWF SW_DT,W ; BTFSC STATUS,Z ; ϴ ޳ -> Skip GOTO M_7000 ; ż ; CALL TIM_500M ; Timer 500ms GOTO M_0030 ; --> Top ;------------------------------------------------------------------------ ; 8.Timer 10ms ; 9. -->1. ; M_7000 CALL TIM_10M ; Timer 10ms ; CLRWDT ; Watch Dog CLR GOTO M_1000 ; --> Top Loop ;------------------------------------------------------------------------ CONV_TH ; ݱ -> ݶ at н ; 49->101C ; Max(30step x 53data + 8) = 1598 step ; Input : CONV_H,L ; Output: W Reg ; WK : CONV_C (0-52) +49C -> (49-101C) ; CONV_WK ; Ref : TH_TBL ð ޭ ; CLRF CONV_C ; Code = 00 CONV_TH_10 MOVF CONV_C,W ; Code -> WK MOVWF CONV_C_WK ; BCF STATUS,C ; RLF CONV_C_WK,F ; WK x2 -> ADR MOVF CONV_C_WK,W ; CALL TH_TBL ; MOVWF CONV_C_TH ; Hi Data -> TH MOVF CONV_C_WK,W ; ADR +1 ADDLW D'1' ; CALL TH_TBL ; MOVWF CONV_C_TL ; Low Data -> TL ; MOVF CONV_H,W ; SUBWF CONV_C_TH,W ; BTFSC STATUS,Z ; Now TBL_H -> Skip GOTO CONV_TH_20 ; = -> Low CK BTFSS STATUS,C ; Now < TBL_H -> Skip GOTO CONV_TH_40 ; > -> ò GOTO CONV_TH_30 ; ; CONV_TH_20 MOVF CONV_L,W ; SUBWF CONV_C_TL,W ; BTFSS STATUS,C ; Now =< TBL_L -> Skip GOTO CONV_TH_40 ; > -> ò BTFSC STATUS,Z ; < -> Skip GOTO CONV_TH_40 ; = -> ò ; CONV_TH_30 INCF CONV_C,F ; Code +1 GOTO CONV_TH_10 ; --> Top Loop ; CONV_TH_40 MOVLW D'049' ; +Offset (49C) ADDWF CONV_C,F ; MOVF CONV_C,W ; Code -> W Reg (Result) RETURN ; ;------------------------------------------------------------------------ PHS_CAL ; PHS % -> PHS_CNT () ; Max(7step x 21data) + 21= 168 step ; Input W reg ; FRQ ; Output W reg ; WK PHS_CAL_W1 ; PHS_CAL_W2 ; Ref PHS_TBL_50 ; PHS_TBL_60 ; MOVWF PHS_CAL_W1 ; Input = 0,5,10,15....100% CLRF PHS_CAL_W2 ; Output = 0 ; MOVF PHS_CAL_W1,W ; PHS_CAL_10 BTFSC STATUS,Z ; W1 0 -> Skip GOTO PHS_CAL_20 ; = INCF PHS_CAL_W2,F ; W2 +1 MOVLW D'005' ; W1 - 5% SUBWF PHS_CAL_W1,F ; GOTO PHS_CAL_10 ; ; PHS_CAL_20 BTFSS FRQ,1 ; FRQ = xx1x (50Hz) -> Skip GOTO PHS_CAL_30 ; xx0x (60Hz) MOVF PHS_CAL_W2,W ; CALL PHS_TBL_50 ; 50Hz Table RETURN ; W reg = Result ; PHS_CAL_30 MOVF PCLATH,W ; MOVWF PCLATH_SV ; (RETLW,DT ķ ֳ) MOVLW H'01' ; MOVWF PCLATH ; (ORG 0100) MOVF PHS_CAL_W2,W ; CALL PHS_TBL_60 ; 60Hz Table MOVWF PHS_CAL_W1 ; Result MOVF PCLATH_SV,W ; MOVWF PCLATH ; MOVF PHS_CAL_W1,W ; RETURN ; W reg = Result ;------------------------------------------------------------------------ SLUP ; Slow UP ; PHS_NOW = PHS_ON -> Return ( ON ò) ; PHS_NOW PHS_ON -> 10% 20% ... PHS_ON Slow UP ; ; Input W Reg (PARAM ADR) -> FSR reg ; +0 CH1_PH_NOW ; +1 CH1_PH_TAR ; +2 CH1_PH_ON ; Output +0 CH1_PH_NOW ; +1 CH1_PH_TAR ; WK PHS_NOW ; PHS_TAR ; PHS_ON ; ; 1.FSR reg -> PHS_NOW,PHS_ON ; 2.PHS_NOW = PHS_ON --> Return ; 3.PHS_ON =< SLUP(10%) --> 13. ; 4.CH1_PHS_TAR = SLUP(10%) -> Timer 25ms ; 5.PHS_ON =< SLUP(20%) --> 13. ; 6.CH1_PHS_TAR = SLUP(20%) -> Timer 25ms ; 7.PHS_ON =< SLUP(40%) --> 13. ; 8.CH1_PHS_TAR = SLUP(40%) -> Timer 25ms ; 9.PHS_ON =< SLUP(60%) --> 13. ; 10.CH1_PHS_TAR = SLUP(60%) -> Timer 25ms ; 11.PHS_ON =< SLUP(80%) --> 13. ; 12.CH1_PHS_TAR = SLUP(80%) -> Timer 25ms ; 13.PHS_ON -> CH1_PH_TAR , CH1_PH_NOW --> Return ; MOVWF FSR ; Input (PARAM ADR) -> FSR MOVF INDF,W ; MOVWF PHS_NOW ; INCF FSR,F ; INCF FSR,F ; MOVF INDF,W ; MOVWF PHS_ON ; DECF FSR,F ; FSR:CH1_PH_TAR ADR ; ; SUBWF PHS_NOW,W ; BTFSC STATUS,Z ; PHS_NOW PHS_ON -> Skip GOTO SLUP_140 ; = -> Return ; MOVF PHS_ON,W ; SUBLW D'034' ; BTFSS STATUS,C ; PHS_ON =< (10%) -> Skip GOTO SLUP_130 ; > -> ON->TAR,NOW Set MOVLW D'034' ; MOVWF INDF ; (10%) -> TAR CALL TIM_25M ; Timer 25ms ; MOVF PHS_ON,W ; SUBLW D'030' ; BTFSS STATUS,C ; PHS_ON =< (20%) -> Skip GOTO SLUP_130 ; > -> ON->TAR,NOW Set MOVLW D'030' ; MOVWF INDF ; (20%) -> TAR CALL TIM_25M ; Timer 25ms ; MOVF PHS_ON,W ; SUBLW D'024' ; BTFSS STATUS,C ; PHS_ON =< (40%) -> Skip GOTO SLUP_130 ; > -> ON->TAR,NOW Set MOVLW D'024' ; MOVWF INDF ; (40%) -> TAR CALL TIM_25M ; Timer 25ms ; MOVF PHS_ON,W ; SUBLW D'020' ; BTFSS STATUS,C ; PHS_ON =< (60%) -> Skip GOTO SLUP_130 ; > -> ON->TAR,NOW Set MOVLW D'020' ; MOVWF INDF ; (60%) -> TAR CALL TIM_25M ; Timer 25ms ; MOVF PHS_ON,W ; SUBLW D'014' ; BTFSS STATUS,C ; PHS_ON =< (80%) -> Skip GOTO SLUP_130 ; > -> ON->TAR,NOW Set MOVLW D'014' ; MOVWF INDF ; (80%) -> TAR CALL TIM_25M ; Timer 25ms ; SLUP_130 MOVF PHS_ON,W ; FSR:CH1_PH_TAR MOVWF INDF ; PHS_ON -> CH1_PH_TAR DECF FSR,F ; MOVWF INDF ; PHS_ON -> CH1_PH_NOW SLUP_140 RETURN ; ;------------------------------------------------------------------------ TM_CAL ; 50/60Hz CAL. (IRQ ¶Ų) ; 1.TIMING ON CAL. ; ON ; OFF ů ĺ ; ON OFF ů خ ; 2. T < 8.1ms -> Error ; 8.2ms < T < 8.7ms -> 60Hz (8.33ms) ; 8.8ms < T < 9.7ms -> Error ; 9.8ms < T < 10.4ms -> 50Hz (10.0ms) ; 10.3ms < T -> Error ; Input : Port B0 ; ݸ ݺ޳ ; Output : FRQ : 00000011:50Hz ; 00000101:60Hz ; WK : TM_CAL_CNT ; Sub : TM_CAL_TM : 95 step Timer ; CLRWDT ; Watch Dog CLR CLRF TM_CAL_CNT ; CNT = 256 (12.8 ms) TM_CAL_010 BTFSC PORTB,0 ; 2 TIMING = OFF -> Skip GOTO TM_CAL_020 ; = ON -> Next CALL TM_CAL_TM ;95 Timer 95 step DECFSZ TM_CAL_CNT,F ; 1 CNT -1 = 0 -> Skip GOTO TM_CAL_010 ; 2 0 GOTO TM_CAL_080 ; Error ; TM_CAL_020 CLRWDT ; Watch Dog CLR CLRF TM_CAL_CNT ; CNT = 256 (12.8ms) TM_CAL_030 BTFSS PORTB,0 ; TIMING = ON -> Skip GOTO TM_CAL_040 ; = OFF -> Next CALL TM_CAL_TM ; Timer 95 step DECFSZ TM_CAL_CNT,F ; CNT -1 = 0 -> Skip GOTO TM_CAL_030 ; 0 GOTO TM_CAL_080 ; Error ; TM_CAL_040 CLRWDT ; Watch Dog CLR CLRF TM_CAL_CNT ; CNT = 0 TM_CAL_050 BTFSC PORTB,0 ; 2 TIMING = OFF -> Skip GOTO TM_CAL_060 ; = ON -> Next CALL TM_CAL_TM ;95 Timer 95 step INCFSZ TM_CAL_CNT,F ; 1 CNT +1 = 256 -> Skip GOTO TM_CAL_050 ; 2 256 GOTO TM_CAL_080 ; Error ; TM_CAL_060 BTFSS PORTB,0 ; 2 TIMING = ON -> Skip GOTO TM_CAL_070 ; = OFF -> Next CALL TM_CAL_TM ;95 Timer 95 step INCFSZ TM_CAL_CNT,F ; 1 CNT +1 = 256 -> Skip GOTO TM_CAL_060 ; 2 256 GOTO TM_CAL_080 ; Error ; TM_CAL_070 CLRWDT ; Watch Dog CLR MOVF TM_CAL_CNT,W ; SUBLW D'162' ; BTFSC STATUS,C ; TM > 8.1ms -> Skip GOTO TM_CAL_080 ; =< -> Error ; MOVF TM_CAL_CNT,W ; SUBLW D'174' ; BTFSC STATUS,C ; TM > 8.7ms -> Skip GOTO TM_CAL_100 ; =< -> OK (60Hz) ; MOVF TM_CAL_CNT,W ; SUBLW D'194' ; BTFSC STATUS,C ; TM > 9.7ms -> Skip GOTO TM_CAL_080 ; =< -> Error ; MOVF TM_CAL_CNT,W ; SUBLW D'208' ; BTFSC STATUS,C ; TM > 10.4ms -> Skip GOTO TM_CAL_090 ; =< -> OK (50Hz) ; TM_CAL_080 CLRWDT ; Watch Dog CLR MOVLW B'00000000' ; Result = x0000 (Error) GOTO TM_CAL_110 ; ; TM_CAL_090 MOVLW B'00000011' ; Result = x0011 (50Hz) GOTO TM_CAL_110 ; ; TM_CAL_100 MOVLW B'00000101' ; Result = x0101 (60Hz) TM_CAL_110 MOVWF FRQ ; CLRWDT ; Watch Dog CLR RETURN ; ; TM_CAL_TM ; Timer 95 us MOVLW D'234' ; 1 B TM_CAL_TM1 ADDLW D'001' ; 1 A C BTFSS STATUS,Z ; 1 A CC GOTO TM_CAL_TM1 ; 2 AA Ax(255-nnn)+B+C NOP ; 1 B 4x(255-234)+6+3+2(CALL) NOP ; 1 B =95step NOP ; 1 B RETURN ; 2 BB ;------------------------------------------------------------------------ EPROM_RD ; EEPROM -> RAM 1 Byte ; Input : E_ADR = Read ADR ; Output : E_DATA = Read Data ; WK Reg = .. ; MOVF E_ADR,W ; BSF STATUS,RP1 ; | Bank 2(10) Set MOVWF EEADR ; | Low ADR BSF STATUS,RP0 ; | Bank 3(11) Set BCF EECON1,EEPGD ; | DATA memory Sel BSF EECON1,RD ; | Data Read Start BCF STATUS,RP0 ; | Bank 2(10) Set MOVF EEDATA,W ; | Data Read MOVWF E_DATA ; | Data Save BCF STATUS,RP1 ; | Bank 0(00) Set RETURN ; ;------------------------------------------------------------------------ TIM_100U ; Timer 100 usec 200step ; MOVLW D'65' ; B nn MOVWF TIM_WK_2 ; B TIM_100U_2 DECFSZ TIM_WK_2,F ; A CC GOTO TIM_100U_2 ; AA Ax(nn-1)+B+C+CALL RETURN ; BB 3x(65-1)+4+2+2 = 200 ;------------------------------------------------------------------------ TIM_10M ; Timer 10 msec ; MOVLW D'020' ; D mmm MOVWF TIM_WK_1 ; D TIM_10M_1 MOVLW D'249' ; B | F nnn MOVWF TIM_WK_2 ; B | F TIM_10M_2 NOP ; A C | E G DECFSZ TIM_WK_2,F ; A CC | E GG GOTO TIM_10M_2 ; AA | EE DECFSZ TIM_WK_1,F ; B | FF GOTO TIM_10M_1 ; BB | RETURN ; DD ; (Ax(nnn-1)+B+C)x(mmm-1)+D+(Ex(nnn-1)+F+G)+CALL ; (4x(249-1)+5+3)x(020-1)+4+(4x(249-1)+4+3)+2 =20,005 ;------------------------------------------------------------------------ TIM_25M ; Timer 25 msec ; MOVLW D'050' ; D mmm MOVWF TIM_WK_1 ; D TIM_25M_1 MOVLW D'249' ; B | F nnn MOVWF TIM_WK_2 ; B | F TIM_25M_2 NOP ; A C | E G DECFSZ TIM_WK_2,F ; A CC | E GG GOTO TIM_25M_2 ; AA | EE DECFSZ TIM_WK_1,F ; B | FF GOTO TIM_25M_1 ; BB | CLRWDT ; D RETURN ; DD ; (Ax(nnn-1)+B+C)x(mmm-1)+D+(Ex(nnn-1)+F+G)+CALL ; (4x(249-1)+5+3)x(050-1)+5+(4x(249-1)+4+3)+2 =50,006 ;------------------------------------------------------------------------ TIM_500M CALL TIM_100M ; Timer 500 msec TIM_400M CALL TIM_100M ; Timer 400 msec TIM_300M CALL TIM_100M ; Timer 300 msec TIM_200M CALL TIM_100M ; Timer 200 msec TIM_100M ; Timer 100 msec MOVLW D'200' ; D mmm MOVWF TIM_WK_1 ; D TIM_100M_1 MOVLW D'249' ; B | F nnn MOVWF TIM_WK_2 ; B | F TIM_100M_2 NOP ; A C | E G DECFSZ TIM_WK_2,F ; A CC | E GG GOTO TIM_100M_2 ; AA | EE CLRWDT ; B F DECFSZ TIM_WK_1,F ; B | FF GOTO TIM_100M_1 ; BB | RETURN ; DD ; (Ax(nnn-1)+B+C)x(mmm-1)+D+(Ex(nnn-1)+F+G)+CALL ; (4x(249-1)+6+3)x(200-1)+4+(4x(249-1)+5+3)+2 =200,205 ;======================================================================== ; I R Q ;------------------------------------------------------------------------ IRQ ; Max 40+IRQ(5) Step ; ۸۽ 50/60Hz ; RB0/INT IRQ ; Timer 0 ; Watch Dog ֳ (IRQ ʯŲ) ; Timer 1 ; I/O Out ֳ 250/208 us IRQ ʯ ; 50Hz 10.00ms/40=250us : 500step/8MHz ; 60Hz 8.33ms/40=208us : 416step/8MHz ; ; Input : CH1_PH_TAR ; TMR1H/L_DT TMR1 Set Data ; In/Out: PHS_CNT PHS ; PORTB_DT Port B Data ; Output: PORTB I/O ; TMR1H/L TMR1 Reg ; WK : IRQ_S_WK WK Reg ֳ ; IRQ_S_STS STS Reg ֳ ; IRQ_S_PCH PCH Reg ֳ ; IRQ_S_FSR FSR Reg ֳ ; MOVWF IRQ_S_WK ; WORK Reg PUSH (same Bank 0 & 1) SWAPF STATUS,W ; CLRF STATUS ; Bank 0(00) MOVWF IRQ_S_STS ; STATUS Reg Push MOVF PCLATH,W ; MOVWF IRQ_S_PCH ; PCLATH Reg Push CLRF PCLATH ; Page = 0 MOVF FSR,W ; MOVWF IRQ_S_FSR ; FSR Reg Push CLRF STATUS ; ;------------------------------------------------------------------------ BTFSC INTCON,INTF ; ۸۽ IRQ OFF -> Skip RB ߰ GOTO IRQ_C_2000 ; ON -> ; BTFSS PIR1,TMR1IF ; PHS IRQ ON -> Skip Timer 1 GOTO IRQ_END ; OFF -> END ;------------------------------------------------------------------------ IRQ_C_1000 ; TMR1 ; 1.غ ׸ ر ; 2.TMR1 ؾ ; 3.PHS +1 ; 4.PHS = CH1_PH_TAR --> I/O ON ; 5.PHS > 16 --> ۸۽(RB0 IRQ) Enable ; BCF PIR1,TMR1IF ; TMR 1 IRQ F ر 15+IRQ step ; MOVF TMR1H_DT,W ; TMR1 Set MOVWF TMR1H ; MOVF TMR1L_DT,W ; MOVWF TMR1L ; 19+IRQ step ; INCF PHS_CNT,F ; PHS +1 ; MOVF PHS_CNT,W ; SUBWF CH1_PH_TAR,W ; BTFSC STATUS,Z ; PHS Target -> Skip BCF PORTB_DT,1 ; = -> CH1 I/O ON ; MOVF PORTB_DT,W ; MOVWF PORTB ; I/O ON ; BTFSC PHS_CNT,3 ; PHS < 16 -> Skip BSF INTCON,INTE ; RB0/INT IRQ Enable GOTO IRQ_END ; ;------------------------------------------------------------------------ IRQ_C_2000 ; ۽ ; 1.۸۽(RB0/INT IRQ) Disable ; 2.غ ׸ ر ; 3.TMR1 ؾ(ر) ; 4.TMR1 IRQ ر ; 5.PHS ر ; 6.I/O ر ; BCF INTCON,INTE ; RB0/INT IRQ Disable BCF INTCON,INTF ; RB0/INT IRQ CLR ; MOVF TMR1H_DT,W ; TMR1 Set MOVWF TMR1H ; MOVF TMR1L_DT,W ; MOVWF TMR1L ; ; BCF PIR1,TMR1IF ; TMR 1 IRQ F ر ; CLRF PHS_CNT ; PHS = 00 ; MOVF PORTB_DT,W ; I/O ر IORLW B'00111110' ; MOVWF PORTB_DT ; MOVWF PORTB ; ;- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - IRQ_END CLRF STATUS ; Bank 0(00) MOVF IRQ_S_FSR,W ; MOVWF FSR ; FSR Reg Pull MOVF IRQ_S_PCH,W ; MOVWF PCLATH ; PCLATH Reg Pull SWAPF IRQ_S_STS,W ; MOVWF STATUS ; STATUS Reg Pull SWAPF IRQ_S_WK,F ; SWAPF IRQ_S_WK,W ; RETFIE ; MAX 40+IRQ Step ;======================================================================== ; / / ; AC100V 0V_____/_______________________________/__ ; 60Hz / / ; _____ _____ ; | | | | ; ۸۽______| |_________________________| |_______ ; ____ _______________________________ ________ ; PHS ____X_______________________________X________ ; 0 1 2 3 4 5 6 39 208us/step ; / / ; AC100V 0V_____/_______________________________/__ ; 50Hz / / ; _______ _______ ; | | | | ; ۸۽______| |_______________________| |_____ ; ____ _______________________________ ________ ; PHS ____X_______________________________X________ ; 0 1 2 3 4 5 6 39 250us/step ; _____________________________ ; I/O bit __| |__| ; ; AC Out ~~~~~~~~|___|~~~~~~~~~~~~~~~~~~~~~~~~~~~|__ ; ̶ ر ; ; 10.0ms/50Hz 8.33ms/60Hz 1/2(180) 40 ݶ ; ʽ ֯ ϰ ݺ ò step ݶ޴ ֲ ; ۸۽ ٽ ֳ ʯ 1.0ms/50Hz 0.63ms/60Hz ; ۸۽ I/O bit OFF AC ʹ 0V AC Out ; OFF ١ ; ݺ ֳ ݱ AC Out 6 ס ; ex.95% ޱ ޶ݼ޸ 86% ; 40x(100%-86%)=5 ٶ ۸۽ 4 ޱ n=5+4=11 (50Hz) ; 3 n=5+3=10 (60Hz) ; ĸڲ 100% ޱ n= 2/50Hz Ľ ( ON ޲ Ų) ; 2/60Hz ; 0% ޱ n=42 Ľ (ض ݽ Ÿ ON Ų) ; ; ݱ ³ ޶ ݹ ; 50Hz 60Hz 50Hz 60Hz ; |ݱ ޶ (n) n n |ݱ ޶ (n) n n | ; | 100%->100% 1-> 2 2 | 50%-> 50% 20->24 23 | ; | 95% 86% 6 10 9 | 45% 47% 21 25 24 | ; | 90% 80% 8 12 11 | 40% 44% 22 26 25 | ; | 85% 75% 10 14 13 | 35% 40% 24 28 27 | ; | 80% 70% 12 16 15 | 30% 37% 25 29 28 | ; | 75% 67% 13 17 16 | 25% 33% 27 31 30 | ; | 70% 63% 15 19 18 | 20% 30% 28 32 31 | ; | 65% 60% 16 20 19 | 15% 25% 30 34 33 | ; | 60% 56% 18 22 21 | 10% 20% 32 36 35 | ; | 55% 53% 19 23 22 | 5% 14% 34 38 37 | ; | 0% 0% 40 42 42 | ;======================================================================== ORG H'2100' ; EEPROM ; TEMP :50->100C 1C step ; PHASE: 0->100 % 5 % step ; TEMP-- PHASE- ޳ ; 49C -% OFF ; 50-100C 0-100% ޾ޮ & PHS ޮ ; 101C 0-100% ON & PHS ޮ ; TEMP PHASE ; R_CH1_TP_0 DE D'090',D'050' ; CH1 TEMP,PHASE at SW=OFF NM ; R_CH1_TP_1 DE D'080',D'075' ; CH1 TEMP,PHASE at SW=ON NM ;======================================================================== END