Ejercicio 08 CAD
-
Upload
jaime-e-velarde -
Category
Education
-
view
1.680 -
download
2
description
Transcript of 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” (<).
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
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
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
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
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
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