ir3857tx3

download ir3857tx3

of 6

Transcript of ir3857tx3

  • 5/24/2018 ir3857tx3

    1/6

    ;------------------------------------------------------------------------------; 3(38KHz-56.9KHz ) 16F84A @4MHz; ON56.9KHz; ON38KHz; RA210K; ir3857tx3.asm; 2004/07/17

    ;------------------------------------------------------------------------------

    LIST P=PIC16F84A INCLUDE "P16F84A.INC" __CONFIG _HS_OSC & _PWRTE_ON & _CP_OFF & _WDT_OFF

    WIDTH1 EQU 0DH ;CH1WIDTH2 EQU 0EH ;CH2WIDTH3 EQU 0FH ;CH3COUNT1 EQU 10H ;

    COUNT2 EQU 11H ;CNT1 EQU 12H ;CNT2 EQU 13HCNT3 EQU 14HCNT4 EQU 15HCOUNT3 EQU 16HFREQ EQU 17H ;

    ;----------------; Jumping Vector

    ;----------------ORG 0GOTO MAIN

    ORG 4BCF INTCON, T0IF ;reset flagGOTO INTPROC

    ORG 08H;-----------; Idle loop

    ;-----------MAIN

    BCF INTCON, GIE ;Interrupt DisableCALL PORT_INI ;Port A,B initializeBCF PORTA, 0BCF PORTA, 1MOVLW 0FH ;CHARGE STARTMOVWF PORTBclrf FREQ ;38KHzBTFSC PORTA, 2 ;RA2 = 0 ON

    http://www7b.biglobe.ne.jp/~toko0131/pic/0047/ir

    1 trong 6 6/26/20

  • 5/24/2018 ir3857tx3

    2/6

    g

    incf FREQ, F ;OFF56.9KHz

    ;----- timer set/interrupt enable

    MOVLW 0B4H ;TIMER set to 20msecMOVWF TMR0BSF INTCON, T0IE ;EnableBSF INTCON, GIE ;Enable

    IDLELP NOPNOPGOTO IDLELP

    ;----------------------; ;----------------------INTPROC

    MOVLW 0B4H ;reset timer to 20msec @4MHzMOVWF TMR0

    CALL ADCNV1 ;CH1 A/D ConvertCALL ADCNV2 ;CH2 A/D convertCALL ADCNV3 ;CH3 A/D convert

    ;----- start transmit pulse

    MOVF WIDTH1, WCALL TRANS ;transimt CH1MOVF WIDTH2, WCALL TRANS ;transmit CH2

    MOVF WIDTH3, WCALL TRANS ;transmit CH3MOVLW 0FHMOVWF PORTB ;rechargeMOVLW 1CALL TRANS ;DUMY pulseRETFIE ;Return from interrupt

    ;------------------------; A/D CONVERT SUBROUTINE

    ;------------------------ADCNV1 ;CH1 A/D convertCLRF WIDTH1 ;WIDTH1BCF PORTB, 0 ;RB0 Low

    LOOP1 BTFSS PORTB, 7 ;RB7HighGOTO LOOP11NOPINCFSZ WIDTH1, FGOTO LOOP1MOVLW 0FFHMOVWF WIDTH1

    http://www7b.biglobe.ne.jp/~toko0131/pic/0047/ir

    2 trong 6 6/26/20

  • 5/24/2018 ir3857tx3

    3/6

    g

    LOOP11 BSF PORTB, 0 ;RB0 High(recharge)RETURN

    ;---------------ADCNV2

    CLRF WIDTH2 ;WIDTH2BCF PORTB, 1 ;RB1 Low

    LOOP2 BTFSS PORTB, 6 ;RB6HighGOTO LOOP21NOPINCFSZ WIDTH2, FGOTO LOOP2MOVLW 0FFHMOVWF WIDTH2

    LOOP21 BSF PORTB, 1 ;RB1 High(recharge)RETURN

    ;---------------

    ADCNV3CLRF WIDTH3 ;WIDTH3BCF PORTB, 2 ;RB2 Low

    LOOP3 BTFSS PORTB, 5 ;RB5HighGOTO LOOP31NOPINCFSZ WIDTH3, FGOTO LOOP3MOVLW 0FFHMOVWF WIDTH3

    LOOP31 BSF PORTB, 2 ;RB2 High(recharge)

    RETURN

    ;-------------------------------------; 38KHz ;-------------------------------------TRANSLP01 BTFSS FREQ, 0 ;FREQbit01

    GOTO M38KHZGOTO M57KHZ

    ;---------------

    M38KHZ MOVWF COUNT1 ;save WIDTHMOVLW 06HMOVWF COUNT2

    LP383 BSF PORTA, 1 ;RA1 HighBSF PORTA, 0 ;RA0 HighGOTO $+1GOTO $+1GOTO $+1GOTO $+1GOTO $+1NOP

    http://www7b.biglobe.ne.jp/~toko0131/pic/0047/ir

    3 trong 6 6/26/20

  • 5/24/2018 ir3857tx3

    4/6

    g

    BCF PORTA, 1BCF PORTA, 0GOTO $+1GOTO $+1GOTO $+1GOTO $+1GOTO $+1NOPBSF PORTA, 1BSF PORTA, 0GOTO $+1GOTO $+1GOTO $+1GOTO $+1GOTO $+1NOPBCF PORTA, 1BCF PORTA, 0

    GOTO $+1GOTO $+1GOTO $+1GOTO $+1GOTO $+1NOPBSF PORTA, 1BSF PORTA, 0GOTO $+1GOTO $+1GOTO $+1

    GOTO $+1GOTO $+1NOPBCF PORTA, 1BCF PORTA, 0GOTO $+1GOTO $+1GOTO $+1GOTO $+1DECF COUNT2, F

    BTFSS STATUS, ZGOTO LP383

    CALL TIME100LP384 NOP

    NOP ;adjust pulse width hereNOPNOPNOPNOPNOP

    http://www7b.biglobe.ne.jp/~toko0131/pic/0047/ir

    4 trong 6 6/26/20

  • 5/24/2018 ir3857tx3

    5/6

    g

    NOPDECFSZ COUNT1, F ;make pulse widthGOTO LP384RETURN

    ;---------------M57KHZ MOVWF COUNT1 ;save WIDTH

    MOVLW 0EHMOVWF COUNT2

    LP573 BSF PORTA, 1 ;RA1 HighBSF PORTA, 0 ;RA0 HighGOTO $+1GOTO $+1GOTO $+1BCF PORTA, 1BCF PORTA, 0GOTO $+1GOTO $+1

    GOTO $+1NOPBSF PORTA, 1BSF PORTA, 0GOTO $+1GOTO $+1GOTO $+1BCF PORTA, 1BCF PORTA, 0GOTO $+1GOTO $+1

    DECF COUNT2, FBTFSS STATUS, ZGOTO LP573

    CALL TIME100LP574 NOP ;adjust pulse width here

    NOPNOPNOPNOP

    NOPNOPDECFSZ COUNT1, F ;make pulse widthGOTO LP574MOVLW D'10'MOVWF COUNT3

    LP575 NOPNOPNOPDECFSZ COUNT3, FGOTO LP575

    http://www7b.biglobe.ne.jp/~toko0131/pic/0047/ir

    5 trong 6 6/26/20

  • 5/24/2018 ir3857tx3

    6/6

    g

    RETURN

    ;--------------------------------; PORT A & B Initialize Routine;--------------------------------PORT_INI

    BSF STATUS, RP0 ;Set page 1MOVLW B'11110000' ;RB5,RB6,RB7,RB8MOVWF TRISB ;PortB setMOVLW B'00000100' ;RA2MOVWF TRISA ;PortA setMOVLW B'10000111' ;87H

    ;bit7:;bit5:;bit3:TMR0;bit2-0:1:256 TMR0

    MOVWF OPTION_REG ; BCF STATUS, RP0 ;Set Page 0

    CLRF PORTBCLRF PORTA

    RETURN

    ;------------------; TIME100 :100usec;------------------TIME100

    MOVLW 4HMOVWF CNT1

    T_LP1 CALL TIME10

    DECFSZ CNT1, FGOTO T_LP1RETURN

    ;-----------------; TIME10 :10usec;-----------------TIME10

    MOVLW 7HMOVWF CNT2

    T_LP2 DECFSZ CNT2, FGOTO T_LP2RETURN

    END

    http://www7b.biglobe.ne.jp/~toko0131/pic/0047/ir

    6 trong 6 6/26/20