TODOPIC
Microcontroladores PIC => Todo en microcontroladores PIC => Mensaje iniciado por: gazu_n en 01 de Marzo de 2006, 09:20:00
-
hola amigos necesito comunicar 2 pics por via RF a traves de los modulos de RF TLP434 y RLP434 (los pics son 16F627A tx y 16F877A rx) intente a traves de un pin por medio de un programa propio pero no tuve exito, despues trate de comunicar por medio del puerto USART de los pics pero tampoco tuve exito, les rogaria si me dieran una manito amigos que ya tuvieron experiencia en este tema ya sea con ejemplos de codigo, consejos.......
muchas gracias espero su ayuda
-
Hola amigo soy nuevo y es la primera ves que meto la pata, pero te cuento que yo los trabajo muchisimo y son perfectos y casi inmortales, es desir es desir es dificil que fallen el problema es que en la comunicacion por radio hay muchos ruidos que se meten los cuales son interpretados como datos, te propongo que empieses haciendo un transmisor usando el usar del pic, a 9600 baudios sin pariada y 1 bit de parada, luego armes un reseptor pero lo conectas al pc y un programa monitor para que observes los datos que te salen y despues cuentas como te salio la cosa, lo anterior es para aprender a interpretar los datos ya que los puedes ver en la ventana del monitor. saludos bye
mariano_pic
-
te comento que use esos integrados para una transmision de RF, hay mucho de eso sobre el tema, desde fotso de los componentes, etc, bastante date una buscadita, te dejo este link, porque fue el que ams me ayudo sobre el tema, sobre todo los aportes de código de Algec: http://www.todopic.com.ar/foros/index.php?topic=11964.20, creo que ta por ahi, sino avisame, qeu mi intenet esta pesimo
-
hola amigo gazu_n, me parece o segun lo que lei en tu post ya habia sintentado comunicarlos de forma alambrica y no tuvistes extio con tus 2 intentos, q raro? por ahi q hicistes algo mal un detalle minimo y no te salio, yo tb pase por eso muchas veces (y las sigo pasando :mrgreen:), si insistes en las otras comunicaciones (un pin o el USART) me pasas la voz q te puedo pasar codigos q si funcionana y comprobadazossss jejeje.
sobre los mudolos RF no tengo mucha experiencia pero esta bien el camino q estas tomando, mucha gente lo hace de esa manera e informacion no te va a faltar :-/ exitos!!!!
-
saludos :P, este es mi primer mensaje en estos foros, y me gustaria ayudar a todos los que han sufrido sufrimos y sufriran con esto de los Rfs .. jejeje.. :-/ Yo tambien he usado los modulos RF TLP434 y RLP434 y tambien los TLP418 y RLP4318--- de acuerdo con mi pequeña experiencia con estos dos pares puedo recomendar que para los 418 trabajes a 1200 baudios y para los 434 a 2400 ( no me ha fallado asi).... ademas el truco de la comunicacion no es solo conectarlos adecuadamante.... sino la forma en que envias los datos.... de igual manera a como nos habla nuestro amigo mariano_pic siempre es bueno hacer prueba del receptor con el pc para hacer un analisis de los datos.... pero bueno.. aqui van dos trucos que puedes usar para que la comunicacion no moleste tanto con el ruido.
1. enviar datos constantemente, de esta forma la sincronizacion entre el Tx y el Rx se mantiene.
2. Para evitar enviar datos constantemente, suelo simular un nivel logico 0 y luego un 1 antes de enviar el dato que requiero.. enviando (0x00)(0xff)(dato)... de esta forma el dato que lea el Rx va a ser con referencia a los niveles que llegaron con anterioridad.
Ademas de estos dos truquillos, recomiendo tambien usar 'identificadores' antes y despues del dato (esto lo lei recientemente y creeme que funciona)... por ejemplo enviar #(dato)*. si no coinciden entoces continuas recibiendo asi sea ruido pero no va a afectar tu pic receptor... ahora bien.. puedes hacer lo siguiente (0x00)(0Xff)(#)(dato)(*)...
de maravilla..... espero les sea de gran ayuda...
ahh y otra cosita... debes usar antenas adecuadas... no tieen buen alcanze con 'cablecitos enroscados' :mrgreen:..
____________________________________________________
Saludos desde Colombia!... que hermoso país..
-
Giovanny, usaste USART para hacer comunicacion RF?? pues a mi me dijeron que esa no es la forma, y antes hice la prueba y efectivamente no me funciono con USART, aunque solo enviaba DATO sin identificadores, pero ya el usart solito te coloca eso: BitStart-Dato-BitStop (un bit de start y uno o dos de stop segun programacion hecha), y envias un 0x00 con su start y stop despues un 0xff tb con sus bits start y stop; # y * de la misma forma y despues el dato, tb de la misma forma, y pues nose si sera muy efectivo. Creo que la mejor forma de hacerlo es enviar una trama sola directamente con bits de start y el dato, pero solo una trama, me referiero a que 0x00 0xff # * tengan un mismo bit de star por ejemplo:
quedaria asi: BitStar - 0x00 - 0xff - '#' - '*' - dato - BitStop Lo que daria como resultado una sola trama
y mas o menos es eso lo que realiza algec en el link que deje, utiizando el protocolo RC-5 de Philips; podira usarse cualquier protocolo, pero realizar el codigo para el mismo seria el reto, primero definiendo los bits de star y stop (este ultimo de ser necesario), y el equivalente a un uno y cero logicos, seran retardos nose mayores para un uno o cero, o seguir talvez las reglas qeu diga alguna codificacion como la Manchester por ejemplo u otra, y pues lo que qeuda será un UART diseñado, perfeccionado para este tipo de trabajos (RF) por tanto no se usará el USART interno del PIC y se usará cualquier pin y hasta funcionara con cualquier PIC (cuya memoria sea suficiente)
weno espero se haya comprendido, y pues aca dejo la pagina que segun mi opinion ha marcado el centro de todos los mensajes de este tipo: http://www.sbprojects.com/knowledge/ir/ir.htm
en el menu de la parte izquierda esta el link al protocolo rc-5 que mencione y estan otros mas, que podrias usar, solo debes implementar el código, en la pag que te deje de link en mi primer mensaje esta implementado para el RC5 por algec.
espero haber sido de ayuda, y pues si no quedo algo claro, o si escribe alguna tonteria, pues espero me lo hagan notar, pues nos leemos, adios!!
-
Amigo crim tengo años con estos tlp-rlp entre las cosas que he desarrollado es un recolector de datos de temperatura con el usart de un pic16f877 y si tansmite perfectamente, aunque la resepcion la hago desde un pc. y creo que si se puede haser la resepcion con un usart, y es la unica forma en que la he podido haser funcionar. Al prinsipio intente como tu dises pero nunca me dio. Tambien logre la comunicion inalambrica entre 2 pic12f629 usando este protocolo pero en software.
La pagina que distes esta buenisima, pero solo es para comunicacion infraroja, que es diferente.
mariano_pic
-
hola cryn,
Giovanny, usaste USART para hacer comunicacion RF??
respondiendo a esa pregunta, si lo hago con la USART y me ha funcionado.
en realidad no entendi tu explicación... debe ser por eso que ni la apoyo ni la contradigo.. igual agradezco la informacion, me estare documentando sobre el tema...
Aprovechando que contamos con expertos rondando por estos foros.. quiero preguntar si alguien sabe como ajustar
la bobina de un receptor RLP4318 :shock: despues de jugar con ella? :D :-)
-
La pagina que distes esta buenisima, pero solo es para comunicacion infraroja, que es diferente.
mariano_pic
no es solo para comunicacion infrarroja mi buen amigo mariano, como podeis ver es un protocolo, no es exclusivamente para infrarrojos, ya que puede adaptarse facilmente para RF, como mencione yo hice RF; con los modulos TWSyRWS-433 que son identicos a los TLP, y use codigo de Algec para RF usando RC-5 de Phillips (un protocolo de mandos infrarrojos como se ve en la pagina qeu deje); el codigo está en el link qeu deje en mi primer post, y como menciono, me ha funcionado correctamente, y pues como digo es simplemente una Transmisión Recepcion Asincrona (digamos ART) como la USART del PIC, asi que no tendria porque no funcionar, solo se debe tener cuidado en la programacion, porque hice para sony y costo un poco, pero funciona, no dije que no funciona el USART del PIC, solamente que no es la forma (y que a mi no me funciono solo enviando un dato, porque este ya lleva el start y el stop bits)
De hacerlo como menciono Giovanny (un bit de start y stop para cada caracter de delimitacion), porque te genera el USART del PIC automaticamente esos bits de start y stop para cada byte enviado.
en realidad no entendi tu explicación... debe ser por eso que ni la apoyo ni la contradigo.. igual agradezco la informacion, me estare documentando sobre el tema...
creo que mas entendible sera esto:
lo que hace USART en el PIC, es ponerte un bit de start y un bit de stop siempre por cada dato enviado (dependiendo de la configuracion que le des, pueden ser creo hasta 2 bits de parada, y no estoy seguro si se puede omitir el bit de parada, creo que no), lo que harias con tu forma de envio:
Ademas de estos dos truquillos, recomiendo tambien usar 'identificadores' antes y despues del dato (esto lo lei recientemente y creeme que funciona)... por ejemplo enviar #(dato)*. si no coinciden entoces continuas recibiendo asi sea ruido pero no va a afectar tu pic receptor... ahora bien.. puedes hacer lo siguiente (0x00)(0Xff)(#)(dato)(*)...
es: BITSTART 00000000 BITSTOP BITSTART 11111111 BITSTOP BITSTART 01010110 BITSTOP BITSTART dato BITSTOP BITSTART 01001110 BITSTOP
los 8 ceros=0x00; 8 unos=0xff; 01010110= digamos qeu el codigo ascii del numeral; dato=la info enviada; 01001110=digamos que es el codigo ascii del asterisco
lo cual es bastante ineficiente, ya que se desperdicia el uso del canal por ejemplo, y otras cosas mas, que determinan la calidad de la comunicación, por tanto se debe hacer:
BITSTART 00000000 11111111 01010110 dato 01001110 BITSTOP
o mejor el bit de START seran los ceros y unos del principio (y pues sera byte de start) y quedará:
00000000 11111111 01010110 dato 01001110 ; siendo ese ultimo byte tb el bayte de stop o nose colocarle tb el mismo byte de start complementado
y bueno eso es lo que hace un protocolo de mandos infrarrojos (start y datos), por tanto puede ser reusable para RF, solo seguir sus definiciones de unos y ceros.
un poco sobre com asincrona: http://www.monografias.com/trabajos37/entrada-y-salida/entrada-y-salida.shtml
espero no haber confundido, jeje, pues es un tema amplio, y si hablamos todavia de la sincrona, bueno ya no me extiendo, saludos.
-
hola, necesitamos hacer una comunicacion inalambrica entre dos pic, la comunicaciion seria bidireccional, si nos pudiese ayudar, se lo agradeceriamos mucho.
si tiene algo de esquemas o codigo, y nos puede ayudar, le pediria que nos lo mostrara para poder ayudarnos.
le mostrare lo que llevamos de codigo en cuanto tengamos algo.
gracias de antemano
si quiere que hablemos por el msn es jose_eltuba_88@hotmail.com
-
mira aqui hay un pequeño esquema con el RLP434, es sencillo, o tambien estan los zigbee a mayor frecuencia,
sobre la comunicacion te paso un codigo en asm para el pic18F no se que micro uses pero es facil acoplar el codigo
espero te sirva, esta facil...
lo que hace el codigo es transmitir y recibir por las termianles C0 (tx)y C1 (rx) (cabe mencionar que no es necesario que tu pic tenga hardware para comunicacion serial estas estan trabajando con entradas y salidas de datos digitales) , y en las salidas esta un arreglo de leds tipo matriz de 5x3, esto pues te despliega letras, tu puedes cambiar en el codigo las letras que ocupes o el tipo de datos, y las entradas B funcionan para que coloques el codigo a mandar, y con la entrada B5 creo!!, se manda la instruccion para mandar el codigo, esta fue una practica que hice en la escuela asi que le falta depurar, pero para algo didactico te puede serivr, saludos ;)
(http://img59.imageshack.us/img59/2174/introrfso8.jpg)
;Bloque de declaraciones y bla bla blah
; Nuestro formato de letras se llama codigo IEP el quebra cocos, es de 5 bits
;00000 nulo
;00001 A
;00010 B
;00011 C
;00100 D
;00101 E
;00110 F
;00111 G
;01000 H
;01001 I
;01010 J
;01011 K
;01100 L
;01101 M
;01110 N
;01111 ñ N_
;10000 O
;10001 P
;10010 Q
;10011 R
;10100 S
;10101 T
;10110 U
;10111 V
;11000 W
;11001 X
;11010 Y
;11011 Z
;11100 GUION BAJO _
;11101 <
;11110 >
;11111 secuencia de prueba
#INCLUDE <p18F4550.inc>
LECTURA EQU 0x0050 ;Variable de estado
LECTURA_PRUEBA EQU 0x0055 ;Variable de estado
temp EQU 0x0054
temp_retraso EQU 0x0051
temp2_retraso EQU 0x0052
temp3_retraso EQU 0x0053
Ind_Buf EQU 0x00 ; Contador de número de datos copiados
Buf_Dat EQU 0x20 ; Bufer de recepción/transmisión
ORG 0x00 ;Vectorizacion
; GOTO inicio
;------------------------------------------
. BCF INTCON,7 ;DESACTIVAR INTERRUPCIONES
BCF WDTCON,0 ;dESACTIVAR WDT
MOVLW b'00000000' ;timer 0 apagado
MOVWF T0CON ;
;registros de interrupciones
BCF INTCON,7 ;deshabilitar interrupciones
; configurar puertos
CLRF PORTB ; Initialize LATB by clearing output data latches
CLRF LATB ; Alternate method to clear output data latches
MOVLW 0Eh ; Set RB<4:0> as
MOVWF ADCON1 ; digital I/O pins (required if config bit PBADEN is set)
MOVLW 0xFF ; Value used to initialize data direction
MOVWF TRISB ; Set RB<3:0> as inputs RB<5:4> as outputs RB<7:6> as inputs
CLRF PORTD
CLRF LATD
MOVLW 0x00 ;d SALIDA DE MATRIZ DE LEDS
MOVWF TRISD
CLRF PORTC
CLRF LATC
MOVLW 0xFE ;C configuramos primero para leer si hay cambios
MOVWF TRISC ;en las entradas de transmision, si los hay se va
;11111110 ;al codigp para recivir datos,
; para entrar en modo de transmision, al haber 1 en
; rb5 se pasa al codigo de transmision que debera de cargar
; MOVLW b'11111100' a TRISC
;==========================================================================================
;=========antes de hacer algo primero debe de comparar si estara como transmisor o receptor
;==========================================================================================
inicio:
;goto secuencia_prueba
;BTG LATC,0,0
BTFSC PORTB,7,0 ;leer B5 si es 0 salta
;goto LETRA_B
CALL transmisor
;BTG LATC,2,0
BTFSC PORTC,1,0 ;leer C1 si es 0 salta
;goto LETRA_A
GOTO receptor
GOTO inicio ; aqui hay un ciclo infinito hasta que se precione B5 o reciba por primera vez
;============================================
;============TERMINA LA RECEPCION============
;============================================
;==PRUEBA PARA SACAR EL DATO QUE MANDAMOS EN EL PUERTO B
loop_infinito
goto loop_infinito
;==PRUEBA PARA SACAR EL DATO QUE MANDAMOS EN EL PUERTO B
; *****************
; *****************
; **TRANSMISOR*****
; *****************
; *****************
transmisor: ;C0=CLK CI=INFO
BCF LATC,0
CLRF LECTURA_PRUEBA ;BORRAME<,----------------
BSF LATC,0 ;c0=CLK=1 ESTO INDICARA AL RECEPTOR QUE EMEPIECE A RECIVIR, RECIBIRA DESPUES DEL SIGUEINTE PULSO ALTO
BCF TRISC,1 ;C1=OUT --> C1=INFO ; EVENTO A- ESTO PONE cIN COMO SALIA PARA TRANSMITIR INFO, AL FINALIZAR LA TRANSMISION DEBE REGRESAR A C1=OUT
CALL retraso_
BCF LATC,0 ;C0=O clk=0
BCF LATC,1 ; info=0
CALL retraso_
;LECTURA DE B0
BTFSC PORTB,0,0 ;leer B0 SI B0=1 C1=1, SI NO LO MANTIEN EN SU ESTADO ANTERIOR, OSEA 0
BSF LATC,1 ;C1=1 - INFO= 1
BSF LATC,0 ;C0=1 - CLK =1
CALL retraso_ ; aqui daremos u pequeño intervalo de tiempo para dalr tiempo al receptor en
; leer el codigo en c0 e interpretar el cambio de CLK
BCF LATC,0 ; CLK=0
BCF LATC,1 ; INFO=0----se borra para aplicar el criterio de coparacion siguietne
CALL retraso_
BTFSC PORTB,0
BSF LECTURA_PRUEBA,0
;LECTURA DE B1
BTFSC PORTB,1,0 ;leer B1 SI B1=1 C1=1, SI NO LO MANTIEN EN SU ESTADO ANTERIOR, OSEA 0
BSF LATC,1 ;C1=1 - INFO= 1
BSF LATC,0 ;C0=1 - CLK =1
CALL retraso_ ; aqui daremos u pequeño intervalo de tiempo para dalr tiempo al receptor en
; leer el codigo en c0 e interpretar el cambio de CLK
BCF LATC,0 ; CLK=0
BCF LATC,1 ; INFO=0----se borra para aplicar el criterio de coparacion siguietne
CALL retraso_
BTFSC PORTB,1
BSF LECTURA_PRUEBA,1
;LECTURA DE B2
BTFSC PORTB,2,0 ;leer B2 SI B2=1 C1=1, SI NO LO MANTIEN EN SU ESTADO ANTERIOR, OSEA 0
BSF LATC,1 ;C1=1 - INFO= 1
BSF LATC,0 ;C0=1 - CLK =1
CALL retraso_ ; aqui daremos u pequeño intervalo de tiempo para dalr tiempo al receptor en
; leer el codigo en c0 e interpretar el cambio de CLK
BCF LATC,0 ; CLK=0
BCF LATC,1 ; INFO=0----se borra para aplicar el criterio de coparacion siguietne
CALL retraso_
BTFSC PORTB,2
BSF LECTURA_PRUEBA,2
;LECTURA DE B3
BTFSC PORTB,3,0 ;leer B3 SI B3=1 C1=1, SI NO LO MANTIEN EN SU ESTADO ANTERIOR, OSEA 0
BSF LATC,1 ;C1=1 - INFO= 1
BSF LATC,0 ;C0=1 - CLK =1
CALL retraso_ ; aqui daremos u pequeño intervalo de tiempo para dalr tiempo al receptor en
; leer el codigo en c0 e interpretar el cambio de CLK
BCF LATC,0 ; CLK=0
BCF LATC,1 ; INFO=0----se borra para aplicar el criterio de coparacion siguietne
CALL retraso_
BTFSC PORTB,3
BSF LECTURA_PRUEBA,3
;LECTURA DE B4
BTFSC PORTB,4,0 ;leer B4 SI B4=1 C1=1, SI NO LO MANTIEN EN SU ESTADO ANTERIOR, OSEA 0
BSF LATC,1 ;C1=1 - INFO= 1
BSF LATC,0 ;C0=1 - CLK =1
CALL retraso_ ; aqui daremos u pequeño intervalo de tiempo para dalr tiempo al receptor en
; leer el codigo en c0 e interpretar el cambio de CLK
BCF LATC,0 ; CLK=0
BCF LATC,1 ; INFO=0----se borra para aplicar el criterio de coparacion siguietne
CALL retraso_
BTFSC PORTB,4
BSF LECTURA_PRUEBA,4
BSF TRISC,1 ;C1=INFO --> C1=IN ; EVENTO B- ESTO PONE cINFO COMO entrada PARA detectar una transmision
;proveniente de otro micro, AL zomenzar LA TRANSMISION DEBE cambiar C0=OUT-->C0=info recivida (evendo 'c')
;====================================
; FIN DE LA TRANSMISION
;====================================
; MOVFF LECTURA_PRUEBA,LATD; BORRAME<<<<<<<<<<<<<<<<<---------------
return ; REGRESARA DE DONDE LE HABLARON
;============================================
;============INICIA LA RECEPCION=============
;============================================
receptor: ;c0=info c1= clk
BSF TRISC,0 ; co=INFO OUT SE PONE EN IN Y RECIBIRA LA INFORMACION (evento 'c'), al temrinar debe de regresar c0=Cinfo --> C0=Cout
CLRF LECTURA
BTFSC PORTC,1,0 ;leer c1=clk y SALTARA hasta que clk=0 <<<salta si es cero>>>
goto receptor
; EMPIEZA CICLO PARA DIGITO 0
BTFSS PORTC,1,0 ;leer c1=clk SI ES 1 salta
BRA $-1
;LECTURA0
BTFSC PORTC,0,0 ;leer c0=INFO SI ES 1
BSF LECTURA,0 ;ACTIVA LECTURA0
BTFSC PORTC,1,0 ;leer c1=clk SI ES 0 SALTA
BRA $-1
BTFSS PORTC,1,0 ;leer c1=clk SI ES 1 SALTA
BRA $-1
; FINALIZA CICLO PARA DIGITO 0
;LECTURA1
BTFSC PORTC,0,0 ;leer c0=INFO SI ES 1
BSF LECTURA,1 ;ACTIVA LECTURA1
BTFSC PORTC,1,0 ;leer c1=clk SI ES 0 SALTA
BRA $-1
BTFSS PORTC,1,0 ;leer c1=clk SI ES 1 SALTA
BRA $-1
;LECTURA2
BTFSC PORTC,0,0 ;leer c0=INFO SI ES 1
BSF LECTURA,2 ;ACTIVA LECTURA2
BTFSC PORTC,1,0 ;leer c1=clk SI ES 0 SALTA
BRA $-1
BTFSS PORTC,1,0 ;leer c1=clk SI ES 1 SALTA
BRA $-1
;LECTURA3
BTFSC PORTC,0,0 ;leer c0=INFO SI ES 1
BSF LECTURA,3 ;ACTIVA LECTURA3
BTFSC PORTC,1,0 ;leer c1=clk SI ES 0 SALTA
BRA $-1
BTFSS PORTC,1,0 ;leer c1=clk SI ES 1 SALTA
BRA $-1
;LECTURA4
BTFSC PORTC,0,0 ;leer c0=INFO SI ES 1
BSF LECTURA,4 ;ACTIVA LECTURA4
BTFSC PORTC,1,0 ;leer c1=clk SI ES 0 SALTA
BRA $-1
BCF TRISC,0
;============================================
;============TERMINA LA RECEPCION============
;============================================
MOVFF LECTURA,LATD
; goto loop_infinito; BORRAME<<<<<<<<<<<<<<<<<---------------
;====================
;====================DISQUE TABLA DE COMPARACION===================
;====================
; PARA LETRA A
MOVLW 0x01
CPFSGT LECTURA ;Compara FILE con WREG, salto si FILE > WREG SALTA
GOTO LETRA_A ;Si LECTURA NO FUERA > 0x01 (en este caso no salta porque 01 = 01)
; no salta y me manda a A
; PARA LETRA B
MOVLW 0x02
CPFSGT LECTURA ;Compara FILE con WREG, salto si FILE > WREG SALTA
GOTO LETRA_B ;Si LECTURA NO FUERA > 0x02 (en este caso no salta porque 02 = 02)
; no salta y me manda a B
MOVLW 0x03
CPFSGT LECTURA
GOTO LETRA_C
MOVLW 0x04
CPFSGT LECTURA
GOTO LETRA_D
MOVLW 0x05
CPFSGT LECTURA
GOTO LETRA_E
MOVLW 0x06
CPFSGT LECTURA
GOTO LETRA_F
MOVLW 0x07
CPFSGT LECTURA
GOTO LETRA_G
MOVLW 0x08
CPFSGT LECTURA
GOTO LETRA_H
MOVLW 0x09
CPFSGT LECTURA
GOTO LETRA_I
MOVLW 0x0A
CPFSGT LECTURA
GOTO LETRA_J
MOVLW 0x0B
CPFSGT LECTURA
GOTO LETRA_K
MOVLW 0x0C
CPFSGT LECTURA
GOTO LETRA_L
MOVLW 0x0D
CPFSGT LECTURA
GOTO LETRA_M
MOVLW 0x0E
CPFSGT LECTURA
GOTO LETRA_N
MOVLW 0x0F
CPFSGT LECTURA
GOTO LETRA_N_
MOVLW 0x10
CPFSGT LECTURA
GOTO LETRA_O
MOVLW 0x11
CPFSGT LECTURA
GOTO LETRA_P
MOVLW 0x12
CPFSGT LECTURA
GOTO LETRA_Q
MOVLW 0x13
CPFSGT LECTURA
GOTO LETRA_R
MOVLW 0x14
CPFSGT LECTURA
GOTO LETRA_S
MOVLW 0x15
CPFSGT LECTURA
GOTO LETRA_T
MOVLW 0x16
CPFSGT LECTURA
GOTO LETRA_U
MOVLW 0x17
CPFSGT LECTURA
GOTO LETRA_V
MOVLW 0x18
CPFSGT LECTURA
GOTO LETRA_W
MOVLW 0x19
CPFSGT LECTURA
GOTO LETRA_X
MOVLW 0x1A
CPFSGT LECTURA
GOTO LETRA_Y
MOVLW 0x1B
CPFSGT LECTURA
GOTO LETRA_Z
MOVLW 0x1C
CPFSGT LECTURA
GOTO GUION_BAJO
MOVLW 0x1D
CPFSGT LECTURA
GOTO MENOR_QUE
MOVLW 0x1E
CPFSGT LECTURA
GOTO MAYOR_QUE
MOVLW 0x1F
CPFSGT LECTURA
GOTO SECUENCIA_DE_PRUEBA
LETRA_A:
MOVLW b'11011110'
MOVWF LATD
MOVLW b'10110100'
MOVWF LATD
MOVLW b'01111110'
MOVWF LATD
CLRF LATD
BTFSC PORTC,1,0 ;leer C1 si es 0 salta
GOTO receptor
BTFSC PORTB,7,0 ;leer B5 si es 0 salta
CALL transmisor
GOTO LETRA_A
LETRA_B:
MOVLW b'11011111'
MOVWF LATD
MOVLW b'10110101'
MOVWF LATD
MOVLW b'01101110'
MOVWF LATD
CLRF LATD
BTFSC PORTC,1,0 ;leer C1 si es 0 salta
GOTO receptor
BTFSC PORTB,7,0 ;leer B5 si es 0 salta
CALL transmisor
GOTO LETRA_B
LETRA_C:
MOVLW b'11001110'
MOVWF LATD
MOVLW b'10110001'
MOVWF LATD
MOVLW b'01110001'
MOVWF LATD
CLRF LATD
BTFSC PORTC,1,0 ;leer C1 si es 0 salta
GOTO receptor
BTFSC PORTB,7,0 ;leer B5 si es 0 salta
CALL transmisor
GOTO LETRA_C
LETRA_D:
MOVLW b'11011111'
MOVWF LATD
MOVLW b'10110001'
MOVWF LATD
MOVLW b'01101110'
MOVWF LATD
CLRF LATD
BTFSC PORTC,1,0 ;leer C1 si es 0 salta
GOTO receptor
BTFSC PORTB,7,0 ;leer B5 si es 0 salta
CALL transmisor
GOTO LETRA_D
LETRA_E:
MOVLW b'11011111'
MOVWF LATD
MOVLW b'10110101'
MOVWF LATD
MOVLW b'01110001'
MOVWF LATD
CLRF LATD
BTFSC PORTC,1,0 ;leer C1 si es 0 salta
GOTO receptor
BTFSC PORTB,7,0 ;leer B5 si es 0 salta
CALL transmisor
GOTO LETRA_E
LETRA_F:
MOVLW b'11011111'
MOVWF LATD
MOVLW b'10110100'
MOVWF LATD
MOVLW b'01100001'
MOVWF LATD
CLRF LATD
BTFSC PORTC,1,0 ;leer C1 si es 0 salta
GOTO receptor
BTFSC PORTB,7,0 ;leer B5 si es 0 salta
CALL transmisor
GOTO LETRA_F
LETRA_G:
MOVLW b'11001110'
MOVWF LATD
MOVLW b'10110101'
MOVWF LATD
MOVLW b'01111101'
MOVWF LATD
CLRF LATD
BTFSC PORTC,1,0 ;leer C1 si es 0 salta
GOTO receptor
BTFSC PORTB,7,0 ;leer B5 si es 0 salta
CALL transmisor
GOTO LETRA_G
LETRA_H:
MOVLW b'11011111'
MOVWF LATD
MOVLW b'10100100'
MOVWF LATD
MOVLW b'01111111'
MOVWF LATD
CLRF LATD
BTFSC PORTC,1,0 ;leer C1 si es 0 salta
GOTO receptor
BTFSC PORTB,7,0 ;leer B5 si es 0 salta
CALL transmisor
GOTO LETRA_H
LETRA_I:
MOVLW b'11010001'
MOVWF LATD
MOVLW b'10111111'
MOVWF LATD
MOVLW b'01110001'
MOVWF LATD
CLRF LATD
BTFSC PORTC,1,0 ;leer C1 si es 0 salta
GOTO receptor
BTFSC PORTB,7,0 ;leer B5 si es 0 salta
CALL transmisor
GOTO LETRA_I
LETRA_J:
MOVLW b'11101000'
MOVWF LATD
MOVLW b'10100001'
MOVWF LATD
MOVLW b'01101111'
MOVWF LATD
CLRF LATD
BTFSC PORTC,1,0 ;leer C1 si es 0 salta
GOTO receptor
BTFSC PORTB,7,0 ;leer B5 si es 0 salta
CALL transmisor
GOTO LETRA_J
LETRA_K:
MOVLW b'11011111'
MOVWF LATD
MOVLW b'10101010'
MOVWF LATD
MOVLW b'01110001'
MOVWF LATD
CLRF LATD
BTFSC PORTC,1,0 ;leer C1 si es 0 salta
GOTO receptor
BTFSC PORTB,7,0 ;leer B5 si es 0 salta
CALL transmisor
GOTO LETRA_K
LETRA_L:
MOVLW b'11011111'
MOVWF LATD
MOVLW b'10100001'
MOVWF LATD
MOVLW b'01110000'
MOVWF LATD
CLRF LATD
BTFSC PORTC,1,0 ;leer C1 si es 0 salta
GOTO receptor
BTFSC PORTB,7,0 ;leer B5 si es 0 salta
CALL transmisor
GOTO LETRA_L
LETRA_M:
MOVLW b'11011111'
MOVWF LATD
MOVLW b'10101100'
MOVWF LATD
MOVLW b'01111111'
MOVWF LATD
CLRF LATD
BTFSC PORTC,1,0 ;leer C1 si es 0 salta
GOTO receptor
BTFSC PORTB,7,0 ;leer B5 si es 0 salta
CALL transmisor
GOTO LETRA_M
LETRA_N:
MOVLW b'11011110'
MOVWF LATD
MOVLW b'10100100'
MOVWF LATD
MOVLW b'01111100'
MOVWF LATD
CLRF LATD
BTFSC PORTC,1,0 ;leer C1 si es 0 salta
GOTO receptor
BTFSC PORTB,7,0 ;leer B5 si es 0 salta
CALL transmisor
GOTO LETRA_N
LETRA_N_:
MOVLW b'11011101'
MOVWF LATD
MOVLW b'10110100'
MOVWF LATD
MOVLW b'01111101'
MOVWF LATD
CLRF LATD
BTFSC PORTC,1,0 ;leer C1 si es 0 salta
GOTO receptor
BTFSC PORTB,7,0 ;leer B5 si es 0 salta
CALL transmisor
GOTO LETRA_N_
LETRA_O:
MOVLW b'11001110'
MOVWF LATD
MOVLW b'10110001'
MOVWF LATD
MOVLW b'01101110'
MOVWF LATD
CLRF LATD
BTFSC PORTC,1,0 ;leer C1 si es 0 salta
GOTO receptor
BTFSC PORTB,7,0 ;leer B5 si es 0 salta
CALL transmisor
GOTO LETRA_O
LETRA_P:
MOVLW b'11011111'
MOVWF LATD
MOVLW b'10110100'
MOVWF LATD
MOVLW b'01100111'
MOVWF LATD
CLRF LATD
BTFSC PORTC,1,0 ;leer C1 si es 0 salta
GOTO receptor
BTFSC PORTB,7,0 ;leer B5 si es 0 salta
CALL transmisor
GOTO LETRA_P
LETRA_Q:
MOVLW b'11000010'
MOVWF LATD
MOVLW b'10110100'
MOVWF LATD
MOVLW b'01111111'
MOVWF LATD
CLRF LATD
BTFSC PORTC,1,0 ;leer C1 si es 0 salta
GOTO receptor
BTFSC PORTB,7,0 ;leer B5 si es 0 salta
CALL transmisor
GOTO LETRA_Q
LETRA_R:
MOVLW b'11011111'
MOVWF LATD
MOVLW b'10110100'
MOVWF LATD
MOVLW b'01111010'
MOVWF LATD
CLRF LATD
BTFSC PORTC,1,0 ;leer C1 si es 0 salta
GOTO receptor
BTFSC PORTB,7,0 ;leer B5 si es 0 salta
CALL transmisor
GOTO LETRA_R
LETRA_S:
MOVLW b'11010010'
MOVWF LATD
MOVLW b'10110101'
MOVWF LATD
MOVLW b'01101001'
MOVWF LATD
CLRF LATD
BTFSC PORTC,1,0 ;leer C1 si es 0 salta
GOTO receptor
BTFSC PORTB,7,0 ;leer B5 si es 0 salta
CALL transmisor
GOTO LETRA_S
LETRA_T:
MOVLW b'11000001'
MOVWF LATD
MOVLW b'10111111'
MOVWF LATD
MOVLW b'01100001'
MOVWF LATD
CLRF LATD
BTFSC PORTC,1,0 ;leer C1 si es 0 salta
GOTO receptor
BTFSC PORTB,7,0 ;leer B5 si es 0 salta
CALL transmisor
GOTO LETRA_T
LETRA_U:
MOVLW b'11011111'
MOVWF LATD
MOVLW b'10100001'
MOVWF LATD
MOVLW b'01111111'
MOVWF LATD
CLRF LATD
BTFSC PORTC,1,0 ;leer C1 si es 0 salta
GOTO receptor
BTFSC PORTB,7,0 ;leer B5 si es 0 salta
CALL transmisor
GOTO LETRA_U
LETRA_V:
MOVLW b'11001111'
MOVWF LATD
MOVLW b'10100001'
MOVWF LATD
MOVLW b'01101111'
MOVWF LATD
CLRF LATD
BTFSC PORTC,1,0 ;leer C1 si es 0 salta
GOTO receptor
BTFSC PORTB,7,0 ;leer B5 si es 0 salta
CALL transmisor
GOTO LETRA_V
LETRA_W:
MOVLW b'11011111'
MOVWF LATD
MOVLW b'10100110'
MOVWF LATD
MOVLW b'01111111'
MOVWF LATD
CLRF LATD
BTFSC PORTC,1,0 ;leer C1 si es 0 salta
GOTO receptor
BTFSC PORTB,7,0 ;leer B5 si es 0 salta
CALL transmisor
GOTO LETRA_W
LETRA_X:
MOVLW b'11011011'
MOVWF LATD
MOVLW b'10100100'
MOVWF LATD
MOVLW b'01111011'
MOVWF LATD
CLRF LATD
BTFSC PORTC,1,0 ;leer C1 si es 0 salta
GOTO receptor
BTFSC PORTB,7,0 ;leer B5 si es 0 salta
CALL transmisor
GOTO LETRA_X
LETRA_Y:
MOVLW b'11000111'
MOVWF LATD
MOVLW b'10100111'
MOVWF LATD
MOVLW b'01100111'
MOVWF LATD
CLRF LATD
BTFSC PORTC,1,0 ;leer C1 si es 0 salta
GOTO receptor
BTFSC PORTB,7,0 ;leer B5 si es 0 salta
CALL transmisor
GOTO LETRA_Y
LETRA_Z:
MOVLW b'11011001'
MOVWF LATD
MOVLW b'10110101'
MOVWF LATD
MOVLW b'01110011'
MOVWF LATD
CLRF LATD
BTFSC PORTC,1,0 ;leer C1 si es 0 salta
GOTO receptor
BTFSC PORTB,7,0 ;leer B5 si es 0 salta
CALL transmisor
GOTO LETRA_Z
;==============CARACTERES==========
GUION_BAJO:
MOVLW b'11010000'
MOVWF LATD
MOVLW b'10100001'
MOVWF LATD
MOVLW b'01100000'
MOVWF LATD
CLRF LATD
BTFSC PORTC,1,0 ;leer C1 si es 0 salta
GOTO receptor
BTFSC PORTB,7,0 ;leer B5 si es 0 salta
CALL transmisor
GOTO GUION_BAJO
MENOR_QUE:
MOVLW b'11000100'
MOVWF LATD
MOVLW b'10101010'
MOVWF LATD
MOVLW b'01110001'
MOVWF LATD
CLRF LATD
BTFSC PORTC,1,0 ;leer C1 si es 0 salta
GOTO receptor
BTFSC PORTB,7,0 ;leer B5 si es 0 salta
CALL transmisor
GOTO MENOR_QUE
MAYOR_QUE:
MOVLW b'11010001'
MOVWF LATD
MOVLW b'10101010'
MOVWF LATD
MOVLW b'01100100'
MOVWF LATD
CLRF LATD
BTFSC PORTC,1,0 ;leer C1 si es 0 salta
GOTO receptor
BTFSC PORTB,7,0 ;leer B5 si es 0 salta
CALL transmisor
GOTO MAYOR_QUE
;==============numeros=============
NUMERO_0:
MOVLW b'11011111'
MOVWF LATD
MOVLW b'10110001'
MOVWF LATD
MOVLW b'01111111'
MOVWF LATD
CLRF LATD
BTFSC PORTC,1,0 ;leer C1 si es 0 salta
GOTO receptor
BTFSC PORTB,7,0 ;leer B5 si es 0 salta
CALL transmisor
GOTO NUMERO_0
NUMERO_1:
MOVLW b'11010010'
MOVWF LATD
MOVLW b'10111111'
MOVWF LATD
MOVLW b'01110000'
MOVWF LATD
CLRF LATD
BTFSC PORTC,1,0 ;leer C1 si es 0 salta
GOTO receptor
BTFSC PORTB,7,0 ;leer B5 si es 0 salta
CALL transmisor
GOTO NUMERO_1
NUMERO_2:
MOVLW b'11011101'
MOVWF LATD
MOVLW b'10110101'
MOVWF LATD
MOVLW b'01110111'
MOVWF LATD
CLRF LATD
BTFSC PORTC,1,0 ;leer C1 si es 0 salta
GOTO receptor
BTFSC PORTB,7,0 ;leer B5 si es 0 salta
CALL transmisor
GOTO NUMERO_2
NUMERO_3:
MOVLW b'11010101'
MOVWF LATD
MOVLW b'10110101'
MOVWF LATD
MOVLW b'01111111'
MOVWF LATD
CLRF LATD
BTFSC PORTC,1,0 ;leer C1 si es 0 salta
GOTO receptor
BTFSC PORTB,7,0 ;leer B5 si es 0 salta
CALL transmisor
GOTO NUMERO_3
NUMERO_4:
MOVLW b'11000111'
MOVWF LATD
MOVLW b'10100100'
MOVWF LATD
MOVLW b'01111111'
MOVWF LATD
CLRF LATD
BTFSC PORTC,1,0 ;leer C1 si es 0 salta
GOTO receptor
BTFSC PORTB,7,0 ;leer B5 si es 0 salta
CALL transmisor
GOTO NUMERO_4
NUMERO_5:
MOVLW b'11010010'
MOVWF LATD
MOVLW b'10110101'
MOVWF LATD
MOVLW b'01111101'
MOVWF LATD
CLRF LATD
BTFSC PORTC,1,0 ;leer C1 si es 0 salta
GOTO receptor
BTFSC PORTB,7,0 ;leer B5 si es 0 salta
CALL transmisor
GOTO NUMERO_5
NUMERO_6:
MOVLW b'11011111'
MOVWF LATD
MOVLW b'10110101'
MOVWF LATD
MOVLW b'01111101'
MOVWF LATD
CLRF LATD
BTFSC PORTC,1,0 ;leer C1 si es 0 salta
GOTO receptor
BTFSC PORTB,7,0 ;leer B5 si es 0 salta
CALL transmisor
GOTO NUMERO_6
NUMERO_7:
MOVLW b'11000001'
MOVWF LATD
MOVLW b'10110100'
MOVWF LATD
MOVLW b'01111111'
MOVWF LATD
CLRF LATD
BTFSC PORTC,1,0 ;leer C1 si es 0 salta
GOTO receptor
BTFSC PORTB,7,0 ;leer B5 si es 0 salta
CALL transmisor
GOTO NUMERO_7
NUMERO_8:
MOVLW b'11011011'
MOVWF LATD
MOVLW b'10110101'
MOVWF LATD
MOVLW b'01111011'
MOVWF LATD
CLRF LATD
BTFSC PORTC,1,0 ;leer C1 si es 0 salta
GOTO receptor
BTFSC PORTB,7,0 ;leer B5 si es 0 salta
CALL transmisor
GOTO NUMERO_8
NUMERO_9:
MOVLW b'11000111'
MOVWF LATD
MOVLW b'10110100'
MOVWF LATD
MOVLW b'01111111'
MOVWF LATD
CLRF LATD
BTFSC PORTC,1,0 ;leer C1 si es 0 salta
GOTO receptor
BTFSC PORTB,7,0 ;leer B5 si es 0 salta
CALL transmisor
GOTO NUMERO_9
LETRA_ESPACIO:
LETRA_SIGNO:
LETRA_NUMERO:
LETRA_FIN:
retraso:
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
return
;btfss LATD,1,0 ;CON D1=1 EJECUTA C
SECUENCIA_DE_PRUEBA: ; esto enciende un led a la vez
MOVLW b'11000001'
MOVWF LATD
call retraso_
MOVLW b'11000010'
MOVWF LATD
call retraso_
MOVLW b'11000100'
MOVWF LATD
call retraso_
MOVLW b'11001000'
MOVWF LATD
call retraso_
MOVLW b'11010000'
MOVWF LATD
call retraso_
MOVLW b'10110000'
MOVWF LATD
call retraso_
MOVLW b'10101000'
MOVWF LATD
call retraso_
MOVLW b'10100100'
MOVWF LATD
call retraso_
MOVLW b'10100010'
MOVWF LATD
call retraso_
MOVLW b'10100001'
MOVWF LATD
call retraso_
MOVLW b'01100001'
MOVWF LATD
call retraso_
MOVLW b'01100010'
MOVWF LATD
call retraso_
MOVLW b'01100100'
MOVWF LATD
call retraso_
MOVLW b'01101000'
MOVWF LATD
call retraso_
MOVLW b'01110000'
MOVWF LATD
call retraso_
; BTFSC LATC,1,0 ;leer C1 si es 0 salta
; GOTO receptor
; BTFSC LATB,5,0 ;leer B5 si es 0 salta
; CALL transmisor
CLRF LATD
GOTO inicio
;==========rutina de retrasos=============
retraso_:
movlw 0x05
movwf temp3_retraso
decfsz temp_retraso,1,0
; goto retraso ;alta frec
goto retraso1 ;baja frec
movlw 0xFF
movwf temp_retraso
return
retraso1:
decfsz temp2_retraso,1,0
; return
goto retraso1 ; baja frec segun yo
; goto retraso2 ;BIEN
movlw 0xFF
movwf temp2_retraso
goto retraso_
retraso2:
decfsz temp3_retraso,1,0
; return
goto retraso2
movlw 0x05
movwf temp3_retraso
goto retraso1
;------------------------------------------
Fin_intT0:
RETFIE
END
;------------------------------------------
-
se lo agradecemos muchismos porque ya tenemos un esquema para empezar.
pero nosotros trabajamos con ccs, y en ensamblador no tenemos mucha idea.
si lo tuviese en ccs o algo parecido, y lo quiere publicar se lo agradeceremos
gracias de todas formas