hola,este programa que te pongo aqui abjo es un proyecto que estoy desarroyando,que todabia no esta acabado,pero te puede serbir para que comprendas el funcionamiento de la transmision por usart.ademas si programas un pic con el te va a funcionar automaticamente.
porque lo estoy probando ahora mismo.
yo estaba estancado como tu y es que cometi un error al soldar la patilla de salida del max232.y me estaba volviendo loco.asi que me hice un circuito que mandase por el RC6"tx" los numeros del 1 al 0 ,y este conectarselo al interface hecha con el max232 hacia el pc.y eureca al instante tenia visualizandose los numeros en el hiperterminal.
luego conecte este circuito al pictrainer con el programa que te he puesto,y me salieron los datos 1 al 0 por el puerto b.
ten en cuenta que este asm solo es para recivir ,si lo termino pronto y lo quieres lo pones en este mismo canal.
;******************************************
http://www.x-robotics.com *******
; PROGRAMA : rs232.asm
; Funcion : comunicador pc-pic
; Serial port config: 9600 baudios,8 bits,paridad = none
;
; Revision : 1.0 7/2/2002 Programa para : PIC16F876
; CPU Clock : 4 MHz Reloj instruccion : 1 MHz = 1 us
; WDT : Deshabilitado Tipo de reloj : XT
; Code Prot : OFF
;******************************************
http://www.x-robotics.com *******
LIST P=16F876 ;Se indica el modo de procesador
RADIX HEX ;Sistema de numeracion hexadecimal
INCLUDE <P16f876.inc> ;se incluye la definicion de los
;registros internos
__CONFIG _CP_OFF & _PWRTE_ON & _WDT_OFF & _XT_OSC & _BODEN_OFF &_LVP_OFF &_CPD_OFF &_WRT_ENABLE_OFF
ERRORLEVEL -302
CounterA EQU 20h
CounterB EQU 21h
CounterC EQU 22h
KEY_1 EQU 23h
BANK0 MACRO
BCF STATUS,RP0
BCF STATUS,RP1
ENDM
BANK1 MACRO
BSF STATUS,RP0
BCF STATUS,RP1
ENDM
;<<<<<<---------------------- VECTOR DE RESET ------------------------>>>>>>>
ORG 0x00 ;Inicio en el Vector de Reset
goto INICIO ;Va a la primera instruccion del
;<<<<<<------------------- VECTOR DE INTERRUPCION -------------------->>>>>>>
ORG 0x04 ;Vector de interrupcion
goto INTER
;<<<<<<----------------- INICIO PROGRAMA PRINCIPAL ------------------->>>>>>>
INICIO ;goto INICIO
BANK1
clrf TRISB ;Puerta B como salida
movlw b'10111111' ;RC7/Rx entrada,
movwf TRISC ;RC6/Tx salida.
movlw 0x00
movwf TRISA
movlw .25 ;9600 baudios
movwf SPBRG
movlw b'00100100' ;Configuracion USART modo alta velocidad 9600 baud
movwf TXSTA ;y activacion de transmision
bsf PIE1,RCIE ;Habilitacion interrupcion RX
;bsf PIE1,TXIE
BANK0 ;Cambio al banco 0 -------------
movlw b'10010000' ;Configuracion de la usart
movwf RCSTA ;para recepcion continua y habilitacion de la usart
movlw b'11000000' ;Habilitacion para las
movwf INTCON ;interrupciones generales
clrf PORTA
BUCLE goto BUCLE ;espera aqui hasta que salte la int.
call RETARDO
bsf PORTA,0
call RETARDO
bcf PORTA,0
call COMANDO
incf KEY_1,F
movwf TXREG ; del codigo ascii
xorlw .13
btfsc STATUS,Z
goto INICIO
BANK1 ;Cambio al banco 1 -------------
COMP_TX btfss TXSTA,TRMT ;comprueba si acabo de Tx.
goto COMP_TX
BANK0 ;Cambio al banco 0 -------------
goto BUCLE
;<<<<<<----------------------- OTRAS RUTINAS ------------------------->>>>>>>
;PIC Time Delay = 1,0000020 s with Osc = 4 MHz
RETARDO
movlw D'6'
movwf CounterC
movlw D'24'
movwf CounterB
movlw D'168'
movwf CounterA
loop decfsz CounterA,1
goto loop
decfsz CounterB,1
goto loop
decfsz CounterC,1
goto loop
return
INTER BANK0
btfss PIR1,RCIF
retfie
goto LEEDATO
LEEDATO movf RCREG,W ;Lectura dato recibido
movwf PORTB ;Visualiza dato recibido
call RETARDO
VOLVER retfie ;retorna de la interrupcion.
;<<<<<<----------------- INICIO PROGRAMA PRINCIPAL ------------------->>>>>>
COMANDO
KEY_TABLA movf KEY_1,W
addwf PCL,F
retlw "1"
retlw "2"
retlw "3"
retlw "4"
retlw "5"
retlw "6"
retlw "7"
retlw "8"
retlw "9"
retlw "0"
return
END