Está en la página 1de 4

DEBER DE SISTEMAS MICROPROCESADOS

NOMBRE: CRISTIAN TIXE

TEMA: CONVERSOR A/D

.include "m164pdef.inc"

.def aux=r16

.def aux1=r17

.def temp=r18

.def temp1=r19

.cseg

.org 0x00

rjmp configuracion

.org 0x30

rjmp conversion

configuracion:

//configuracion de puertos//

ldi aux,0

out ddra,aux ; puerto A entrada

ldi aux,255

out ddrb,aux ; puerto B salida

out ddrd, aux

out ddrc, aux

ldi aux,0

out portb,aux

out portd,aux

out portc,aux

//config. stack pointer//

ldi aux,low(ramend)
out spl,aux

ldi aux,high(ramend)

out sph,aux

////ESCOGER CANAL - ESCOGER REFERENCIA DE FUENTE //

ldi aux,0b0000_0001

sts didr0,aux ; deshabilita como entrada digital y cambia a entrada analogica

ldi aux,0b0100_0000 ; ref=avcc , justifica a la dereche(despues justificado a izquierda), canal

sts admux,aux

ldi aux,0b1100_0110 ; se escoge el pre-escalador de 64 para que la frecuencia quede de


125kHz. Se habilita la inicializacion de la conversion

sts adcsra,aux

//////////////////////////////////////////////////

/////PROGRAMA PRINCIPAL/////////////

rjmp iniciar

iniciar:

lds aux,adcsra

sbr aux,0b0100_1000 ;; Se TERMINA la conversion

sts adcsra,aux

call conversion //conversion adc

call logica

call mostrar

rjmp iniciar

conversion:
lds aux,adcl

lds temp,adch

out portd,aux

out portc,temp

reti

logica:

mov aux1, temp

cpi aux1, 0

brne paso1

ldi temp1, 0b00000010

rjmp salida

paso1:

mov aux1, temp

cpi aux1, 2

brne paso2

ldi temp1, 0b00000001

rjmp salida

paso2:

mov aux1, temp

cpi aux1, 3

brne paso3

ldi temp1, 0b00000001

rjmp salida

paso3:

mov aux1, aux

cpi aux1, 224

brcs paso4

ldi temp1, 0b00000001

rjmp salida

paso4:
mov aux1, aux

cpi aux1, 128

brcc salida

ldi temp1, 0b00000010

salida:

ret

mostrar:

out portb, temp1

ret