SoloCodigo
Programación Específica => Microcontroladores => Mensaje iniciado por: Kain589 en Domingo 1 de Enero de 2006, 12:12
-
Hola sé que se trata de un tema bastante trillado, estoy empezando con los micros y ya he usado los distintos modulos y hecho problemas, asi que me propuesto empezar con la comunicacion entre dispositivos. he estado buscando por el foro y me encontre con unas rutinas, las he adaptado y cambiado algunas cosas para el 16f876, pero no me van; todo lo hecho creo que es necesario y que se debe a que falta algo, aunque puede que este mal. si alguien puede decirme que esta mal o si falta algo, muchas gracias y felicitarles por este gran foro tambien espero con el tiempo poder ayudar
PROGRAMA : rx-rs232.asm
; Funcion : Escucha puerto serie rs232 y cuando recibe un dato salta la
; interrupcion y lo muestra en PortB.
; Serial port config: 9600 baudios,8 bits,paridad = none
;
; Programa para : PIC16F876
; CPU Clock : 4 MHz Reloj instruccion : 1 MHz = 1 us
; WDT : Deshabilitado Tipo de reloj : XT
; Code Prot : OFF
LIST P = 16F876 ;Se indica el modo de procesador
INCLUDE <P16f876.inc> ;se incluye la definicion de los
;<<<<<<---------------------- VECTOR DE RESET ------------------------>>>>>>>
ORG 00H ;Inicio en el Vector de Reset
goto INICIO ;Va a la primera instruccion del
;programa
;<<<<<<------------------- VECTOR DE INTERRUPCION -------------------->>>>>>>
ORG 04H ;Vector de interrupcion
INTER btfss PIR1,RCIF ;¿Interrupcion por recepcion?
goto VOLVER ;No. Falsa interrupcion
bcf PIR1,RCIF ;Si. Reponer Flag
movf RCREG,W ;Lectura dato recibido
movwf PORTB ;Visualiza dato recibido
VOLVER retfie ;retorna de la interrupcion.
;<<<<<<----------------- INICIO PROGRAMA PRINCIPAL ------------------->>>>>>>
INICIO clrf PORTB ;Limpia salidas
clrf PORTC
bsf RCSTA,SPEN ;se activa la USART
bsf STATUS,RP0 ;Cambio al banco 1 ------------------
bcf STATUS,RP1
clrf TRISB ;Puerta B como salida
clrf TRISB ;Puerta B como salida
movlw 80H ;RC7/Rx entrada,
movwf TRISC ;RC6/Tx salida y RC5 Salida.
movlw 04H ;Configuracion USART
movwf TXSTA ;y activacion de transmision
movlw .207 ;9600 baudios
movwf SPBRG
bsf PIE1,RCIE ;Habilitacion interrupcion RX
bcf STATUS,RP0 ;Cambio al banco 0 -----------------
bsf RCSTA,SPEN ;se activa la USART
movlw 90H ;Configuracion de la usart
movwf RCSTA ;para recepcion continua
movlw 0C0H ;Habilitacion para las
movwf INTCON ;interrupciones generales
BUCLE goto BUCLE ;espera aqui hasta que salte la int.
END
PROGRAMA : tx-rs232.asm
; Funcion : Transmite 2 bytes por el puerto serie del pic en intervalos de
; 1 segundo.
; Serial port config: 9600 baudios,8 bits,paridad = none
;
; rograma para : PIC16F876
; CPU Clock : 4 MHz Reloj instruccion : 1 MHz = 1 us
; WDT : Deshabilitado Tipo de reloj : XT
; Code Prot : OFF
LIST P=16F876 ;Se indica el modo de procesador
INCLUDE <P16f876.inc> ;se incluye la definicion de los
;registros internos
CounterA EQU 20h
CounterB EQU 21h
CounterC EQU 22h
;<<<<<<---------------------- VECTOR DE RESET ------------------------>>>>>>>
ORG 00H ;Inicio en el Vector de Reset
goto INICIO ;Va a la primera instruccion del
;programa
;<<<<<<------------------- VECTOR DE INTERRUPCION -------------------->>>>>>>
ORG 04H ;Vector de interrupcion
;<<<<<<----------------- INICIO PROGRAMA PRINCIPAL ------------------->>>>>>>
INICIO clrf PORTB ;Limpia salidas
clrf PORTC
bsf RCSTA,SPEN ;se activa la USART
bsf STATUS,RP0 ;Cambio al banco 1 -------------
bcf STATUS,RP1
clrf TRISB ;Puerta B como salida
movlw 80H ;RC7/Rx entrada,
movwf TRISC ;RC6/Tx salida.
movlw 24H ;Configuracion USART
movwf TXSTA ;y activacion de transmision
movlw .207 ;9600 baudios
movwf SPBRG
bcf STATUS,RP0 ;Cambio al banco 0 -------------
bsf RCSTA,SPEN ;se activa la USART
bsf STATUS,RP0 ;Cambio al banco 1 -------------
bcf STATUS,RP1
bsf TXSTA,TXEN ;Habilita la transmision
bcf STATUS,RP0 ;Cambio al banco 0 -------------
bucle goto PDelay
movlw 49H ;Envia el caracter, valor hex
movwf TXREG ; del codigo ascii
bsf STATUS,RP0 ;Cambio al banco 1 -------------
bcf STATUS,RP1
COMP_TX btfss TXSTA,TRMT ;comprueba si acabo de Tx.
goto COMP_TX
bcf STATUS,RP0 ;Cambio al banco 0 -------------
movlw .50 ;caracter ASCII en decimal
movwf TXREG
goto bucle
;<<<<<<----------------------- OTRAS RUTINAS ------------------------->>>>>>>
;PIC Time Delay = 1,0000020 s with Osc = 4 MHz
PDelay movlw 6H
movwf CounterC
movlw 19H
movwf CounterB
movlw 0B2H
movwf CounterA
loop decfsz CounterA,1
goto loop
decfsz CounterB,1
goto loop
decfsz CounterC,1
goto loop
return
END
-
Bueno, entes que nada bienvenido :smartass: y es de seguro que con el tiempo nos daras una mano :) si asi lo deseas.
Mirando muy por arriba el codigo parece estar bien. la mayoria de los programadores de pic nos centramos en que el problema es de codigo y no de hardware :ph34r: .. asi que antes de entrar en profundidad sobre el programa te pediria si sos tan amable que adjuntes algun dibujito con el esquema de como tienes conectado el pic al pc. Espero tu respuesta, vamos por pasos y asi entontraremos el error mas facilmente. Saludos :)
-
Gracias por la bienvenida y por tu respuesta, en realidad yo queria establecer la comunicacion entre dos pics, la finalidad era simplemente didactica. Al final he desechado estas rutinas,ahora que ya lo he conseguido volvere a repasarlas, y he buscado en las notas de aplicacion de microchip encontrando ejemplos que he adaptado, acabo de probarlos y funcionan.
Mañana seguramente los suba para quien le pueda interesar, no los subo ahora porque los tengo en otro pc que para mas inri tiene roto el usb
-
Gracias por la bienvenida y por tu respuesta, en realidad yo queria establecer la comunicacion entre dos pics, la finalidad era simplemente didactica. Al final he desechado estas rutinas,ahora que ya lo he conseguido volvere a repasarlas, y he buscado en las notas de aplicacion de microchip encontrando ejemplos que he adaptado, acabo de probarlos y funcionan.
Mañana seguramente los suba para quien le pueda interesar, no los subo ahora porque los tengo en otro pc que para mas inri tiene roto el usb
Bueno, realmente me alegra que hayas arreglado el problema :) .. un punto mas para la lista de experiencias :lightsabre: .. Si subes las rutinas dejalas en el foro de "Soluciones de Hard y Soft" http://foros.solocodigo.com/index.php?showforum=156 (http://foros.solocodigo.com/index.php?showforum=156) .. Gracias y Suerte ;)