TODOPIC
Microcontroladores PIC => Almacén del Assembler => Mensaje iniciado por: fzurita en 18 de Marzo de 2008, 10:23:49
-
Hola! Necesito recibir desde una EEPROM externa 1 byte por la USART de un 16F628A, y cargarlo en el registro W para su posterior procesamiento. Alguien tiene un codigo lo mas simplificado posible para esta tarea? y si es con algun comentario, mejor puesto que estoy en mi primer proyecto con PICs :)
saludos 8)
-
Hola! Necesito recibir desde una EEPROM externa 1 byte por la USART de un 16F628A, y cargarlo en el registro W para su posterior procesamiento. Alguien tiene un codigo lo mas simplificado posible para esta tarea? y si es con algun comentario, mejor puesto que estoy en mi primer proyecto con PICs :)
Has configurado ya la usart?
Si es así, el código podría quedar algo así como
_ESPERABYTE:
btfss PIR1,RCIF
goto _ESPERABYTE
movf RCREG,w
movwf MIDATO
-
No, aun me falta eso... pero la recepcion en si.......es asi de simple???? jajaja es que en otros post he visto unos codigos inteminables, aun no me lo creo.
:D
Encontre esta configuracion, por favor corrigeme si esta ok para lo que necesito, o si necesito agregarle algo mas (las habilitaciones de interrupcion son necesarias?)
clrf LATB
clrf TRISB
movlw 19h ; 9600 baudios
movwf SPBRG
bsf TXSTA, TXEN
bsf TXSTA, BRGH
bsf RCSTA, SPEN
bsf RCSTA, CREN
bcf PIR1, RCIF
bsf PIE1, RCIE
bsf INTCON, PEIE
bsf INTCON, GIE
saludos 8)
-
No, aun me falta eso... pero la recepcion en si.......es asi de simple???? jajaja es que en otros post he visto unos codigos inteminables, aun no me lo creo.
La recepción de un byte es así de simple, pero depende qué hagas luego con el lo que puede que haga a tu código interminable o no. :)
Encontre esta configuracion, por favor corrigeme si esta ok para lo que necesito, o si necesito agregarle algo mas (las habilitaciones de interrupcion son necesarias?)
No, no son necesarias para nada, puedes configurar tu módulo para enviar o recibir sin tocar nada.
Yo veo correcto el código de configuración, lo que sí eso de "LATB" es de los 18F no de un 16f628A, elimina esa línea.
El valor del SPBRG depende del clock que uses así que si te fijas en el datasheet tienes un listado de algunos valores pre-calculados sobre todo para ciertos clocks que son muy comunes.