Hola a todos toy ya desesperao, estoy intentando comunicar el ordenador con el 16f876 através del puerto serie, bueno comunicar...solo intento que el dato que le envío lo coja y me lo
muestre por el puerto B, pero es imposible, ALGUIEN ES TAN AMABLE O TIENE POR AHI UNA RUTINA (QUE FUNCIONE!!) QUE RECOJA EL DATO DEL PUERTO SERIE DEL ORDENADOR???.
He hecho un programilla en Visual Basic el cual manda un dato por el puerto serie con esta configuración de este el 8N1 a 9600bps, de todas formas tb os adjunto los programas con los que
estoy intentando recoger el dato, uno supuestamente funciona por interrupción y el otro esta hecho sin ella, tb adjunto el programa con el que le envio el dato al puerto.
Con el de interrupción como la pata 3 del puerto serie es la que manda los datos, esta está siempre a -10V o así entonces el max232 lo cambia a 5V a la salida, con esto lo que pasa es que siempre entra en la interrupción y cuando mando el dato desde el ordenador este cambia la tensión cambiando así la salida del max232 y poniendola a 0V a si que no hace nada pero en fin que ya no se que hacer.
Si hay algun alma caritativa por ahi que me heche una manilla....
Gracias a todos!!!
Bueno pongo aqui el programa pq no me deja subir el adjunto...
CON INTERRUPCIÓN
-------------------------------------------------------------------------------------
;*****************************************************
; PROGRAMA : cabina rayos U_V_A.asm
; Funcion : Escucha puerto serie rs232 y cuando recibe un dato
;salta la interrupcion y lo muestra en el PuertoB.
;
;Configuración puerto Serie: 9600 baudios,8 bits,paridad = none
; Programa para : PIC16F876
; CPU Clock : 4 MHz
; WDT : Deshabilitado
; Reloj instruccion : 1 MHz = 1 us
; Tipo de reloj : XT
;*****************************************************
LIST P=16F876
#include "p16f876.inc"
;---------------------- VECTOR DE RESET ------------------------>>>>>>>
ORG 0x00
;Inicio en el Vector de Reset
goto INICIO ;Va a la primera instruccion del programa
;------------------- VECTOR DE INTERRUPCION -------------------->>>>>
ORG 0x04
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.
;----------------- PROGRAMA PRINCIPAL ------------------->>>>>>>
INICIO
clrf PORTB
clrf PORTC
bsf STATUS,5 ;Cambio al banco 1
clrf ADCON0
movlw 0x07
movwf ADCON1
clrf TRISA ;Puerto A como salida
clrf TRISB ;Puerto B como salida
movlw b"10111111" ;RC7/Rx entrada
movwf TRISC ;RC6/Tx salida
movlw b"10010000" ;Configuracion USART
movwf TXSTA ;y activacion de transmision
movlw .25 ;9600 baudios
movwf SPBRG
movlw b"00100000"
movwf PIE1 ;Habilitacion interrupcion RX
movlw b"11000000" ;Habilitacion para las
movwf INTCON ;interrupciones generales
bcf STATUS,5 ;Cambio al banco 0
movlw b"10010000" ;Configuracion de la usart
movwf RCSTA ;para recepcion continua
BUCLE
goto BUCLE ;espera aqui hasta que salte la int.
END