Saludos.
El motivo para este, es que he leído mucho acerca de que el pic puede emplearse en modo USART,
el cual nos permite hacer la comunicación en forma serie, estoy empezando a programar por primera vez el usart,
y he investigado acerca de este y sé que el pic16f877a nos puede ayudar con el usart.
Sin embargo yo solo he programado en C, con lo que he programado cosas sencillas como la siguiente:
Este programa testea dos push botons, si alguno de los dos se prende envía la letra A o la letra B por usart,
y si a Rx le llega un 100 prende el Led, si le llega un 200 apaga el led.
El punto es que quisiera saber si este programa entra en el pic16f877a, ya que este programa se probó en el 18F25K20 ?
¿Ahora quisiera saber si solamente con enviar directamente la A y la B, el modulo bluetooth las recibirá?
Así mismo también la indicación de la practica me dice que el programa lo pase a ensamblador,
yo nunca he programado en ensamblador, por lo que un amigo de la escuela me mostró el siguiente código,
el cual lee los datos del receptor y los muestra en un modulo de leds.
Así mismo lee los datos que hay en en el puerto y los envía.
Lo que quisiera saber es si con hacer los siguientes cambios en la parte de recepción, ya que como se muestra en el código en C, necesito decidir entre dos casos, el 100 y el 200, entonces seria el siguiente cambio:
teniendo esto
movf portb,w
movwf txreg
pasarlo por lo siguiente
movf portb, w
movwf auxiliar
call prueba200
call prueba 100.
TRANS BSF STATUS,RP0
BTFSS TXSTA,TRMT
goto $-1
bcf STATUS,RP0
BCF PIR1,TXIF
CLRF PORTD
GOTO PRINCIPAL
END
prueba200 movlw .200
subwf auxiliar
btfss auxiliar,4
RETURN
GOTO TRANS
prueba200 movlw .100
subwf auxiliar
btfss auxiliar,3
RETURN
GOTO TRANS
Así mismo como soy nuevo programando en ensamblador, quisiera saber si sacar así y conectar directamente con un cable el transmisor del pic con el receptor del bluetooth , y lo mismo con con el receptor del pic con el transmisor del bluetooth me dará los datos así directamente.
Así mismo quisiera que de favor alguien me explicara los siguientes registros que vienen en el programa:
¿Para que mover este valor a config?
__config 0x3F71
¿Para qué sirve (Servicio de interrupción)?
(INICIO USART)
(Transmisión de datos)
BTFSS TXSTA,TRMT (QUE TESTEA ,QUE ES TRMT?)
BCF PIR1,TXIF (QUE REGISTROS SON?)
Les anexo el código completo, así como la imagen de bloques que se usará para armar este proyecto en android.
Y finalmente me gustaría saber como probar esto en proteus, ya que me han dicho que existen terminales virtuales que simulan puerto serial.
En temas anteriores usaban MAX32 para comunicar con DB9, en mi caso es el Bluetooth con un android
¿Si funciona igual? De antemano gracias y espero no sea mucho!
Nota. Se usará el módulo Bluetooth HC-06
El motivo para este, es que he leído mucho acerca de que el pic puede emplearse en modo USART,
el cual nos permite hacer la comunicación en forma serie, estoy empezando a programar por primera vez el usart,
y he investigado acerca de este y sé que el pic16f877a nos puede ayudar con el usart.
Sin embargo yo solo he programado en C, con lo que he programado cosas sencillas como la siguiente:
Código:
DECLARE HSERIAL_BAUD = 9600 'SETEAMOS LA VELOCIDAD DE LA COMUNICACIÓN
DECLARE HSERIAL_CLEAR = ON 'LIMPIAMOS EL BUFFER DESPUÉS DE RECIBIR
'**************************************************************************
DIM LED AS BYTE 'DECLARO UNA VARIABLE PARA EL LED
DIM A AS WORD 'DECLARO UNA VARIABLE PARA EL CONTADOR
CLEAR 'LIMPIO LA RAM AL INICIAR
DELAYMS 100 'RETARDO PARA ESTABILIZAR ALIMENTACIÓN
LOW PORTB.0 'INICIAMOS CON EL LED APAGADO
Lazo: 'INICIO EL LAZO DE PROGRAMA
IF PORTB.1 = 0 THEN 'SI EL PIN 1 DELPUERTO B ESTÁ BAJO
HSEROUT ["A"] 'TRANSMITO LA INFORMACIÓN (PULSADOR 1)
ELSEIF PORTB.2 = 0 THEN 'SI EL PIN 2 DELPUERTO B ESTÁ BAJO
HSEROUT ["B"] 'TRANSMITO LA INFORMACIÓN (PULSADOR 2)
END IF 'CIERRO LA CONDICIÓN
ESPERO: 'ENCLAVE DE ESPERA
DELAYMS 1 'DEMORA
IF PORTB.1 = 0 THEN GOTO ESPERO 'SI NO SUELTO EL BOTÓN ME QUEDO
IF PORTB.2 = 0 THEN GOTO ESPERO 'SI NO SUELTO EL BOTÓN ME QUEDO
HSERIN 50,Lazo,[DEC LED] 'CONTROLO SI ME LLEGA LA INSTRUCCIÓN
'DESDE EL MÓDULO BLUETOOTH SINO, SALTO
'A SEGUIR ESPERANDO
IF LED = 100 THEN 'SI ME LLEGA UN 100
HIGH PORTB.0 'ENCIENDO EL LED
ELSEIF LED = 200 THEN 'SI ME LLEGA UN 200
LOW PORTB.0 'LO MANDO A APAGAR
ENDIF 'CIERRO LA CONDICIÓN
GOTO Lazo 'CIERO EL LAZO DE PROGRAMA
y si a Rx le llega un 100 prende el Led, si le llega un 200 apaga el led.
El punto es que quisiera saber si este programa entra en el pic16f877a, ya que este programa se probó en el 18F25K20 ?
¿Ahora quisiera saber si solamente con enviar directamente la A y la B, el modulo bluetooth las recibirá?
Así mismo también la indicación de la practica me dice que el programa lo pase a ensamblador,
yo nunca he programado en ensamblador, por lo que un amigo de la escuela me mostró el siguiente código,
el cual lee los datos del receptor y los muestra en un modulo de leds.
Así mismo lee los datos que hay en en el puerto y los envía.
Lo que quisiera saber es si con hacer los siguientes cambios en la parte de recepción, ya que como se muestra en el código en C, necesito decidir entre dos casos, el 100 y el 200, entonces seria el siguiente cambio:
teniendo esto
movf portb,w
movwf txreg
pasarlo por lo siguiente
movf portb, w
movwf auxiliar
call prueba200
call prueba 100.
TRANS BSF STATUS,RP0
BTFSS TXSTA,TRMT
goto $-1
bcf STATUS,RP0
BCF PIR1,TXIF
CLRF PORTD
GOTO PRINCIPAL
END
prueba200 movlw .200
subwf auxiliar
btfss auxiliar,4
RETURN
GOTO TRANS
prueba200 movlw .100
subwf auxiliar
btfss auxiliar,3
RETURN
GOTO TRANS
Así mismo como soy nuevo programando en ensamblador, quisiera saber si sacar así y conectar directamente con un cable el transmisor del pic con el receptor del bluetooth , y lo mismo con con el receptor del pic con el transmisor del bluetooth me dará los datos así directamente.
Así mismo quisiera que de favor alguien me explicara los siguientes registros que vienen en el programa:
¿Para que mover este valor a config?
__config 0x3F71
¿Para qué sirve (Servicio de interrupción)?
Código:
BTFSS PIR1,RCIF ( que es PIR1, Y RCIF) COMO TESTEA?
GOTO $-1
MOVF RCREG,W (QUE USO TIENE RCREG?)
MOVWF RECIBIDO
BCF PIR1,RCIF (
BTFSS PORTC,0 ...(TESTEA SI SE APRETO EL BOTON??)
RETFIE
Código:
MOVLW .25
MOVWF SPBRG (POR QUE .25 PARA 9600 BAUDIOS)
MOVWF TRISC
MOVLW 24
MOVWF TXSTA (QUE ES TXSTA Y XQ 24)
BCF PIE1,TXIE (QUE SON ESTOS REGISTROS)
BSF PIE1,RCIE
MOVWF RCSTA (XQ SE MUEVE 90 Y QUE ES RCSTA)
movf portb,w
movwf txreg
BTFSS TXSTA,TRMT (QUE TESTEA ,QUE ES TRMT?)
BCF PIR1,TXIF (QUE REGISTROS SON?)
Les anexo el código completo, así como la imagen de bloques que se usará para armar este proyecto en android.
Y finalmente me gustaría saber como probar esto en proteus, ya que me han dicho que existen terminales virtuales que simulan puerto serial.
En temas anteriores usaban MAX32 para comunicar con DB9, en mi caso es el Bluetooth con un android
¿Si funciona igual? De antemano gracias y espero no sea mucho!
Nota. Se usará el módulo Bluetooth HC-06
Adjuntos
Última edición por un moderador: