Вы находитесь на странице: 1из 8

ESCUELA POLITCNICA NACIONAL

FACULTAD DE INGENIERA ELCTRICA


Y ELECTRNICA

LABORATORIO DE
SISTEMAS MICROPROCESADOS
TRABAJO PREPARATORIO
Prctica No:
Tema:

10
CONVERSOR ANALOGO/DIGITAL

Paralelo:
Grupo:

Realizado por:

Estefana Erreyes
Edwin Cabrera

Fecha de Entrega:

2016-07-27
Semestre 2016A

Escuela Politcnica Nacional


Facultad de Ingeniera Elctrica y Electrnica
LABORATORIO DE SISTEMAS MICROPROCESADOS

ESCUELA POLITCNICA NACIONAL


Campus Politcnico "J. Rubn Orellana R."
FACULTAD DE INGENIERA ELCTRICA Y ELECTRNICA
LABORATORIO DE SISTEMAS MICROPROCESADOS
PRCTICA N10
TEMA:

CONVERSOR ANALOGO/DIGITAL

OBJETIVO:

Implementar un sistema microcontrolado que funcione simultneamente


como voltmetro digital o termmetro utilizando conversor A/D del uC
ATMega164p.

DESARROLLO:
.include "m164pdef.inc"
.def
.def
.def
.def

tempo=r16
aux=r17
monitorsl=r18
monitorsh=r19

.dseg
.org 0x100
bcd: .byte 5
segmentos: .byte 5
resultado: .byte 3
palarma: .byte 1
pasofuncion: .byte 1
pasounidad: .byte 1
lectura_adcl: .byte 1
lectura_adch: .byte 1
.cseg
.org 0x0
rjmp inicio
.org 0x2
rjmp cambiar_canal
.org 0x4
rjmp cambiar_unidad
inicio:
ldi tempo,0
sts pasofuncion,tempo
ldi tempo,0
sts pasounidad,tempo
;puerto A entrada anloga los 2 bits LSB, dems salida digital
ldi tempo,0b11111100
out ddra,tempo
clr tempo
out porta,tempo
;puertoB salida a segmentos
ser tempo
out ddrb,tempo
clr tempo
out portb,tempo
;puertoC bit MSB entrada demas salidas
ldi tempo,0b01111111
out ddrc,tempo
com tempo
out portc,tempo

Escuela Politcnica Nacional


Facultad de Ingeniera Elctrica y Electrnica
LABORATORIO DE SISTEMAS MICROPROCESADOS
;puertoD 4 MSB salida a transistores, dems entradas
ldi tempo,0b11110000
out ddrd,tempo
ser tempo
out portd,tempo
;configuracin del PUD
in tempo,mcucr
andi tempo,0b11101111
out mcucr,tempo
;inicializacin del stack point
ldi tempo,high(ramend)
out sph,tempo
ldi tempo,low(ramend)
out spl,tempo
;interrupcin INT0 e INT1, falco de bajada
ldi tempo,0b00001010
sts eicra,tempo
ldi tempo,0b00000011
out eimsk,tempo
;activacin global de interrupciones
sei
ldi
sts
ldi
sts

r16,0b00000011
didr0,r16
r16,0b01000000
admux,r16

monitor:ldi tempo,0b11000110
sts adcsra,tempo
monitor1:
lds tempo,adcsra
sbrc tempo,6
rjmp monitor1
ldi xl,low(resultado)
ldi xh,high(resultado)
lds tempo,adcl
lds aux,adch
sts lectura_adcl,tempo
sts lectura_adch,aux
lds r20,pasofuncion
sbrs r20,0
rjmp modotermometro
ldi monitorsl,low(4888)
ldi monitorsh,high(4888)
rjmp contmonitor
modotermometro:
lds r20,pasounidad
sbrc r20,0
rjmp modotermometro22
modotermometro11:
;ldi monitorsl,low(4888)
;ldi monitorsh,high(4888)
ldi monitorsl,low(2542)
ldi monitorsh,high(2542)
rjmp contmonitor
modotermometro22:
;ldi monitorsl,low(8798)
;ldi monitorsh,high(8798)
ldi monitorsl,low(4560)
ldi monitorsh,high(4560)
contmonitor:
mul
mov
mov
mul
add
clr
adc
mov
mul

