simulacion de recepcion en comunicacion serial PROTEUS

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
 

Adjuntos

  • prurr_143.txt
    4.7 KB · Visitas: 145
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
 
Última edición:
Atrás
Arriba