Programación Específica > Microcontroladores

 Necesito Información Sobre El 16f873

(1/2) > >>

Ignite:
Hola!!!

Primero de todo quiero decir que ya sé que toda la información sobre este micro la puedo encontrar en su datasheet. Pero la verdad es que no dispongo de mucho tiempo para empezar a mirarme detalladamente toda su configuración, y como no es que sea novato en este mundillo, sé que a veces por no tocar simplemente un flag te puedes romper la cabeza para que funcione.
Una vez comentado esto, me gustaría que alguien me comentara que registros tengo que tocar para configurar y poder usar los conversores y la USART. Me bastaría con ejemplos simples ya sea en asm o en c. Soy consciente de que pido mucho, pero es que yo los PIC no los he tocado mucho pero si otras marcas,y me he encontrado a veces que para usar una simple USART tienes que tocar varios registros en un orden determinado y luego leer otros también en un orden.
Espero que alguien me guie un poco.
Gracias.

lmarte:
Hola Ignite, aqui te anexo la configuración como yo la uso, espero te sirva:


--- Código: Text ---BSF    STATUS,5      movlw  b'00000110'&#59;Configuro entradas digitales      movwf  ADCON1      MOVLW    b'11000111'          MOVWF    TRISA      MOVLW  B'10010100'      MOVWF  TRISC      movlw  b'00000000'      movwf  TRISB      movlw  b'00011111'&#59;Configuro prescaler para wdt      movwf  OPTION_REG      movlw   b'00000100'      movwf   TXSTA  &#59;Configuración de transmisión asincrona        BSF    PIE1,1            movlw   b'00000110'      movwf   TXSTA  &#59;Configuración de recepción asincrona            movlw    d'25'        movwf    SPBRG  &#59;Confg a 9600 Baudios             BCF    STATUS,5           

y esto seria en el momento de tx:


--- Código: Text ---TRANSF  BCF    PORTC,3    BSF    STATUS,5  &#59;VOY AL BANCO 1    MOVLW  D'25'    &#59;CARGO W CON DATO    MOVWF  SPBRG    &#59;TRANSFIERO W A SPBRG    MOVLW  b'00100100'  &#59;CARGO W CON PALABRA    MOVWF  TXSTA    &#59;TRANSFIERE W A TXSTA    BCF    STATUS,5  &#59;VOY AL BAMCO 0    CLRF  TXREG    &#59;CLEAR TXREG          CLRF  RCSTA    &#59;CLEAR RCSTA    BSF    RCSTA,7    &#59;HABILITA RC6 PARA TRANSMISION  

Un saludo
Lmarte

Ignite:
Muchas gracias lmarte!!!!

Probaré tu codigo a ver ke tal funciona. Por lo que veo no se tiene que hacer nada raro, simplemente configurar los registros y ya ta.

Saludos.

Xolar:
Hola!!  Yo tambien estoy intentando trabajar con ese mismo PIC, el 16F873, pero mi cometido, entre otros es el comunicarme con el PC mediante el puerto RS-232 utiliazando el MAX-232-A.

Luego he de configurar el pic para que capture el dato entregado en el registro de transmision serie, para compararlo a su vez y configurar el registro contador, si es que cuenta con el, mi idea era realizarlo mediante una interrupcion, que creo se genera autamaticamente una vez comienzan a llegar datos por el pin Rx.

Esto debo hacerlo tres veces, pues tengo tres variables que enviarle al PIC, para que luego comience a ejecutar cierto codigo ciclico y repita una salida, basada en una tabla de valores que tendrá  que recorrerla continuamente hasta que llegue otra interrupcion.

Parece sencillo, pero la verdad es que, para mi, eso de programar un PIC partiendo de cero me parece una tarea un tanto ardua, pues he trabajado con el HC11 y el 68K y eso de programar lo tengo un poco olvidado...

Necesitaria, si no es mucha molestia, algun enlace, libro o algo parecido para poder basarme en ello. La verdad es que si pudiera recibir como contestacion algo en lo que basarme estaria muy agradecido.

Asi mismo, si quereis alguna informacion mas acerca de mi aplicacion en concreto, no tengo ningun inconveniente en comentarla, pero puede ser un poco larga y coñazo, por lo que no la incluyo en esta peticion de AYUDA!!

Gracias por todo.

lmarte:
Hola Xolar, te respondo por partes. para iniciarte en los PIC hay un foro en

Mis primeros pasos

En cuanto al 16F873, si,  tiene un modulo usart para tx y rx. Interrupción como tal no he usado con el módulo, lo que conmumente se hace es esperar a que el bit 5 del registro Pir1  sea uno lo cual nos indica que el buffer receptor está lleno y ya el byte recibido está en el registro rcreg.

Es algo así


--- Código: Text --- full1            btfss   PIR1,5&#59;Revisa el bit 5 para ver si RCREG esta lleno    goto    full1    guardar1                 movf    RCREG,0;Guarda dato de RCREG en w                 movwf  DATO;Guarda el valor de w en registro DATO  
Pero antes de todo debes configurar los registros para txsta, spbrg, rcsta.  
Con ellos configuras la recepción asincrona, la velocidad de tx/rx y activas el módulo receptor.
No es complicado con una pasada por el datasheet es suficiente ´para entenderlos.

Espero te sirva de algo
Un saludo

lmarte

Navegación

[0] Índice de Mensajes

[#] Página Siguiente

Ir a la versión completa