tempo,monitorsl
r2,r0
r3,r1
aux,monitorsl
r3,r0
r0
r1,r0
r4,r1
monitorsh,tempo

Escuela Politcnica Nacional


Facultad de Ingeniera Elctrica y Electrnica
LABORATORIO DE SISTEMAS MICROPROCESADOS
mov
mov
add
adc
clr
clr
adc
mul
add
adc

continuar0:

r5,r0
r6,r1
r3,r5
r4,r6
r5
r6
r5,r6
aux,monitorsh
r4,r0
r5,r1

lds r20,pasofuncion
sbrc r20,0
rjmp continuar0
lds r20,pasounidad
sbrs r20,0
rjmp continuar0
ldi tempo,0
ldi aux,0xe2
ldi r20,0x4
add r2,tempo
adc r3,aux
adc r4,r20
st x+,r2
st x+,r3
st x+,r4
lds tempo,pasofuncion
sbrc tempo,0
rjmp ledsapagados

continuar_leds:
lds tempo,adcl
lds aux,adch
cpi tempo,83
brsh encenderled
cpi r16,62
brlo apagarled
rjmp contruti
encenderled:
in tempo,pinc
ori tempo,0b11000000
out portc,tempo
rjmp contruti
apagarled:
in tempo,pinc
andi tempo,0b10111111
ori tempo,0b10000000
out portc,tempo
rjmp contruti
ledsapagados:
in tempo,portc
andi tempo,0b10001111
out portc,tempo
contruti:
call bin_bcd
call segmentosdisp
call barridodisp
;mostrar conversor en leds:
lds tempo,lectura_adcl
lds aux,lectura_adch
ldi r20,4
mul tempo,r20
mov tempo,r0
andi tempo,0b11111100
out porta,tempo
in tempo,pinc
andi tempo,0b11110000
out portc,tempo
mov tempo,r1
ldi r20,4

;desactivar pull up en adc0 y adc1

Escuela Politcnica Nacional


Facultad de Ingeniera Elctrica y Electrnica
LABORATORIO DE SISTEMAS MICROPROCESADOS
andi aux,0b00000011
mul r20,aux
mov aux,r0
or tempo,aux
in aux,pinc
or aux,tempo
out portc,aux
rjmp monitor
;interrupcin INT0, cambiar_canal
cambiar_canal:
push r16
in r16,sreg
push r16
lds r16,pasofuncion
sbrc r16,0
rjmp funtermometro
funvoltimetro:
ldi r16,1
sts pasofuncion,r16
ldi r16,0b01000000
sts admux,r16
rjmp salircambs

;no pull up en adc1

funtermometro:
clr
sts
ldi
sts

r16
pasofuncion,r16
r16,0b01000001
admux,r16

salircambs:
pop r16
out sreg,r16
pop r16
reti
;interrupcin INT1, cambiar_unidad
cambiar_unidad:
push r16
in r16,sreg
push r16
lds r16,pasofuncion
cpi r16,1
breq salircamun
lds r16,pasounidad
cpi r16,0
breq unidad
unidadc:

clr r16
sts pasounidad,r16
in tempo,pinc
ori tempo,0b10100000
andi tempo,0b11101111
out portc,tempo
rjmp salircamun

unidadf:

ldi r16,1
sts pasounidad,r16
in tempo,pinc
ori tempo,0b10010000
andi tempo,0b11011111
out portc,tempo

salircamun:
pop r16
out sreg,r16
pop r16
reti
;rutina de binario a BCD

;no pull up en adc0

Escuela Politcnica Nacional


