hi,
im using the PIC16F690 and PICkit 2 programmer, my aim is to make a wifi controlled car by using serial communication with a router, which the PIC will then interpret and use to control the car. I have got a program for a PIC16F628A from the internet (used for the same project), and have been trying to modify it for the PIC16F690. Just wondered if anyone would take a look at the program for me and tell me if theres anywhere ive gone wrong? Since i don't seem to be able to get it to work.

here's the code i have at the moment:

Code:
#define DEBUG 0
greenLED	equ b'00010000' 
redLED 		equ b'01000000' 
 

right 		equ b'00001000' 
left 		equ b'00000100' 
back 		equ b'00000010' 
forward 	equ b'00000001' 


        LIST P=16F690, R=DEC    ; Use the pic16f690 and decimal system
		#include <p16F690.inc>
			__config (_INTRC_OSC_NOCLKOUT & _WDT_OFF & _PWRTE_ON & _MCLRE_OFF & _CP_OFF & _BOR_OFF & _IESO_OFF & _FCMEN_OFF)
       
        CBLOCK 0x20             ; Declare variable addresses starting at 0x20
        dataL
		in_char
	    temp
    	d1
		d2	
        ENDC

        ORG    0x000            ; Program starts at 0x000

;
; --------------------------------
; set ANALOG/DIGITAL INPUTS PORT A
; --------------------------------
;
        cm1con0=0             ; Comparator 1 disabled
	cm2con0=0             ; Comparator 2 disabled
	ansel=0                  ; Pins to be Digital
	anselh=0                ; Pins to be Digital
;
; ----------------
; INITIALIZE PORTS
; ----------------
;
        movlw b'00000000'      ; set up portC
        movwf PORTC

        movlw b'10000000'      ; RB7(TX)=1 others are 0
        movwf PORTB

        bsf STATUS,RP0         ; RAM PAGE 1

        movlw 0x00
        movwf TRISC             ; portC all pins output

        movlw b'00100000'      ; RB5(RX)=input, others output
        movwf TRISB

; ------------------------------------
; set BAUD RATE TO COMMUNICATE WITH PC
; ------------------------------------
; Boot Baud Rate = 9600, No Parity, 1 Stop Bit
;
        movlw 0x19              ; 0x19=9600 bps (0x0C=19200 bps)
        movwf SPBRG
        movlw b'00100100'     ; brgh = high (2)
        movwf TXSTA           ; enable Async Transmission, set brgh

        bcf STATUS,RP0        ; RAM PAGE 0

        movlw b'10010000'     ; enable Async Reception
        movwf RCSTA
;
; ------------------------------------
; PROVIDE A setTLING TIME FOR START UP
; ------------------------------------
;
        clrf dataL
settle: decfsz dataL,F
        goto settle

        movf RCREG,W
        movf RCREG,W
        movf RCREG,W        ; flush receive buffer

;
; ---------
; MAIN LOOP
; ---------
;
	clrf PORTC
	movlw redLED
	movwf PORTB

        call message            ; prints out a message if DEBUG is 1
	call check_init 	     ; wait for INIT message from WRT54GL
	bsf PORTB,7
loop:   call receive_delay    ; wait for a char		
	call add_green	     ;set greenLED on
	call process_input     ;make sure that forward and backward aren't both high! or that greenLED and redLED aren't both high! or that left and right aren't both high!
        call send                  ; send the char
        goto loop

process_input:
; Make sure that Forward & Backward cannot be ON at the same time
; Make sure that Left & Right cannot be ON at the same time
; Output result to PORTB
	
	MOVWF temp
	BTFSC temp,0 		;//Execute next line if temp,0 is HIGH
	BCF temp,1
    	BTFSC temp,2 		;//Execute next line if temp,2 is HIGH
	BCF temp,3
    	BTFSC temp,6 		;//Execute next line if temp,6 is HIGH
	BCF temp,7
	MOVF temp,0
    	andlw b'00001111'
	movwf PORTA
	movf temp,0
	andlw b'11110000'
	movwf PORTB
	movf temp,0
	return

add_green:
	movwf temp
	btfss temp,7  		;If greenLED is LOW execute next line
	bsf temp,7
	movf temp,0
	return

;
; -------------------------------------------
; RECEIVE CHARACTER FROM RS232 AND STORE IN W
; -------------------------------------------
; This routine does not return until a character is received.
;
receive:
	btfss PIR1,RCIF         ; (5) check for received data
        goto receive

data_received:
        movf RCREG,W            ; save received data in W
        return


check_init:
; waits to receive 'jbpro' from the router meaning that the software is up and ;running after the message is received, the greenLED is turned on and ;microcontroller can drive the car
	call receive_delay
	sublw 'j'
	btfss STATUS, Z
	goto check_init
	call receive_delay
	sublw 'b'
	btfss STATUS, Z
	goto check_init
	call receive_delay
	sublw 'p'
	btfss STATUS, Z
	goto check_init
	call receive_delay
	sublw 'r'
	btfss STATUS, Z
	goto check_init
	call receive_delay
	sublw 'o'
	btfss STATUS, Z
	goto check_init

#if DEBUG
;prints message and goes in to an endless loop of flashing greenLED
	call message

Loop:	
	movlw	greenLED
	movlw   0xff
	movwf	PORTA		;set all bits on
	call	Delay		;this waits for a while!
	movlw	0x00
	movwf	PORTA
	call	Delay
	goto	Loop		;go back and do it again
#endif

return


receive_delay:
				;299993 cycles
	movlw	0x5E
	movwf	d1
	movlw	0xEB
	movwf	d2
delay_0:
	btfsc PIR1,RCIF 	        ;check for serial data
	goto got_data 		;if we do, goto got_data!
	decfsz	d1, f
	goto	$+2
	decfsz	d2, f
	goto	delay_0
	movlw 0x00
	return

got_data: 
;move data in to W
	
	btfsc PIR1,RCIF
	movf RCREG,W
	return

#if DEBUG
Delay:	
	movlw	d'250'		;delay 250 ms (4 MHz clock)
	movwf	temp
d11:	
	movlw	0xC7
	movwf	d1
	movlw	0x01
	movwf	d2
Delay_0:
	decfsz	d1, f
	goto	$+2
	decfsz	d2, f
	goto	Delay_0

	decfsz	temp, f
	goto	d11
	retlw	0x00
#endif

;
; -------------------------------------------------------------
; SEND CHARACTER IN W VIA RS232 AND WAIT UNTIL FINISHED SENDING
; -------------------------------------------------------------
;
send:    
#if DEBUG
	movwf TXREG             ; send data in W

TransWt:
	bsf STATUS,RP0          ; RAM PAGE 1
WtHere: btfss TXSTA,TRMT   ; (1) transmission is complete if hi
        goto WtHere
	bcf STATUS,RP0          ; RAM PAGE 0
#endif
        return
;
; -------
; MESSAGE
; -------
;
message 
#if DEBUG
	movlw  '1'
        call send
        movlw  '6'
        call send
        movlw  'F'
        call send
        movlw  '6'
        call send
        movlw  '2'
        call send
        movlw  '8'
        call send
        movlw  ' '
        call send
        movlw  'a'
        call send
        movlw  'l'
        call send
        movlw  'i'
        call send
        movlw  'v'
        call send
        movlw  'e'
        call send
        movlw  0x0D		; CR
        call send
        movlw  0x0A		; LF
        call send
#endif
        return

        .END
Any help would be greatly appreciated...