				PROCESSOR		16F628A
				radix			dec
				#include 		<p16f628a.inc>
				__config  		_INTRC_OSC_NOCLKOUT & _LVP_OFF & _WDT_OFF & _PWRTE_ON & _BODEN_ON & _CP_OFF
				;__config  		_HS_OSC & _LVP_OFF & _WDT_OFF & _PWRTE_ON & _BODEN_ON & _CP_OFF
;-------------------------------------------------------------------------------------------------------------
				cblock			0x20
				dataL
				endc
;-------------------------------------------------------------------------------------------------------------
				org				0x00
				goto			BEGIN
;-------------------------------------------------------------------------------------------------------------
OPEN_CAN_CHANEL	
				movlw			'O'						;OPEN the CAN chanel
				call			WRITECHAR
				movlw			0x0D
				call			WRITECHAR
				call			READCHAR
				sublw			0x0D
				btfss			STATUS,Z
				goto			$-7
				bsf				PORTB,0					;CAN chanel is OPEN
				return
;-------------------------------------------------------------------------------------------------------------
SETUP_CAN232
				movlw			'S'						;Setup 500 Kbit
				call			WRITECHAR
				movlw			'6'					
				call			WRITECHAR			
				movlw			0x0D					;[CR]
				call			WRITECHAR
				call			READCHAR
				sublw			0x0D
				btfss			STATUS,Z
				goto			$-9
				movlw			'U'						;Setup 9600 baud
				call			WRITECHAR
				movlw			'5'
				call			WRITECHAR
				movlw			0x0D
				call			WRITECHAR
				call			READCHAR
				sublw			0x0D
				btfss			STATUS,Z
				goto			$-9
				return	
;-------------------------------------------------------------------------------------------------------------
SETUP_RS232
				bsf				STATUS,RP0				;set BANK1
				movlw			B'11111111'
				movwf			TRISA					;PORTA is defined as INPUT
				movlw			B'11110010'
				movwf			TRISB					;PORTB1 - RxD, PORTB2 - TxD
				movlw			0x06
				movwf			SPBRG					;set 9600 bps
				movlw			B'00100100'
				movwf			TXSTA
				bcf				STATUS,RP0				;set BANK0
				movlw			B'10010000'
				movwf			RCSTA
				return
;------------------------------------------------------------------------------------------------------------
READCHAR
				btfss			PIR1,RCIF
				goto			$-1
				movf			RCREG,w
				return
;------------------------------------------------------------------------------------------------------------
WRITECHAR
				movwf			TXREG
				bsf				STATUS,RP0
				btfss			TXSTA,TRMT
				goto			$-1
				bcf				STATUS,RP0
				return
;------------------------------------------------------------------------------------------------------------
BEGIN			
				bcf				STATUS,RP1
				bcf				STATUS,RP0				;set BANK0
				movlw			0x7
				movwf			CMCON					;Set comparators off
				;--------------------------
				movlw			B'00000000'
				movwf			PORTA
				;--------------------------
				movlw			B'00000100'
				movwf			PORTB
				;--------------------------
				call			SETUP_RS232
				;--------------------------
				clrf 			dataL 					;Settling time for start up
		  		decfsz 			dataL,F 
        		goto 			$-1
        		movf 			RCREG,W 
       		 	movf 			RCREG,W 
        		movf 			RCREG,W 
 				;--------------------------
				call			SETUP_CAN232
				;--------------------------
				call			OPEN_CAN_CHANEL
				;--------------------------
VAL1			movlw			't'
				call			WRITECHAR
				movlw			'2'
				call			WRITECHAR
				movlw			'8'
				call			WRITECHAR
				movlw			'0'
				call			WRITECHAR
				movlw			'4'
				call			WRITECHAR
				movlw			'0'
				call			WRITECHAR
				movlw			'0'
				call			WRITECHAR
				movlw			'0'
				call			WRITECHAR
				movlw			'0'
				call			WRITECHAR
				movlw			'0'
				call			WRITECHAR
				movlw			'0'
				call			WRITECHAR
				movlw			'1'						;Value of RPM
				call			WRITECHAR
				movlw			'5'
				call			WRITECHAR
				movlw			0x0D
				call			WRITECHAR
				call			READCHAR
				sublw			0x0D
				btfss			STATUS,Z
				goto			VAL1
				goto			VAL1
				end