Vous êtes sur la page 1sur 8

SISTEMAS MICROPROCESADOS – Ejercicios para comprobar el funcionamiento del ADC

-1-

PROGRAMAS DE COMPROBACIÓN DEL


CONVERSOR AD
Programa para visualizar mediante el simulador del AVR Studio, el funcionamiento de
los registros del conversor de analógico a digital que posee el microcontrolador
ATmega16, sin utilizar las interrupciones del conversor.

.NOLIST
.INCLUDE "m16def.inc"
.LIST
;
.DEF AUX1 = R16
;
.CSEG
PROGP:
; PROGRAMACIÓN DEL ADC
; REFS1:0=11 VOLTAJE DE REFERENCIA INTERNA 2.56
; ADLAR=0 RESULTADO ALINEADO A LA DERECHA
; MUX4:0=00111 SELECCIÓN DEL CANAL 7 - UN SOLO TERMINAL
LDI AUX1,0B11000111
OUT ADMUX,AUX1
; 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=0 HABILITACIÓN DE LA INTERRUPCIÓN
; ADPS2:0=000 FRECUENCIA DEL RELOJ DIVIDA PARA 2
; ADPS2:0=011 FRECUENCIA DEL RELOJ DIVIDA PARA 8
LDI AUX1,0B11010000
; LDI AUX1,0B11010011
OUT ADCSRA,AUX1
; ADTS2:0=000 MODO DE LIBRE CONVERSIÓN
LDI AUX1,0B00000000
OUT SFIOR,AUX1
; LAZO DE ESPERA HASTA QUE ENCIENDA LA BANDERA
LAZO: IN AUX1,ADCSRA
SBRS AUX1,ADIF
RJMP LAZO
; BORRAR LA BANDERA
LDI AUX1,0B11010000
; LDI AUX1,0B11010011
OUT ADCSRA,AUX1
RJMP LAZO
;
.EXIT ; FIN DEL MODULO FUENTE

NOTA: cuando se esta simulando se debe esperar hasta que se encienda la bandera
ADIF para que salga del lazo.

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


SISTEMAS MICROPROCESADOS – Ejercicios para comprobar el funcionamiento del ADC
-2-

Programa para visualizar mediante el simulador del AVR Studio, el funcionamiento de


los registros del conversor de analógico a digital que posee el microcontrolador
ATmega16, utilizando las interrupciones del conversor para iniciar nuevas
conversiones.

.NOLIST
.INCLUDE "m16def.inc"
.LIST
;
.DEF AUX1 = R16
;
.CSEG
JMP PROGP
;
.ORG $01C ; INTERUPCIÓN DE FIN DE CONVERSIÓN
LDI AUX1,0B11011000
; LDI AUX1,0B11011011
OUT ADCSRA,AUX1
RETI
;
PROGP: LDI AUX1,LOW(RAMEND)
OUT SPL,AUX1
LDI AUX1,HIGH(RAMEND)
OUT SPH,AUX1
; PROGRAMACIÓN DEL ADC
; REFS1:0=11 VOLTAJE DE REFERENCIA INTERNA 2.56
; ADLAR=0 RESULTADO ALINEADO A LA DERECHA
; MUX4:0=00111 SELECCIÓN DEL CANAL 7 - UN SOLO TERMINAL
LDI AUX1,0B11000111
OUT ADMUX,AUX1
; 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
; ADPS2:0=011 FRECUENCIA DEL RELOJ DIVIDA PARA 8
LDI AUX1,0B11011000
; LDI AUX1,0B11011011
OUT ADCSRA,AUX1
; ADTS2:0=000 MODO DE LIBRE CONVERSIÓN
LDI AUX1,0B00000000
OUT SFIOR,AUX1
;
SEI
; LAZO DE ESPERA HASTA QUE ENCIENDA LA BANDERA
LAZO: RJMP LAZO
;
.EXIT ; FIN DEL MODULO FUENTE

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


SISTEMAS MICROPROCESADOS – Ejercicios para comprobar el funcionamiento del ADC
-3-

Programa para visualizar mediante el simulador del PROTEUS, el funcionamiento del


conversor de analógico a digital para implementar un voltímetro de 0 a 5 voltios,
utilizando la entrada ADC7 para la señal analógica y el Timer 1 para generar la
temporización de un segundo que se sirve para mostrar el resultado en los display.

.NOLIST
.INCLUDE "m16def.inc"
.LIST
;
.DEF VALORD = R15
.DEF AUX1 = R16
.DEF AUX2 = R17
.DEF AUX3 = R18
.DEF VALORH = R19
.DEF VALORL = R20
.DEF VALCOL = R21
.DEF VALCOH = R22
.DEF AUXI1 = R23
;
.DSEG
DIGIT: .BYTE 4
COD7S: .BYTE 4
;
.CSEG
JMP PROGP
.ORG $0C ; INTERRUPCION POR EMPAREJAMIENTO
IN VALORL,ADCL
IN VALORH,ADCH
RETI
;
.ORG 0x01C ; INTERRUPCIÓN DE CONVERSIÓN COMPLETA
LDI AUXI1,0B11011000
; LDI AUXI1,0B11011011
OUT ADCSRA,AUXI1
RETI
;
PROGP: LDI AUX1,LOW(RAMEND)
OUT SPL,AUX1
LDI AUX1,HIGH(RAMEND)
OUT SPH,AUX1
LDI AUX1,0B11111111
OUT DDRC,AUX1 ; PARA LOS SEGMENTOS
LDI AUX1,0B00001111
OUT DDRA,AUX1 ; PARA LOS CÁTODOS
;
; INICIALIZACIÓN DEL TIMER1 PARA UN SEGUNDO
; COM1A1:0=00 DESCONECTADA DE LA SALIDA OC1A (PD5)
; COM1B1:0=00 DESCONECTADA DE LA SALIDA OC1B (PD4)
; FOC1A:0=1 OBLIGA A COMPARACIÓN CON OCR1A
; FOC1B:0=0 NO OBLIGA A COMPARACIÓN CON OCR1B

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


