Fuera de los comandos usados para transmision usando la usart incluida en cada Micro(Hserin,Hserin2,hrsin),se puede accesar a los registros para uso directo de la usart asi como su configuracion de manera sencilla y eficaz desde proton.:
-------------------------------------------------------------------------------------------------------
Para el 16f877(como Maestro a 2.4 kbs):
-------------------------------------------------------------------------------------------------------
DEVICE 16F877
XTAL 4
ALL_DIGITAL TRUE
DIM VAR1[29]AS BYTE
DIM C AS BYTE
DECLARE LCD_DTPIN PORTA.0
DECLARE LCD_ENPIN PORTB.3
DECLARE LCD_RSPIN PORTA.4
PORTB_PULLUPS=TRUE
TRISB.1=1 "BOTON DE ENVIO DE DATOS
SYMBOL BOTON=PORTB.1
SPBRG=103
PIE1.4=1
RCSTA=%10000000
TXSTA=%10110000
STR VAR1="MAESTRO=16F877ESCLAVO=16F628A" "PAQUETE DE DATOS
ESPERA:IF BOTON=1 THEN ESPERA "ESPERAMOS INICIO DE ENVIO
FOR C=0 TO 29
TXREG= VAR1[C]
ESPERA2:IF PIR1.4=0 THEN ESPERA2 "TERMINÓ DE ENVIAR??
NEXT
PRINT " MENSAJE ",$FE, $C0," ENVIADO "
END
--------------------------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------------
Para el 16f628(como esclavo):
--------------------------------------------------------------------------------------------------------
DEVICE 16F628A
CONFIG INTRC_OSC_NOCLKOUT,WDT_OFF,PWRTE_ON,CP_OFF,BODEN_OFF,LVP_OFF,MCLRE_OFF
ALL_DIGITAL ON
PORTB_PULLUPS ON
DECLARE LCD_DTPIN PORTA.0
DECLARE LCD_ENPIN PORTB.3
DECLARE LCD_RSPIN PORTA.4
DIM VAR2[28] AS BYTE
DIM A AS BYTE
CLEAR
PIE1.5=1
TXSTA = %00010000
RCSTA = %10010000
ESPERA:IF PIR1.5=0 THEN ESPERA
FOR A=0 TO 28
VAR2[A]=RCREG
ESPERA2:IF PIR1.5=0 THEN ESPERA2
NEXT
CLS
PRINT STR VAR214
PRINT $FE, $C0
FOR A=14 TO 28
PRINT VAR2[A]
NEXT
END
--------------------------------------------------------------------------------------------------------
BASICamente El master es guidado(en recepcion y transmision) por una temporizacion interna.. a diferencia del Esclavo que REQUIERE de la guia(reloj externo) el cual es recivido por el CK pin del dsipositivo.
Donde SPBRG es el registro(de un timer de 8 bits) de control el tiempo en conjunto con el registro BRGH ubicado en el registro TXSTA.2 que controla el Baudrate.
Por lo tanto para un fosc=4 Mhz el valor ESTABLECIDO por la tabla de CADA dispositivo en especifico(16f877) , transmision Asincrona ,con BRGH en ALTO(TXSTA.2=1)y obteniendose un Baudrate de 2400bps(aprox)seria de 103 para el Modelo de micro que actue como Maestro,
Toda la informacion referente entre estos dos modos de trans.....recepcion estan explicados a fondo en el DS de modelo a trabajarse.
Salu2 panas