User: alciro    User
 

Microcontroladores 8051

Share |

7.2.3. Ejemplo de configuración de la UART

Supongamos que se ha de configurar la UART para transmitir datos en modo 1 (UART de 8 bits) con una velocidad de 9600 Bauds y 1 bit de Stop. Se han de seguir los siguientes pasos:

1º Configuración del TIMER 1

El registro TMOD se ha de configurar el modo de auto recarga y temporizador interno.

MSB             LSB
GATE C/T M1 M0 GATE C/T M1 M0
0 0 1 0 x x x x
Timer 1       Timer 0      

  • GATE = 0 Control interno
  • C/T = 0 Modo temporizador
  • M1, M0 = 1, 0 Contador de 8 bits con autorecarga

En el registro TCOM se establece el estado del flag de control TR1. El bit TR1 arranca el timer y permite que la UART pueda trabajar, por lo que es mejor habilitar este bit al final de la configuración utilizándolo como control para iniciar o parar las comunicaciones.

2º Establecer la velocidad de comunicación.

Según la frecuencia de trabajo del microcontrolador se establece el valor de los registros contadores TL1 y TH1. Si se observa la tabla de velocidades de comunicación en el apartado 7.1, para 9600 Bauds con un cristal de 11,0592 MHz el valor del contador es de FDH.

3º Configuración de la UART

En el registro SCON se establece la UART en modo 1, se habilita la recepción con REN= 1, se establece el estado de los flags TB8, RB8, a 0 y los flan de interrupciones TI, RI a 0.

MSB             LSB
SM0 SM1 SM2 REN TB8 RB8 TI RI
0 1 0 1 0 0 0 0

  • SM0, SM1, SM2 = 0, 1, 0 Modo 1 UART de 8 bits
  • REM = 1 Habilita la recepción
  • TB8, RB8 = 0, 0 No utilizados en este modo
  • TI = 0 Flag de transmisión
  • RI = 0 Flag de recepción

Ejemplo de configuración en ensamblador.

;-----------------------------------
; Iniciar el puerto serie
;-----------------------------------
InitSerial: ORL TMOD,#00100000B ; Timer 1 en modo 2 (auto recarga)
            MOV TL1,#0FDH       ; Velocidad de 9600 Bauds
            MOV TH1,#0FDH
            MOV SCOM,#50H       ; Configuración de la UART en modo 2
            SETB TR1            ; Arrancar el Timer1 y la UART
            RET

Ejemplo de configuración en C.

//---------------------------------------
// Iniciar el puerto serie
//---------------------------------------
void InitSerial(void){
	TMOD |= 0x20;	// Timer 1 en modo 2 (auto recarga)
	TL1 = 0xFD;	// Velocidad de 9600 Bauds
	TH1 = 0xFD;
	SCON = 0x50;	// Configuración de la UART en modo 2
	TR1 = 1;	// Arrancar el Timer1 y la UART

}
Loading

copyright © 2007-2024  www.alciro.org  All rights reserved.         
Share |