Ejercicio 08 CAD

7
SISTEMAS MICROPROCESADOS: Aplicaciones mediante el uso de ACD Página 1 Ing. Jaime E. Velarde Departamento de Electrónica, Telecomunicaciones y Redes de Información EJERCICIO QUE UTILIZA EL VALOR QUE SE INGRESA POR EL CONVERSOR DE ANALÓGICO A DIGITAL, PARA SER COMPARADO CON VALORES INGRESADOS POR TECLADO ENUNCIADO DEL EJERCICIO: Desarrollar un programa para el microcontrolador ATmega164P que permita ingresar mediante el teclado un primer número decimal de tres dígitos que corresponde al Valor Máximo; luego ingresar del mismo modo un segundo número, menor que el primero, que será el Valor Mínimo. Finalmente, el programa debe leer el valor digital de 10 bits que entrega el conversor A/D, resultante de la señal analógica entre 0 y 5 voltios que ingresa por ADC7. El circuito donde se comprueba el programa consta del ATmega164P, un teclado de 3x4 teclas y un LCD de 80 caracteres que ocupan 4 líneas, además del potenciómetro para el ingreso de la señal analógica, tal como se muestra a continuación: INFORMACIÓN QUE SE MUESTRA EN EL LCD: Las 4 líneas del LCD se utilizan de la siguiente forma: La primera línea: una indicación para el ingreso de los dos números y posteriormente para informar que se está mostrando el dato del conversor. La segunda línea: para mostrar en decimal el Valor Medido. La tercera y cuarta línea: para Mostar el Valor Máximo y Mínimo en cada línea y su relación respecto al Valor Medido mediante los símbolos de “Mayor que” (>) y “Menor que” (<).

description

Comparación del Valor Medido por el Conversor A/D con un Máximo y Mínimo, ingresados por teclado.

Transcript of Ejercicio 08 CAD

Page 1: Ejercicio 08 CAD

SISTEMAS MICROPROCESADOS: Aplicaciones mediante el uso de ACD Página 1

Ing. Jaime E. Velarde – Departamento de Electrónica, Telecomunicaciones y Redes de Información

EJERCICIO QUE UTILIZA EL VALOR QUE SE

INGRESA POR EL CONVERSOR DE ANALÓGICO

A DIGITAL, PARA SER COMPARADO CON

VALORES INGRESADOS POR TECLADO

ENUNCIADO DEL EJERCICIO:

Desarrollar un programa para el microcontrolador ATmega164P que permita ingresar

mediante el teclado un primer número decimal de tres dígitos que corresponde al Valor

Máximo; luego ingresar del mismo modo un segundo número, menor que el primero,

que será el Valor Mínimo. Finalmente, el programa debe leer el valor digital de 10 bits

que entrega el conversor A/D, resultante de la señal analógica entre 0 y 5 voltios que

ingresa por ADC7. El circuito donde se comprueba el programa consta del

ATmega164P, un teclado de 3x4 teclas y un LCD de 80 caracteres que ocupan 4 líneas,

además del potenciómetro para el ingreso de la señal analógica, tal como se muestra a

continuación:

INFORMACIÓN QUE SE MUESTRA EN EL LCD:

Las 4 líneas del LCD se utilizan de la siguiente forma:

La primera línea: una indicación para el ingreso de los dos números y

posteriormente para informar que se está mostrando el dato del conversor.

La segunda línea: para mostrar en decimal el Valor Medido.

La tercera y cuarta línea: para Mostar el Valor Máximo y Mínimo en cada línea

y su relación respecto al Valor Medido mediante los símbolos de “Mayor que”

(>) y “Menor que” (<).

Page 2: Ejercicio 08 CAD

SISTEMAS MICROPROCESADOS: Aplicaciones mediante el uso de ACD Página 2

Ing. Jaime E. Velarde – Departamento de Electrónica, Telecomunicaciones y Redes de Información

INFORMACIÓN QUE EL PROGRAMA MUESTRA AL INICIO

INGRESO DE UN NÚMERO DE TRES DÍGITOS

Page 3: Ejercicio 08 CAD

SISTEMAS MICROPROCESADOS: Aplicaciones mediante el uso de ACD Página 3

Ing. Jaime E. Velarde – Departamento de Electrónica, Telecomunicaciones y Redes de Información

VALOR MÁXIMO INGRESADO

INGRESO DEL SEGUNDO NÚMERO, MENOR AL ANTERIOR

Page 4: Ejercicio 08 CAD

SISTEMAS MICROPROCESADOS: Aplicaciones mediante el uso de ACD Página 4

Ing. Jaime E. Velarde – Departamento de Electrónica, Telecomunicaciones y Redes de Información