Facultad de Ingeniera Elctrica y Electrnica
LABORATORIO DE SISTEMAS MICROPROCESADOS
bin_bcd:push r16
push
push
push
push
push
push
push
push
push
push
push
push
push

siguiente:

restar:

r17
r18
r19
r20
r21
r22
r23
xl
xh
yl
yh
zl
zh

clr r20
ldi r21,5
ldi zl,low(constantes<<1)
ldi zh,high(constantes<<1)
ldi xl,low(resultado)
ldi xh,high(resultado)
ldi yl,low(bcd)
ldi yh,high(bcd)
ld r16,x+
ld r17,x+
ld r22,x
lpm r18,z+
lpm r19,z+
lpm r23,z+

sub r16,r18
sbc r17,r19
sbc r22,r23
brcs continuar
inc r20
rjmp restar
continuar:

pop
pop
pop
pop
pop
pop
pop
pop
pop
pop
pop
pop
pop
pop
ret

add r16,r18
adc r17,r19
adc r22,r23
st y+,r20
clr r20
dec r21
brne siguiente

zh
zl
yh
yl
xh
xl
r23
r22
r21
r20
r19
r18
r17
r16

;rutina de monitorsin de BCD a siete segmento0


segmentosdisp:
push r16
push r17
push xl
push xh
push yl
push yh
push zl
push zh
ldi
ldi
ldi
ldi

xl,low(bcd)
xh,high(bcd)
yl,low(segmentos)
yh,high(segmentos)

;resultado LSB
;resultado MSB
;constante LSB de tabla constantes
;constante MSB de tabla constantes

;guardar en bcd0 los BCD desde MSB a LSB

Escuela Politcnica Nacional


Facultad de Ingeniera Elctrica y Electrnica
LABORATORIO DE SISTEMAS MICROPROCESADOS
pasar:

ldi r17,5
ldi zl,low(tabla<<1)
ldi zh,high(tabla<<1)
ld r16,x+
add zl,r16
clr r16
adc zh,r16
lpm r16,z
st y+,r16
dec r17
brne pasar
sub r4,r2
breq salirbcd
lds r16,pasofuncion
cpi r16,1
breq voltimetropunto
lds r16,segmentos+2
ori r16,0b10000000
sts segmentos+2,r16
rjmp salirbcd

voltimetropunto:
lds r16,segmentos
ori r16,0b10000000
sts segmentos,r16
rjmp salirbcd
salirbcd:

pop
pop
pop
pop
pop
pop
pop
pop
ret

zh
zl
yh
yl
xh
xl
r17
r16

;rutina de barridodisp de displays


barridodisp:
push r16
push r17
push r18
push r19
push r20
push xl
push xh
ldi
ldi
ldi
ldi
otrobcd:

r18,4
xl,low(segmentos)
xh,high(segmentos)
r17,0b01111111

ser r16
out portd,r16
ld r16,x+
out portb,r16
out portd,r17
call retardo
ser r16
out portd,r16
sec
ror r17
dec r18
brne otrobcd
ori r16,0b00001100
out portd,r16

pop xh
pop xl

;cargar letra C

Escuela Politcnica Nacional


Facultad de Ingeniera Elctrica y Electrnica
LABORATORIO DE SISTEMAS MICROPROCESADOS
pop
pop
pop
pop
pop
ret

r20
r19
r18
r17
r16

retardo:ldi r19,0x43
retar0: ldi r20,0xc6
retar1: dec r20
brne retar1
dec r19
brne retar0
nop
ret
tabla:

.db
.db
.db
.db
.db

0b00111111,
0b01011011,
0b01100110,
0b01111101,
0b01111111,

;rutina de retardo para

0b00000110
0b01001111
0b01101101
0b00000111
0b01101111

;0
;2
;4
;6
;8

y
y
y
y
y

1
3
5
7
9

constantes:.db 0x40,0x42,0xf,0xa0,0x86,1
.db 0x10,0x27,0,0xe8,0x3,0
.db 100,0,0,10,0,0

Вам также может понравиться