Hi all,
I wonder if anyone can point me in the right direction, I'm trying to read to scio pin of a tms3705, the protocal is one start bit high, one stop bit low and no parity. Im using a pic 16f818 with 4mhz internal osc, tmr1 with a 1/2 prescale. Firstly does anyone know if the internal osc is accurate enough for what Im trying to do, has anyone used the tms3705?
The transponder I'm trying to read is iso 11784/11785 compliant and should send a start byte of 01111110 followed by the data bytes.
Here is my bit of code, any comments/help would be welcome;
ISR BCF PORTB,3 ;TURN OFF U2270B
BCF PORTB,2 ;wake up tms3705
MOVLW 37H ;LOAD FSR
MOVWF FSR
CALL TXCT ;4MS DELAY
BSF PORTB,2
CLRF STFLAG
CLRF D1
CLRF TMR0
RUF CLRF DATA1
MOVLW .25
SUBWF TMR0,W
BTFSC STATUS,C
GOTO BACK
BTFSS PORTB,1 ;WAIT FOR START BIT
GOTO RUF
CLRF TMR1L
CLRF TMR1H
RUG MOVLW .13 ;32 PUTS CHECK IN MIDDLE OF BIT
SUBWF TMR1L,W
BTFSS STATUS,C
GOTO RUG
CLRF TMR1L ;START TIMER AGAIN
BTFSS PORTB,1 ;SHOULD STILL BE SET
GOTO BACK ;IF NOT BE ERROR
RUH MOVLW .28 ;BIT LENGH 64uS
SUBWF TMR1L,W
BTFSS STATUS,C
GOTO RUH
CLRF TMR1L
BCF STATUS,C
BTFSS PORTB,1 ;IS BIT SET OR CLEAR?
BSF DATA1,7 ;SET MSB
RRF DATA1 ;ROTATE DATA
INCF D1
MOVLW .8
SUBWF D1,W ;HAVE 8 BITS BEEN RECIVED?
BTFSS STATUS,2
GOTO RUH
BTFSS STFLAG,0 ;HAVE STARTBITS BEEN RECIVED
GOTO CHECKS
MOVF DATA1,W
MOVWF INDF
INCF FSR
CLRF DATA1
CLRF D1
MOVF FSR,W
SUBLW 41H ;HAS ALL BEEN READ?
BTFSS STATUS,2
GOTO RUF ;NO CYCLE AGAIN
CALL HOME
CALL DFILE
CALL DISPLAY
CALL DISP
BACK BSF PORTB,3
BCF INTCON,2
BCF INTCON,1
RETFIE
CHECKS MOVLW B'01111110'
SUBWF DATA1,W
BTFSS STATUS,2
GOTO BACK
BSF STFLAG,0
GOTO RUF
I wonder if anyone can point me in the right direction, I'm trying to read to scio pin of a tms3705, the protocal is one start bit high, one stop bit low and no parity. Im using a pic 16f818 with 4mhz internal osc, tmr1 with a 1/2 prescale. Firstly does anyone know if the internal osc is accurate enough for what Im trying to do, has anyone used the tms3705?
The transponder I'm trying to read is iso 11784/11785 compliant and should send a start byte of 01111110 followed by the data bytes.
Here is my bit of code, any comments/help would be welcome;
ISR BCF PORTB,3 ;TURN OFF U2270B
BCF PORTB,2 ;wake up tms3705
MOVLW 37H ;LOAD FSR
MOVWF FSR
CALL TXCT ;4MS DELAY
BSF PORTB,2
CLRF STFLAG
CLRF D1
CLRF TMR0
RUF CLRF DATA1
MOVLW .25
SUBWF TMR0,W
BTFSC STATUS,C
GOTO BACK
BTFSS PORTB,1 ;WAIT FOR START BIT
GOTO RUF
CLRF TMR1L
CLRF TMR1H
RUG MOVLW .13 ;32 PUTS CHECK IN MIDDLE OF BIT
SUBWF TMR1L,W
BTFSS STATUS,C
GOTO RUG
CLRF TMR1L ;START TIMER AGAIN
BTFSS PORTB,1 ;SHOULD STILL BE SET
GOTO BACK ;IF NOT BE ERROR
RUH MOVLW .28 ;BIT LENGH 64uS
SUBWF TMR1L,W
BTFSS STATUS,C
GOTO RUH
CLRF TMR1L
BCF STATUS,C
BTFSS PORTB,1 ;IS BIT SET OR CLEAR?
BSF DATA1,7 ;SET MSB
RRF DATA1 ;ROTATE DATA
INCF D1
MOVLW .8
SUBWF D1,W ;HAVE 8 BITS BEEN RECIVED?
BTFSS STATUS,2
GOTO RUH
BTFSS STFLAG,0 ;HAVE STARTBITS BEEN RECIVED
GOTO CHECKS
MOVF DATA1,W
MOVWF INDF
INCF FSR
CLRF DATA1
CLRF D1
MOVF FSR,W
SUBLW 41H ;HAS ALL BEEN READ?
BTFSS STATUS,2
GOTO RUF ;NO CYCLE AGAIN
CALL HOME
CALL DFILE
CALL DISPLAY
CALL DISP
BACK BSF PORTB,3
BCF INTCON,2
BCF INTCON,1
RETFIE
CHECKS MOVLW B'01111110'
SUBWF DATA1,W
BTFSS STATUS,2
GOTO BACK
BSF STFLAG,0
GOTO RUF