Hola amigos!!!
Les cuento q tengo q hacer un programa en ensamblador para recibir un byte por rs232. Estoy trabajando con un pic16f84a. El problema es q no se cuantos bps son 9600 baudios (creo q coinciden, pero no estoy seguro).
Esto es para calcular el tiempo entre bit y bit para leerlos.
Tengo este codigo q consegui por ahi... a mi parecer es el mas claro.
INCLUDE "P16F84A.Inc"
;*******DEFINICION DE REGISTROS**********************************
CBLOCK .12
REG1, REG2, REG3, RECEP, NBITS
ENDC
RX equ 0h ;PATILLA QUE RECIBE LOS DATOS
;*******DEFINICION DE DATOS**************************************
VALOR1 EQU .7 ;para controlar numero de ciclos del retardo bymedio
VALOR2 EQU .1 ;1246 CICLOS DE RETARDO
VALOR3 EQU .56
VALOR4 EQU .5 ;para controlar numero de ciclos del retardo by
VALOR5 EQU .1 ;830 CICLOS DE RETARDO
VALOR6 EQU .52
;*******PROGRAMA*************************************************
ORG 00
goto INICIO
org 05
INICIO
bsf STATUS,RP0 ;PASA AL BANCO 1
movlw b'00000001'
movwf TRISA
clrf TRISB
bcf STATUS,RP0 ;PASA AL BANCO 0
clrf PORTA
clrf PORTB
movlw b'00000101' ;Carga un dato por defecto en el puerto B
movwf PORTB
RECIBIR
nop
btfsc PORTA,RX ;linea de recepcion esta en bajo?
goto RECIBIR ;ciclo hasta recibir bit de comienzo
call BYMEDIO ;llama rutina de bymedio
movlw 8 ;carga contador con el numero de bits
movwf NBITS
clrf RECEP
RNEXT
bcf STATUS,C ;limpia carry
rrf RECEP,1
btfsc PORTA,RX ;pregunta por el estado de la linea
bsf RECEP,7 ;si rx esta en alto pone el bit 7 de RECEP
call BY
decfsz NBITS
goto RNEXT
movf RECEP,w ;pasa el dato del registro RECEP al PORTB
movwf PORTB
goto RECIBIR
BYMEDIO
movlw VALOR1 ;retardo de bit y medio
movwf REG1
TRES
movlw VALOR2
movwf REG2
DOS
movlw VALOR3
movwf REG3
UNO
decfsz REG3
goto UNO
decfsz REG2
goto DOS
decfsz REG1
goto TRES
retlw 0
BY
movlw VALOR4 ;retardo de bit
movwf REG1
TRES2
movlw VALOR5
movwf REG2
DOS2
movlw VALOR6
movwf REG3
UNO2
decfsz REG3
goto UNO2
decfsz REG2
goto DOS2
decfsz REG1
goto TRES2
retlw 0
end
Saludos y muchas gracias de antemano!