SISTEMAS MICROPROCESADOS: Programas para comprobar el funcionamiento delUSART                              Página 1       ...
SISTEMAS MICROPROCESADOS: Programas para comprobar el funcionamiento delUSART                              Página 2; UDRIE...
SISTEMAS MICROPROCESADOS: Programas para comprobar el funcionamiento delUSART                              Página 3Al camb...
SISTEMAS MICROPROCESADOS: Programas para comprobar el funcionamiento delUSART                              Página 4La modi...
SISTEMAS MICROPROCESADOS: Programas para comprobar el funcionamiento delUSART                              Página 5IDENTIF...
SISTEMAS MICROPROCESADOS: Programas para comprobar el funcionamiento delUSART                              Página 6       ...
SISTEMAS MICROPROCESADOS: Programas para comprobar el funcionamiento delUSART                              Página 7       ...
SISTEMAS MICROPROCESADOS: Programas para comprobar el funcionamiento delUSART                              Página 8RETRANS...
SISTEMAS MICROPROCESADOS: Programas para comprobar el funcionamiento delUSART                              Página 9       ...
SISTEMAS MICROPROCESADOS: Programas para comprobar el funcionamiento delUSART                              Página 10      ...
Próxima SlideShare
Cargando en…5
×

Funcionamiento del USART

4.533 visualizaciones

Publicado el

Ejercicios de programación del USART

0 comentarios
1 recomendación
Estadísticas
Notas
  • Sé el primero en comentar

Sin descargas
Visualizaciones
Visualizaciones totales
4.533
En SlideShare
0
De insertados
0
Número de insertados
12
Acciones
Compartido
0
Descargas
412
Comentarios
0
Recomendaciones
1
Insertados 0
No insertados

No hay notas en la diapositiva.