SISTEMAS MICROPROCESADOS – Ejercicios para comprobar el funcionamiento del ADC
-4-

; WGM11:0=00 CONFIGURACIÓN CTC (MODO 4)


LDI AUX1,0B00001000
OUT TCCR1A,AUX1
; ICNC1=0 DESHABILITA CANCELACIÓN DE RUIDO
; ICES1=0 TRANSICIÓN NEGATIVA PARA LA CAPTURA
; BIT5=0 BITS RESERVADO
; WGM13:2=01 CONFIGURACIÓN CTC (MODO 4)
; CS12:0=011 SELECCIÓN DEL RELOJ
LDI AUX1,0B00001011 ; Fosc/64
OUT TCCR1B,AUX1
; VALOR A COMPARAR EN OCR1A
LDI AUX1,HIGH(15625)
LDI AUX2,LOW(15625)
OUT OCR1AH,AUX1
OUT OCR1AL,AUX2
; HABILITA INTERRUPCIÓN POR EMPAREJAMIENTO EN COMPARACIÓN A
LDI AUX1,0B00010000
OUT TIMSK,AUX1
; PROGRAMACIÓN DEL ADC
; 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
OUT ADMUX,AUX1
; 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
; ADPS2:0=011 FRECUENCIA DEL RELOJ DIVIDA PARA 8
LDI AUX1,0B11001000
; LDI AUX1,0B11001011
OUT ADCSRA,AUX1
; ADTS2:0=000 MODO DE LIBRE CONVERSIÓN
LDI AUX1,0B00000000
OUT SFIOR,AUX1
;
SEI
;
LDI VALORH,0x04
LDI VALORL,0x00
;
SHOW: MOV VALCOL,VALORL
MOV VALCOH,VALORH
RCALL CORREC
RCALL CONVER
RCALL SEGME
RCALL DSPY
RJMP SHOW

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


SISTEMAS MICROPROCESADOS – Ejercicios para comprobar el funcionamiento del ADC
-5-

; CORRECCIÓN DEL VALOR BINARIO A LA ESCALA


; DIVIDIR PARA 200 = DIVIDIR 2 Y RECORRER EL PUNTO
CORREC: LSR VALCOH
ROR VALCOL
RET
; SUBRUTINA DE CONVERSIÓN DE HEXADECIMAL A DECIMAL
CONVER: LDI XL,LOW(DIGIT)
LDI XH,HIGH(DIGIT)
LDI ZL,LOW(TBLPOT<<1)
LDI ZH,HIGH(TBLPOT<<1)
LDI AUX3,3
CONVER1: LPM AUX1,Z+
LPM AUX2,Z+
CLR VALORD
CONVER2: SUB VALCOL,AUX1
SBC VALCOH,AUX2
BRCS CONVER3
INC VALORD
RJMP CONVER2
CONVER3: ADD VALCOL,AUX1
ADC VALCOH,AUX2
ST X+,VALORD
DEC AUX3
BRNE CONVER1
ST X,VALCOL
RET
; TABLA DE POTENCIAS DE 10
TBLPOT: .DW 1000,100,10
; SUBRUTINAS PARA MANEJAR UN DISPLAY DE 4 DIGITOS
; SUBRUTINA DE CODIFICACIÓN A 7 SEGMENTOS
SEGME: LDI YL,LOW(DIGIT)
LDI YH,HIGH(DIGIT)
LDI AUX3,4
SEGME1: LDI ZL,LOW(TBLCC<<1)
LDI ZH,HIGH(TBLCC<<1)
LD AUX1,Y+
ADD ZL,AUX1
LPM AUX1,Z
STD Y+3,AUX1
DEC AUX3
BRNE SEGME1
; PARA RECORRER EL PUNTO
LDS AUX1,COD7S+1
ORI AUX1,$80
STS COD7S+1,AUX1
RET
; CÓDIGOS PARA DISPLAYS DE CÁTODO COMÚN
TBLCC: .DB 0b00111111,0b00000110
.DB 0b01011011,0b01001111
.DB 0b01100110,0b01101101

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


SISTEMAS MICROPROCESADOS – Ejercicios para comprobar el funcionamiento del ADC
-6-

.DB 0b01111101,0b00000111
.DB 0b01111111,0b01101111
.DB 0b01110111,0b01111100
.DB 0b00111001,0b01011110
.DB 0b01111001,0b01110001
; SUBRUTINA DEL BARRIDO DE LOS DISPLAYS
DSPY: LDI YL,LOW(COD7S)
LDI YH,HIGH(COD7S)
LDI AUX3,4
LDI AUX2,0B00000001
DSPY1: LD AUX1,Y+
OUT PORTA,AUX2
OUT PORTC,AUX1
CLC
ROL AUX2
DLY: CLR R15
DLY1: DEC R15
BRNE DLY1
DEC AUX3
BRNE DSPY1
RET
;
.EXIT ; FIN DEL MODULO FUENTE

Resultados de la simulación:

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


SISTEMAS MICROPROCESADOS – Ejercicios para comprobar el funcionamiento del ADC
-7-

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


SISTEMAS MICROPROCESADOS – Ejercicios para comprobar el funcionamiento del ADC
-8-

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

Vous aimerez peut-être aussi