ir3857tx3
-
Upload
vo-xuan-loc -
Category
Documents
-
view
5 -
download
0
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