VALOR MÍNIMO INGRESADO, VALOR MEDIDO Y LA RELACIÓN QUE TIENE

CON LOS VALORES INGRESADOS

CODIFICACIÓN DEL PROGRAMA PRINCIPAL, SUBRUTINAS Y RUTINAS

DE INTERRUPCIÓN

.NOLIST

.INCLUDE "m164pdef.inc"

.LIST

;

.DEF AUX1 = R16 ; REGISTRO AUXILIAR1

.DEF AUX2 = R17 ; REGISTRO AUXILIAR2

.DEF AUX3 = R18 ; REGISTRO AUXILIAR3

.DEF AUXI1 = R19 ; REGISTRO AUXILIAR1 INTERRUPCIONES

; SEGMENTO DE DATOS o MEMORIA SRAM

.DSEG

VALMAX: .BYTE 2 ; VALOR MÁXIMO EN BINARIO

VALMIN: .BYTE 2 ; VALOR MÍNIMO EN BINARIO

VALMED: .BYTE 2 ; VALOR MEDIDO EN BINARIO

; SEGMENTO DE CÓDIGO o MEMORIA FLASH

.CSEG

JMP PROGP

.ORG $30 ; INTERRUPCIÓN DE CONVERSIÓN COMPLETA

JMP INTADC

; INICIALIZACIÓN DEL STACK Y DE LOS PÓRTICOS

PROGP: LDI AUX1,LOW(RAMEND) ; INICIALIZACIÓN DEL SP

OUT SPL,AUX1

LDI AUX1,HIGH(RAMEND)

OUT SPH,AUX1

; PROGRAMACIÓN DEL CONVERSOR

; REFS1:0=01 VOLTAJE DE REFERENCIA AVCC

; ADLAR=0 RESULTADO ALINEADO A LA DERECHA

; MUX4:0=00111 SELECCIÓN DEL CANAL 7 - UN SOLO TERMINAL

LDI AUX1,0B01000111

STS ADMUX,AUX1

Page 5: Ejercicio 08 CAD

SISTEMAS MICROPROCESADOS: Aplicaciones mediante el uso de ACD Página 5

Ing. Jaime E. Velarde – Departamento de Electrónica, Telecomunicaciones y Redes de Información

; ADEN=1 HABILITACIÓN DEL CONVERSOR

; ADSC=1 ENCENDIDO EL INICIO DE CONVERSIÓN

; ADATE=0 APAGADO DISPARO AUTOMÁTICO DE LA CONVERSIÓN

; ADIF=1 APAGADA BANDERA DE FIN DE CONVERSIÓN

; ADIE=1 HABILITACIÓN DE LA INTERRUPCIÓN

; ADPS2:0=000 FRECUENCIA DEL RELOJ DIVIDA PARA 2

LDI AUX1,0B11001000

STS ADCSRA,AUX1

; ADTS2:0=000 MODO DE LIBRE CONVERSIÓN

LDI AUX1,0B00000000

STS ADCSRB,AUX1

; ADC7D= 1 DESHABILITA LA ENTRADA DIGITAL PA7

LDI AUX1,0B10000000

STS DIDR0,AUX1

; INICIALIZACIÓN DEL LCD

RCALL LCDRST

; INGRESO DEL VALOR MÁXIMO

LDI ZL,LOW(TXT1<<1)

LDI ZH,HIGH(TXT1<<1)

RCALL WRTMSJ

LDI AUX1,14

LDI AUX2,3

RCALL INPUT

LDI AUX1,52

RCALL WRTNUM

RCALL BCD_A_BIN

STS VALMAX,R3

STS VALMAX+1,R2

; INGRESO DEL VALOR MÍNIMO

LDI AUX1,0

RCALL POSCUR

LDI ZL,LOW(TXT2<<1)

LDI ZH,HIGH(TXT2<<1)

RCALL WRTLIN

LDI AUX1,14

LDI AUX2,3

RCALL INPUT

LDI AUX1,72

RCALL WRTNUM

RCALL BCD_A_BIN

STS VALMIN,R3

STS VALMIN+1,R2

; HABILITACIÓN DE LAS INTERRUPCIONES GLOBALES

SEI

; MOSTRAR EL VALOR DEL CONVERSOR

LDI AUX1,0

RCALL POSCUR

LDI ZL,LOW(TXT3<<1)

LDI ZH,HIGH(TXT3<<1)

RCALL WRTLIN

RCALL OFFCUR

SHOW: LDS R21,VALMED

LDS R22,VALMED+1

MOV R23,R21

MOV R24,R22

RCALL BCD_C

LDI AUX1,32

RCALL BORRA

LDI AUX1,32

