Autor Tema: USART Maestro-Esclavo  (Leído 1494 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado Lager.

  • Moderadores
  • PIC18
  • *****
  • Mensajes: 477
USART Maestro-Esclavo
« en: 10 de Diciembre de 2004, 12:20:00 »
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


 

anything