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

CODIGO COMENTADO:

FIRMA-1:
.INCLUDE "m32def.inc"
.org $0000
jmp main
main:
ldi r16,high(ramend)
out sph,r16 ;apunta el estado mas alto de la memoria
ldi r16,low(ramend)
out spl,r16 ;apunta el estado mas alto de la memoria
ser r16 ;poner a 1 todo el r16
out ddrd,r16 ;el puerto d como salida
ldi r16,0b00000011 ;cargamos al r16 0x03
out ddrb,r16 ;solo los 2 primoeros pines como salida y lo demas como entrada
bucle:
sbic pinb,7 ;saltamos si el bit 7 esta en 0
rjmp admux1 ;saltamos a la etiqueta admux1
rjmp admux0 ;saltamos a la etiqueta admux0
admux0:
ldi r16,0x40
out admux,r16 ;configuramos el registro admux cargandole el registro r16
ldi r16,0x85
out adcsra,r16 ;configuramos el registro adcsra cargandole el registro r16
call delay200u ;llamada a un retardo de 200us
loop1:
sbi adcsra,adsc ;inicio de la convercion analogo digital
convertir1:
sbis adcsra,adsc ;saltamos si el bit adsc del registro adcsra esta en 1
rjmp leer1 ;saltamos a la etiqueta leer1
rjmp convertir1 ;saltamos ala etiqueta convertir1
leer1:
in r16,adcl ;leemos y guardamos al registro r16 con adcl
out portd,r16 ;exportamos el r16 al portd
in r16,adch ;leemos y guardamos al registro r16 con adch
out portb,r16 ;exportamos el r16 al portb
call delay25m ;llamada a un retardo de 25ms
rjmp bucle ;saltamos a bucle
admux1:
ldi r16,0x41
out admux,r16 ;configuramos el registro admux cargandole el registro r16
ldi r16,0x85
out adcsra,r16 ;configuramos el registro adcsra cargandole el registro r16
call delay200u ;llamada a un retardo de 200us
loop2:
sbi adcsra,adsc ;inicio de la convercion analogo digital
convertir2:
sbis adcsra,adsc ;saltamos si el bit adsc del registro adcsra esta en 1
rjmp leer2 ;saltamos a la etiqueta leer2
rjmp convertir2 ;saltamos ala etiqueta convertir2
leer2:
in r16,adcl ;leemos y guardamos al registro r16 con adcl
out portd,r16 ;exportamos el r16 al portd
in r16,adch ;leemos y guardamos al registro r16 con adch
out portb,r16 ;exportamos el r16 al portb
call delay25m ;llamada a un retardo de 25ms
rjmp bucle ;saltamos a bucle
delay25m:
ldi r17,0xA5 ;cargamos a r17 con 0xA5
wgloop0: ldi r18,0xC9 ;cargamos a r18,con 0xC9
wgloop1: dec r18 ;decrementamos r18
brne wgloop1 ;preguntamos si la bandera de z esta activada
dec r17 ;decrementamos r17
brne wgloop0 ;preguntamos si la bandera de z esta activada
ldi r17,0x03 ;cargamos a r17 con 0x03
wgloop2: dec r17 ;decremetamos r17
brne wgloop2 ;preguntamos si la bandera de z esta activada
nop ;no hacernada
ret ;retornar
delay200u:
ldi r17,0x02 ;cargar a r17 con 0x02
wgloop3: ldi r18,0x84 ;cargar a r17 con 0x084
wgloop4: dec r18 ;decrementar r18
brne wgloop4 ;preguntamos si la bandera de z esta activada
dec r17 ;decrementar r17
brne wgloop3 ;preguntamos si la bandera de z esta activada
nop ;no hacer nada
nop ;no hacer nada
ret ;retornar

