# simulacion de  recepcion  en comunicacion serial PROTEUS



## ben99 (Oct 27, 2007)

caballeros para saber que le falta a mi programa para realizar una buena simulacion en proteus en recepcion ya qu he intentado hacerlo y no ha sido posible.

como si no me detectara las tecleadas y se queda preguntando por el bit de :RCIF
BTFSS PIR1,RCIF


----------



## ben99 (Oct 27, 2007)

otro adjunto

saludos y gracias


----------



## ingdenis1 (Feb 5, 2010)

ami tambien me interesa


----------



## entropio (Sep 25, 2010)

aki esta mi rutina de recepcion espero y te sirva, viene algo compacta cuidado


;*********************************************************************
;				PROCEDIMIENTO DE RECEPCIÓN ASINCRONA RS232
;				2400 BAUDIOS, 8 BITS DE DATOS, NO PARIDAD.
;*********************************************************************
RECIBE	banco1	
	clrf SPBRG
	movlw 0x19	; Coloca el numero 25 decimal en el registro SPBRG.
	movwf SPBRG
	bcf TXSTA,BRGH 	; Coloca baud Rate Low speed.
	bcf TXSTA,SYNC 	; Coloca en modo Asincrono.
	banco0
	bsf RCSTA,SPEN 	; Habilita la comunicaion serial del PIC.
	banco1
	bsf PIE1,RCIE	; Habilita el bit de interrupción por recepción.
	banco0
	bcf RCSTA,RX9	; Coloca la recepción a 8 Bits.
	bsf RCSTA,CREN 	; Comienza la recepción.
	Dly32 d'12500' 	; Retardo de 250 mS.
E1	btfss PIR1,RCIF	; Checa si se trasnsfirio el dato al reg RCREG, RCIF es solo lectura y borrado por hw.
	goto E1		; Aplica corrección que es seguir censando.
	btfsc RCSTA,OERR; Si  esta el BUFFER lleno y el reg RSR tambien Checa si se perdio el dato en el reg SRS
	goto E2		; Aplica corrección.
	btfsc RCSTA,FERR; Checa que el bit de paro no llego en cero.
	goto E3
	dame
	bcf RCSTA,CREN	; termina la recepción asincrona.	
	return
;* APLICA CORRECION PARA LEER EL BUFFER DEL REGISTRO RCREG Y BORRAR EL BIT OERR** 
E2	dame		; Lee el registro RCREG.
	call ERRRX1	; Llama el procedimiento para mandar la señal de error
	bcf RCSTA,CREN 
	bsf RCSTA,CREN  ; limpia el bit OERR y reinicia la recepción.
	goto E1
;*************** APLICA CORRECION PARA PEDIR DE NUEVO EL DATO ************
E3	call ERRRX2
	goto E1
;********************************************************************

jejej olvide mesionar algo es para el 16f628A y las variables son estas



Title "relevadores_serial"
list p=16f628
#include p16f628.inc ; Esta es una directiva del ensamblador
processor 16f628A ; Esta es una directiva del ensamblador


;*********************************************************************
;    				CARACTERISTICAS ESPECIALES DEL PIC
;*********************************************************************
__config 0x2138 ; coloca 0x2138 que en binario es b'10000100111000' es una directiva de ensamblador.
;*********************************************************************


; Direciones de Memoria RAM.

STATUS equ 0x03	;Dirección de la memoria RAM Banco 0.
FSR equ 0x04	;Dirección de la memoria RAM Banco 0.
PORTA equ 0x05	;Dirección de la memoria RAM Banco 0.	
PORTB equ 0x06	;Dirección de la memoria RAM Banco 0.
CMCON equ 0x1F	;Dirección de la memoria RAM Banco 0.
TRISA equ 0x85	;Dirección de la memoria RAM Banco 1.
TRISB equ 0x86	;Dirección de la memoria RAM Banco 1.
PCON equ 0x8E	;Dirección de la memoria RAM Banco 1.
Dly0 equ 0x20	;Registro de proposito general Banco 0.  
Dly1 equ 0x21	;Registro de proposito general Banco 0.
Dly2 equ 0x22	;Registro de proposito general Banco 0.
Dly3 equ 0x23	;Registro de proposito general Banco 0.
DATO equ 0x27	;Registro de proposito general Banco 0.
TEMP equ 0x28	;Registro de proposito general Banco 0.
RCSTA equ 0x18	;Dirección de la memoria RAM Banco 0.
TXSTA equ 0x98	;Dirección de la memoria RAM Banco 1.
SPBRG equ 0x99	;Dirección de la memoria RAM Banco 1.
PIE1 equ 0x8C	;Dirección de la memoria RAM Banco 1 este registro contiene bits de habilitación de interrupciones.
PIR1 equ 0x0C	;Dirección de la memoria RAM Banco 0 este registro contiene bits de baderas de interrupción.
TXREG equ 0x19	;Dirección de la memoria RAM Banco 0 aqui se ponen los datos que se van transmitir.
RCREG equ 0x1A	;Dirección de la memoria RAM Banco 0 aqui llegan los datos recividos en el registro RSR. 


;Número de Bit en registros de la memoria RAM.

RP0 equ 0x05	; Bit número 5 del registro STATUS.
RP1 equ 0x06	; Bit número 6 del registro STATUS.
OSCF equ 0x03	; Bit número 3 bit para colocar el Osc Interno a 4 Mzh.
SPEN equ 0x07	; Bit número 7 habilita el Puerto Serie poner en 1.
SYNC equ 0x04	; Bit número 4 poner en 0 para comunicaión Asincrona.
BRGH equ 0x02	; Bit número 2 poner en 0 para Bajo Baud Rate.
TX9 equ 0x06	; Bit número 6 del registro TXSTA poner en 0 para transmisiones de 8 Bits.
RX9 equ 0x06	; Bit número 6 del registro RCSTA poner en 0 para recepciones de 8 bits.
TXEN equ 0x05	; Bit número 5  del registro TXSTA 1 para transmitir y en 0 para no transmitir.
CREN equ 0x04	; Bit número 4 del registro RCSTA 1 habilita la recepción continua 0 de los contrario.
IN equ 0x01	; Bit número 1 para uso general en los registros TRIS y PORT.
OUT equ 0x02	; Bit número 2 para uso general en los registros TRIS y PORT.
RCIE equ 0x05	; Bit número 5 del registro PIE1 habilita la recepción por interrución.
TXIE equ 0x04	; Bit número 4 del registro PIE1 habilita la transmición por interrupción
RCIF equ 0x05	; Bit número 5 del registro PIR1 da bandera de interrupción de recepción 1 si el buffer esta lleno 0 lo contrario.
TXIF equ 0x04	; Bit número 4 del registro PIR1 da bandera de interrupción de transmición 1 si el buffer esta vacio 0 de lo contrario.
TRMT equ 0x01	; Bit número 1 del reistro TXSTA da el estatus del registro TSR solo lectura.
OERR equ 0x01	; Bit número 1 del registro RCSTA 1 si esta lleno  el buffer doble de RCREG.
FERR equ 0x02	; Bit número 2 del registro RCSTA


----------