RCALL WRTNUM

LDI AUX1,56

Page 6: Ejercicio 08 CAD

SISTEMAS MICROPROCESADOS: Aplicaciones mediante el uso de ACD Página 6

Ing. Jaime E. Velarde – Departamento de Electrónica, Telecomunicaciones y Redes de Información

RCALL BORRA

LDI AUX1,56

RCALL WRTNUM

LDI AUX1,76

RCALL BORRA

LDI AUX1,76

RCALL WRTNUM

; RELACIÓN CON EL VALOR MÁXIMO

LDI AUX1,55

RCALL POSCUR

RCALL COMP1

BRCC SHOW1

LDI AUX1,'>'

RJMP SHOW2

SHOW1: LDI AUX1,'<'

SHOW2: RCALL WRTCHR

; RELACIÓN CON EL VALOR MÍNIMO

LDI AUX1,75

RCALL POSCUR

RCALL COMP2

BRCC SHOW3

LDI AUX1,'>'

RJMP SHOW4

SHOW3: LDI AUX1,'<'

SHOW4: RCALL WRTCHR

; CHEQUEO DE CAMBIO EN LA ENTRADA ANALÓGICA

SHOW5: LDS AUX1,ADCL

LDS AUX2,ADCH

CP AUX1,R24

BRNE SHOW

CP AUX2,R23

BREQ SHOW5

RJMP SHOW

; SUBRUTINAS

; BORRA EL VALOR ANTERIOR

BORRA: RCALL POSCUR

LDI AUX1,' '

RCALL WRTCHR

LDI AUX1,' '

RCALL WRTCHR

LDI AUX1,' '

RCALL WRTCHR

LDI AUX1,' '

RCALL WRTCHR

RET

; COMPARACIÓN CON EL VALOR MÁXIMO

COMP1: LDS AUX1,VALMED

LDS AUX2,VALMAX

CP AUX1,AUX2

BRNE COMP11

LDS AUX1,VALMED+1

LDS AUX2,VALMAX+1

CP AUX1,AUX2

COMP11: RET

; COMPARACIÓN CON EL VALOR MÍNIMO

COMP2: LDS AUX1,VALMED

LDS AUX2,VALMIN

CP AUX1,AUX2

BRNE COMP21

LDS AUX1,VALMED+1

LDS AUX2,VALMIN+1

Page 7: Ejercicio 08 CAD

SISTEMAS MICROPROCESADOS: Aplicaciones mediante el uso de ACD Página 7

Ing. Jaime E. Velarde – Departamento de Electrónica, Telecomunicaciones y Redes de Información

CP AUX1,AUX2

COMP21: RET

; TRANSFORMACIÓN DE BCD A BINARIO

BCD_A_BIN:

LDS AUX1,BUFFER+7

LDI AUX2,100

MUL AUX1,AUX2

MOVW R2,R0

LDS AUX1,BUFFER+8

LDI AUX2,10

MUL AUX1,AUX2

ADD R2,R0

ADC R3,R1

LDS AUX1,BUFFER+9

ADD R2,AUX1

LDI AUX1,0

ADC R3,AUX1

RET

; TRANSFORMACIÓN DE BINARIO A BCD

BCD_C: LDI XL,LOW(BUFFER+6)

LDI XH,HIGH(BUFFER+6)

LDI ZL,LOW(TBLPOT<<1)

LDI ZH,HIGH(TBLPOT<<1)

LDI AUX3,3

BCD_C1: LPM AUX1,Z+

LPM AUX2,Z+

CLR R20

BCD_C2: SUB R22,AUX1

SBC R21,AUX2

BRCS BCD_C3

INC R20

RJMP BCD_C2

BCD_C3: ADD R22,AUX1

ADC R21,AUX2

ST X+,R20

DEC AUX3

BRNE BCD_C1

ST X,R22

RET

; TABLA DE POTENCIAS DE 10

TBLPOT: .DW 1000,100,10

; .DB "01234567890123456789"

TXT1: .DB "INGRESE Vmax: "

.DB "VAL.MEDIDO: "

.DB "VAL.MAXIMO: "

.DB "VAL.MINIMO: "

TXT2: .DB "INGRESE Vmin: "

TXT3: .DB "DATOS CONVERSOR A/D "

; LECTURA DEL RESULTADO DEL CONVERSOR

INTADC: LDS AUXI1,ADCL

STS VALMED+1,AUXI1

LDS AUXI1,ADCH

STS VALMED,AUXI1

LDI AUXI1,0B11011000

STS ADCSRA,AUXI1

RETI

;

.INCLUDE "SUB80CHR.ASM"

.EXIT ; FIN DEL MODULO FUENTE