FIRMA-2:
.INCLUDE "m32def.inc"
.org $0000
jmp main
main:
ldi r16,high(ramend)
out sph,r16 ;el estado mas alto de la memoria
ldi r16,low(ramend)
out spl,r16 ;el estado mas bajo de la memoria
ser r16 ; ponemos a 1 todo el r15
out ddrd,r16 ;puerto d como salida
ldi r16,0x03
out ddrb,r16 ;puerto d 5 bit como entrada y 2 como salida
asignar:
ldi r16,0x00 ;cargamos al r16 con 0x00
ldi r17,0x40 ;cargamos al r17 con 0x40
ldi r18,0x80 ;cargamos al r18 con 0x80
ldi r19,0xc0 ;cargamos al r19 con 0xc0
in r20,pinb ;leemos el portb y lo guardamos en r20
andi r20,0xc0 ;masacara para los ultimos bits
bulce:
cpse r20,r16 ;compara y saltar si son iguales los registros
rjmp pregunta2 ;saltar a la etiqueta pregunta2
rjmp admux3 ;saltar a la etiqueta admux3
pregunta2:
cpse r20,r17 ;compara y saltar si son iguales los registros
rjmp pregunta3 ;saltar a la etiqueta pregunta3
rjmp admux0 ;saltar a la etiqueta admux0
pregunta3:
cpse r20,r18 ;compara y saltar si son iguales los registros
rjmp pregunta4 ;saltar a la etiqueta pregunta4
rjmp admux7 ;saltar a la etiqueta admux7
pregunta4:
cpse r20,r19 ;compara y saltar si son iguales los registros
rjmp asignar ;saltar a la etiqueta asignar
rjmp admux6 ;saltar a la etiqueta admux6
;-------------------------------------------------------------------------------------
admux3:
ldi r16,0x43 ;cargar al r16 con 0x43
out admux,r16 ;cargar al registro admux con r16
ldi r16,0x85 ;cargar al r16 con 0x85
out adcsra,r16 ;cargar al registro adscra con r16
call delay200u ;llamar al delay de 200us
loop1:
sbi adcsra,adsc ;arrancar el convertidor analogo digital
convertir1:
sbis adcsra,adsc ;saltar si el bit de registro adcsra esta activado
rjmp leer1 ;saltar a la etiqueta leer1
rjmp convertir1 ;saltar a la etiqueta convertir1
leer1:
in r16,adcl ;leer el adcl y cargar el registro r16
out portd,r16 ;exportar el r16 al portd
in r16,adch ;leer el adch y cargar el registro r16
out portb,r16 ;exportar el r16 al portb
call delay25m ;llamar al delay de 25ms
rjmp asignar ;saltar a signar
;-------------------------------------------------------------------------------------
admux0:
ldi r17,0x40 ;cargar al r17 con 0x40
out admux,r17 ;cargar al registro admux con r17
ldi r17,0x85 ;cargar al r17 con 0x85
out adcsra,r17 ;cargar al registro adscra con r17
call delay200u ;llamar al delay de 200us
loop2:
sbi adcsra,adsc ;arrancar el convertidor analogo digital
convertir2:
sbis adcsra,adsc ;saltar si el bit de registro adcsra esta activado
rjmp leer2 ;saltar a la etiqueta leer2
rjmp convertir2 ;saltar a la etiqueta convertir2
leer2:
in r17,adcl ;leer el adcl y cargar el registro r17
out portd,r17 ;exportar el r17 al portd
in r17,adch ;leer el adch y cargar el registro r17
out portb,r17 ;exportar el r17 al portb
call delay25m ;llamar al delay de 25ms
rjmp asignar ;saltar a signar
;-------------------------------------------------------------------------------------
admux7:
ldi r18,0x47 ;cargar al r18 con 0x47
out admux,r18 ;cargar al registro admux con r18
ldi r18,0x85 ;cargar al r18 con 0x85
out adcsra,r18 ;cargar al registro adscra con r18
call delay200u ;llamar al delay de 200us
loop3:
sbi adcsra,adsc ;arrancar el convertidor analogo digital
convertir3:
sbis adcsra,adsc ;saltar si el bit de registro adcsra esta activado
rjmp leer3 ;saltar a la etiqueta leer3
rjmp convertir3 ;saltar a la etiqueta convertir3
leer3:
in r18,adcl ;leer el adcl y cargar el registro r18
out portd,r18 ;exportar el r18 al portd
in r18,adch ;leer el adch y cargar el registro r18
out portb,r18 ;exportar el r18 al portb
call delay25m ;llamar al delay de 25ms
rjmp asignar ;saltar a signar
admux6:
ldi r19,0x46 ;cargar al r19 con 0x46
out admux,r19 ;cargar al registro admux con r19
ldi r19,0x85 ;cargar al r19 con 0x85
out adcsra,r19 ;cargar al registro adscra con r19
call delay200u ;llamar al delay de 200us
loop4:
sbi adcsra,adsc ;arrancar el convertidor analogo digital
convertir4:
sbis adcsra,adsc ;saltar si el bit de registro adcsra esta activado
rjmp leer4 ;saltar a la etiqueta leer4
rjmp convertir4 ;saltar a la etiqueta convertir4
leer4:
in r19,adcl ;leer el adcl y cargar el registro r19
out portd,r19 ;exportar el r19 al portd
in r19,adch ;leer el adch y cargar el registro r19
out portb,r19 ;exportar el r19 al portb
call delay25m ;llamar al delay de 25ms
rjmp asignar ;saltar a signar

delay25m:
ldi r17,0xA5 ;cargamos a r17 con 0xA5
wgloop0: ldi r18,0xC9 ;cargamos a r18,con 0xC9
wgloop1: dec r18 ;decrementamos r18
brne wgloop1 ;preguntamos si la bandera de z esta activada
dec r17 ;decrementamos r17
brne wgloop0 ;preguntamos si la bandera de z esta activada
ldi r17,0x03 ;cargamos a r17 con 0x03
wgloop2: dec r17 ;decremetamos r17
brne wgloop2 ;preguntamos si la bandera de z esta activada
nop ;no hacernada
ret ;retornar

delay200u:
ldi r17,0x02 ;cargar a r17 con 0x02
wgloop3: ldi r18,0x84 ;cargar a r17 con 0x084
wgloop4: dec r18 ;decrementar r18
brne wgloop4 ;preguntamos si la bandera de z esta activada
dec r17 ;decrementar r17
brne wgloop3 ;preguntamos si la bandera de z esta activada
nop ;no hacer nada
nop ;no hacer nada
ret ;retornar
DIAGRAMA ESQUEMATICO 1:

DIAGRAMA ESQUEMATICO 2:

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