Funcionamiento del USART

  1. 1. SISTEMAS MICROPROCESADOS: Programas para comprobar el funcionamiento delUSART Página 1 TRANSMISIÓN DE TEXTOSPrograma para comprobar la transmisión de textos, a través uno de los USART(Receptor y Transmisor Universal Sincrónico y Asincrónico) que posee el ATmega164,sin utilizar interrupciones y configurado en el modo asincrónico, la comprobación serealiza mediante el Hyper Terminal que poseen las computadoras personales.En este caso es necesario implementar el conversor entre niveles TTL y RS-232,utilizando el circuito integrado MAX232 con 4 capacitores de 10μF como se indica enel circuito. Conector para el cable de la PCCÓDIGO DEL PROGRAMA PARA ENVIAR TEXTOS:.NOLIST.INCLUDE "m164pdef.inc".LIST;.DEF AUX1 = R16.DEF AUX2 = R17.DEF AUX3 = R18;.CSEG JMP PROGP;PROGP:; CONFIGURACIÓN DEL USART 0; PROGRAMACIÓN DEL REGISTRO DE CONTROL C; UMSEL01:0=00 TRABAJAR EN EL MODO ASINCRÓNICO; UPM01:0=00 DESHABILITAR LA PARIDAD; USBS0=1 DOS BITS DE PARADA; UCSZ01:0=11 TAMAÑO DEL CARACTER DE 8 BITS; UCPOL0=0 POLARIDAD DEL RELOJ NO SE USA EN ASINCRÓNICO LDI AUX1,0B00001110 STS UCSR0C,AUX1; PROGRAMACIÓN DEL REGISTRO DE CONTROL B; RXCIE0=0 DESHABILITA LAS INTERRUPCIONES EN LA RECEPCIÓN; TXCIE0=0 DESHABILITA LAS INTERRUPCIONES EN LA TRANSMISIÓNIng. Jaime E. Velarde – Departamento de Electrónica, Telecomunicaciones y Redesde Información
  2. 2. SISTEMAS MICROPROCESADOS: Programas para comprobar el funcionamiento delUSART Página 2; UDRIE0=0 DESHABILITA LAS INTERRUPCIONES DATOS VACÍO; RXEN0=1 HABILITA LA RECEPCIÓN; TXEN0=1 HABILITA LA TRANSMISIÓN; UCSZ02=0 TAMAÑO DEL CARACTER DE 8 BITS; RXB80=0 NOVENO BIT DE LA RECEPCIÓN; TXB80=0 NOVENO BIT DE LA TRANSMISIÓN LDI AUX1,0B00011000 STS UCSR0B,AUX1; PROGRAMACIÓN DE LA VELOCIDAD DE TRANSMISIÓN; UBRR0H REGISTRO DEL BAUD RATE CON 1 MHz LDI AUX1,0B00000000 STS UBRR0H,AUX1; UBRR0L REGISTRO DEL BAUD RATE CON 1 MHz LDI AUX1,25 ;BR=2400 CON U2X=0 STS UBRR0L,AUX1; PARA ENVIAR UN MENSAJESEND: LDI ZL,LOW(MSJ<<1) LDI ZH,HIGH(MSJ<<1)SEND1: LPM AUX2,Z+ STS UDR0,AUX2; LAZO HASTA QUE ENCIENDA LA BANDERA TRANSMISIÓN COMPLETASEND2: LDS AUX1,UCSR0A SBRS AUX1,TXC0 RJMP SEND2; BORRAR LA BANDERA DE TRANSMISIÓN COMPLETA; MANTENER EL VALOR DE U2X LDI AUX1,0B01100000 ;U2X=0 STS UCSR0A,AUX1; ÚLTIMO CARACTER CPI AUX2,0x0A BRNE SEND1; LAZO HASTA QUE ENCIENDA LA BANDERA RECEPCIÓN COMPLETARECIBE: LDS AUX1,UCSR0A SBRS AUX1,RXC0 RJMP RECIBE LDS AUX1,UDR0; RJMP SEND;MSJ: .DB "EJEMPLO DE TRANSMISION",0x0D,0x0A;.EXIT ; FIN DEL MODULO FUENTERESULTADOS CON EL HYPER TERMINAL:Ing. Jaime E. Velarde – Departamento de Electrónica, Telecomunicaciones y Redesde Información
  3. 3. SISTEMAS MICROPROCESADOS: Programas para comprobar el funcionamiento delUSART Página 3Al cambiar la velocidad en la PC, por ejemplo a 4800 baudios, los datos que se recibenson diferentes a los que se envían.Igual sucede cuando la velocidad en la PC es menor, ejemplo a 1200 baudios.El simulador del PROTEUS tiene un error en el funcionamiento del USART, por lo quees necesario introducir un lazo de espera al enviar los datos, para poder mostrar elfuncionamiento del programa en el Terminal Virtual y en el Analizador Lógico delsimulador, que se conectan como se indica a continuación.Ing. Jaime E. Velarde – Departamento de Electrónica, Telecomunicaciones y Redesde Información
  4. 4. SISTEMAS MICROPROCESADOS: Programas para comprobar el funcionamiento delUSART Página 4La modificación en el programa es la siguiente:; BORRAR LA BANDERA DE TRANSMISIÓN COMPLETA; MANTENER EL VALOR DE U2X LDI AUX1,0B01100000 ;U2X=0 STS UCSR0A,AUX1 RCALL DELAY ; PARA VER EN EL PROTEUS; ÚLTIMO CARACTER CPI AUX2,0x0A BRNE SEND1Donde:; ESPERA ANTES DE CONTINUARDELAY: LDI AUX1,8 CLR R15DELAY1: DEC R15 BRNE DELAY1 DEC AUX1 BRNE DELAY1 RETSIMULACIÓN CON EL PROTEUS: “A” que se recibe “J” “E” “E” que se transmiteIng. Jaime E. Velarde – Departamento de Electrónica, Telecomunicaciones y Redesde Información
  5. 5. SISTEMAS MICROPROCESADOS: Programas para comprobar el funcionamiento delUSART Página 5IDENTIFICAR UN CARACTER ESPECÍFICO QUE SE RECIBEEl siguiente programa sirve para comprobar el instante en que mediante el HyperTerminal de la computadora personal se envía al microcontrolador un caracterespecífico; como por ejemplo la letra Z mayúscula.CÓDIGO DEL PROGRAMA PARA IDENTIFICAR UN CARACTER:.NOLIST.INCLUDE "m164pdef.inc".LIST;.DEF AUX1 = R16.DEF AUX2 = R17.DEF AUX3 = R18;.CSEG JMP PROGP;PROGP:; PROGRAMACIÓN DEL REGISTRO DE CONTROL C; UMSEL01:00=00 TRABAJAR EN EL MODO ASINCRÓNICO; UPM01:00=00 DESHABILITAR LA PARIDAD; USBS0=1 DOS BITS DE PARADA; UCSZ01:00=11 TAMAÑO DEL CARACTER DE 8 BITS; UCPOL0=0 POLARIDAD DEL RELOJ NO SE USA EN ASINCRÓNICO LDI AUX1,0B00000110 STS UCSR0C,AUX1; PROGRAMACIÓN DEL REGISTRO DE CONTROL B; RXCIE0=0 DESHABILITA LAS INTERRUPCIONES EN LA RECEPCIÓN; TXCIE0=0 DESHABILITA LAS INTERRUPCIONES EN LA TRANSMISIÓN; UDRIE0=0 DESHABILITA LAS INTERRUPCIONES DATOS VACÍO; RXEN0=1 HABILITA LA RECEPCIÓN; TXEN0=1 HABILITA LA TRANSMISIÓN; UCSZ02=0 TAMAÑO DEL CARACTER DE 8 BITS; RXB80=0 NOVENO BIT DE LA RECEPCIÓN; TXB80=0 NOVENO BIT DE LA TRANSMISIÓN LDI AUX1,0B00011000 STS UCSR0B,AUX1; PROGRAMACIÓN DE LA VELOCIDAD DE TRANSMISIÓN; CUATR0 BITS RESERVADOS EN 0000; UBRR011:8=0000 REGISTRO DEL BAUD RATE CON 1 MHz LDI AUX1,0B00000000 STS UBRR0H,AUX1; UBRR07:0 REGISTRO DEL BAUD RATE CON 1 MHz LDI AUX1,25 ;BR=2400 CON U2X0=0 STS UBRR0L,AUX1; PARA ENVIAR UN MENSAJESEND: LDI ZL,LOW(MSJ<<1) LDI ZH,HIGH(MSJ<<1)SEND1: LPM AUX2,Z+ STS UDR0,AUX2; LAZO HASTA QUE ENCIENDA LA BANDERA TRANSMISIÓN COMPLETASEND2: LDS AUX1,UCSR0A SBRS AUX1,TXC0 RJMP SEND2; BORRAR LA BANDERA DE TRANSMISIÓN COMPLETA; MANTENER EL VALOR DE U2X0Ing. Jaime E. Velarde – Departamento de Electrónica, Telecomunicaciones y Redesde Información
  6. 6. SISTEMAS MICROPROCESADOS: Programas para comprobar el funcionamiento delUSART Página 6 LDI AUX1,0B01100000 ;U2X0=0 STS UCSR0A,AUX1; ULTIMO CARACTER CPI AUX2,0x0A BRNE SEND1; LAZO HASTA QUE ENCIENDA LA BANDERA RECEPCIÓN COMPLETARECIBE: LDS AUX1,UCSR0A SBRS AUX1,RXC0 RJMP RECIBE LDS AUX1,UDR0; COMPRUEBA QUE SEA UNA LETRA ESPECÍFICA CPI AUX1,Z BRNE RECIBE; RJMP SEND;MSJ: .DB "EJEMPLO: RECEPCION DE UNA LETRA ESPECIFICA" .DB 0x0D,0x0A;.EXIT ; FIN DEL MODULO FUENTERESULTADOS CON EL HYPER TERMINAL:Con la misma modificación mencionada anteriormente, se puede comprobar elfuncionamiento del programa con el simulador del PROTEUS.En los dos gráficos de la siguiente página, se comprueba que el microcontrolador notransmite cuando recibe desde el Terminal Virtual un caracter diferente a la Zmayúscula y transmite cuando la recibe.Ing. Jaime E. Velarde – Departamento de Electrónica, Telecomunicaciones y Redesde Información
  7. 7. SISTEMAS MICROPROCESADOS: Programas para comprobar el funcionamiento delUSART Página 7 “z” El microcontrolador no transmite El microcontrolador recibe una z minúscula “Z” El microcontrolador transmite El microcontrolador recibe una Z mayúsculaIng. Jaime E. Velarde – Departamento de Electrónica, Telecomunicaciones y Redesde Información
  8. 8. SISTEMAS MICROPROCESADOS: Programas para comprobar el funcionamiento delUSART Página 8RETRANSMISIÓN DE UN TEXTO QUE SE RECIBEPrograma que recibe un texto, lo almacena en la SRAM y vuelve a retransmitirlo.CÓDIGO DEL PROGRAMA PARA RETRANSMITIR:.NOLIST.INCLUDE "m164pdef.inc".LIST;.DEF AUX1 = R16.DEF AUX2 = R17.DEF AUX3 = R18;.DSEGHEADER: .BYTE 3BUFFER: .BYTE 100;.CSEG JMP PROGP;PROGP: LDI AUX1,LOW(RAMEND) OUT SPL,AUX1 LDI AUX1,HIGH(RAMEND) OUT SPH,AUX1; PROGRAMACIÓN DEL REGISTRO DE CONTROL C; URSEL0=1 PARA ACCEDER AL REGISTRO UCSRC; UMSEL0=0 TRABAJAR EN EL MODO ASINCRÓNICO; UPM01:0=00 DESHABILITAR LA PARIDAD; USBS0=1 DOS BITS DE PARADA; UCSZ01:0=11 TAMAÑO DEL CARACTER DE 8 BITS; UCPOL0=0 POLARIDAD DEL RELOJ NO SE USA EN ASINCRÓNICO LDI AUX1,0B00001110 STS UCSR0C,AUX1; PROGRAMACIÓN DEL REGISTRO DE CONTROL B; RXCIE0=0 DESHABILITA LAS INTERRUPCIONES EN LA RECEPCIÓN; TXCIE0=0 DESHABILITA LAS INTERRUPCIONES EN LA TRANSMISIÓN; UDRIE0=0 DESHABILITA LAS INTERRUPCIONES DATOS VACÍO; RXEN0=1 HABILITA LA RECEPCIÓN; TXEN0=1 HABILITA LA TRANSMISIÓN; UCSZ20=0 TAMAÑO DEL CARACTER DE 8 BITS; RXB80=0 NOVENO BIT DE LA RECEPCIÓN; TXB80=0 NOVENO BIT DE LA TRANSMISIÓN LDI AUX1,0B00011000 STS UCSR0B,AUX1; DUPLICACIÓN DE LA VELOCIDAD LDI AUX1,0B00000010 ;U2X0=1 STS UCSR0A,AUX1; PROGRAMACIÓN DE LA VELOCIDAD DE TRANSMISIÓN; TRES BITS RESERVADOS EN 0000; UBRR011:8=0000 REGISTRO DEL BAUD RATE CON 1 MHz LDI AUX1,0B00000000 STS UBRR0H,AUX1;UBRR7:0 REGISTRO DEL BAUD RATE CON 1 MHz LDI AUX1,12 ; BR=9600 CON U2X0=1 STS UBRR0L,AUX1; ENCABEZADO DE LA RETRANSMISIÓN LDI AUX1,/ STS HEADER+0,AUX1 STS HEADER+1,AUX1Ing. Jaime E. Velarde – Departamento de Electrónica, Telecomunicaciones y Redesde Información
  9. 9. SISTEMAS MICROPROCESADOS: Programas para comprobar el funcionamiento delUSART Página 9 STS HEADER+2,AUX1; PARA ENVIAR EL MENSAJE DE INICIOINICIO: LDI ZL,LOW(MSJ01<<1) LDI ZH,HIGH(MSJ01<<1) RCALL SEND; PARA ALMACENAR EL MENSAJE QUE LLEGA SERIALMENTE LDI XL,LOW(BUFFER) LDI XH,HIGH(BUFFER)RECIBE: LDS AUX1,UCSR0A SBRS AUX1,RXC0 RJMP RECIBE; ALMACENA LOS CARACTERES LDS AUX1,UDR0 ST X+,AUX1; COMPRUEBA QUE SEA FIN DEL MENSAJE CPI AUX1,0x0A BRNE RECIBE; PARA CONFIRMAR LA RECEPCIÓN LDI ZL,LOW(MSJ02<<1) LDI ZH,HIGH(MSJ02<<1) RCALL SEND; PARA SEPARAR LDI ZL,LOW(MSJ04<<1) LDI ZH,HIGH(MSJ04<<1) RCALL SEND; PARA RE-ENVIAR EL MENSAJE LDI XL,LOW(HEADER) LDI XH,HIGH(HEADER)RSND: LD AUX2,X+ STS UDR0,AUX2; LAZO HASTA QUE ENCIENDA LA BANDERA TRANSMISIÓN COMPLETARSND1: LDS AUX1,UCSR0A SBRS AUX1,TXC0 RJMP RSND1; BORRAR LA BANDERA DE TRANSMISIÓN COMPLETA; MANTENER EL VALOR DE U2X0 LDI AUX1,0B01100010 STS UCSR0A,AUX1; ÚLTIMO CARACTER CPI AUX2,0x0A BRNE RSND; PARA CONFIRMAR LA TRANSMISIÓN LDI ZL,LOW(MSJ03<<1) LDI ZH,HIGH(MSJ03<<1) RCALL SEND; PARA SEPARAR LDI ZL,LOW(MSJ04<<1) LDI ZH,HIGH(MSJ04<<1) RCALL SEND; RJMP INICIO; SUBRUTINA PARA ENVIAR UN MENSAJESEND: LPM AUX2,Z+ STS UDR0,AUX2; LAZO HASTA QUE ENCIENDA LA BANDERA TRANSMISIÓN COMPLETASEND1: LDS AUX1,UCSR0A SBRS AUX1,TXC0 RJMP SEND1; BORRAR LA BANDERA DE TRANSMISIÓN COMPLETA; MANTENER EL VALOR DE U2X LDI AUX1,0B01100010Ing. Jaime E. Velarde – Departamento de Electrónica, Telecomunicaciones y Redesde Información
  10. 10. SISTEMAS MICROPROCESADOS: Programas para comprobar el funcionamiento delUSART Página 10 STS UCSR0A,AUX1; ÚLTIMO CARACTER CPI AUX2,0x0A BRNE SEND RET;MSJ01: .DB "EJEMPLO: PARA LA RETRANSMISION",0x0D,0x0AMSJ02: .DB "MENSAJE RECIBIDO",0x0D,0x0AMSJ03: .DB "MENSAJE RETRANSMITIDO ",0x0D,0x0AMSJ04: .DB 0x0D,0x0A;.EXIT ; FIN DEL MODULO FUENTERESULTADOS CON EL HYPER TERMINAL:También se puede comprobar con el simulador del PROTEUS modificando el programacomo se indicó anteriormente y considerando que el Terminal Virtual no envía elcódigo de Avance de Línea cuando de presiona la tecla “ENTER”.Ing. Jaime E. Velarde – Departamento de Electrónica, Telecomunicaciones y Redesde Información

×