Você está na página 1de 4

C:\Users\Jonathan\Documents\septimo semestre\Laboratorio de Contro...\modoextendido.

asm

.include "m164pdef.inc"
.def tempo=r16
.def modos=r17
.def dato=r18
.def aux=r19

.dseg

dig0: .Byte 1
dig1: .Byte 1
dig2: .Byte 1
num0: .Byte 1
num1: .Byte 1
num2: .Byte 1

.cseg

.org 0x0
rjmp inicio
.org 0x02
jmp modo
.org 0x1A
jmp segundo

inicio:
clr modos
ldi tempo,0b00001111
out ddrb,tempo

ldi tempo,high(ramend)
out sph,tempo
ldi tempo,low(ramend)
out spl,tempo

call configurar_pull_up
call configurar_int0
call configurar_timmer1

lazo:
rjmp lazo

segundo:push tempo
in tempo,sreg
push tempo

call configura_entrada
call leer_puerto
call analizar

pop tempo
out sreg,tempo
pop tempo
reti

leer_puerto: ldi tempo,0b00000000


out portb,tempo
in dato,pinc

ret

analizar: cpi modos,0

Page: 1
C:\Users\Jonathan\Documents\septimo semestre\Laboratorio de Contro...\modoextendido.asm

brne leds
call displays
retorno: ret

leds: call configura_salidas


com dato

ser tempo
out portc,tempo

ldi tempo,2
out portb,tempo

ldi tempo,3
out portb,tempo

ldi tempo,4
out portb,tempo

ldi tempo,1
out portb,tempo
call retardo
mov tempo,dato
out portc,tempo
call retardo

rjmp retorno

displays: call bin_bcd


call bcd_7seg
call imprimir
ret

bin_bcd:
clr tempo

centenas: subi dato,100


brcs decenas
inc tempo
rjmp centenas
decenas: sts dig2,tempo
clr tempo
subi dato,-100
decenas1: subi dato,10
brcs unidades
inc tempo
rjmp decenas1
unidades: sts dig1,tempo
subi dato,-10
sts dig0,dato
ret

bcd_7seg: call inicializo_puntero


lds tempo,dig0
call buscar_numero
sts num0,tempo
call inicializo_puntero
lds tempo,dig1
call buscar_numero
sts num1,tempo

Page: 2
C:\Users\Jonathan\Documents\septimo semestre\Laboratorio de Contro...\modoextendido.asm

call inicializo_puntero
lds tempo,dig2
call buscar_numero
sts num2,tempo
ret

imprimir: call configura_salidas


ldi tempo,1
out portb,tempo
ser tempo
out portc,tempo

ldi tempo,2
out portb,tempo
call retardo
lds tempo,num2
out portc,tempo
call retardo

ldi tempo,3
out portb,tempo
call retardo
lds tempo,num1
out portc,tempo
call retardo

ldi tempo,4
out portb,tempo
call retardo
lds tempo,num0
out portc,tempo
call retardo

ret

inicializo_puntero:
ldi zh,high(tabla<<1)
ldi zl,low(tabla<<1)
ret
buscar_numero: add zl,tempo
clr tempo
adc zh,tempo
lpm tempo,z
ret

configurar_pull_up: in tempo,mcucr
andi tempo,0b11101111
out mcucr,tempo
ret

configura_entrada: clr tempo


out ddrc,tempo
ser tempo
out portc,tempo
ret

configura_salidas: ser tempo


out ddrc,tempo
clr tempo
out portc,tempo

ret

configurar_int0: ldi tempo,0b00000010

Page: 3
C:\Users\Jonathan\Documents\septimo semestre\Laboratorio de Contro...\modoextendido.asm

sts eicra,tempo
ldi tempo,0b00000001
out eimsk,tempo
clr tempo
out ddrd,tempo
ldi tempo,0b00000100
out portd,tempo
sei
ret

modo: push tempo


in tempo,sreg
push tempo

com modos

pop tempo
out sreg,tempo
pop tempo
reti

retardo: ldi aux,255


lazo_ret: dec aux
brne lazo_ret
ret

configurar_timmer1: ldi tempo,0b00000000


sts tccr1a,tempo
ldi tempo,0b00001100
sts tccr1b,tempo
ldi tempo,high(31250)
sts ocr1ah,tempo
ldi tempo,low(31250)
sts ocr1al,tempo
ldi tempo,0b00000010
sts timsk1,tempo
ret

tabla: .db 0b01000000,0b01111001,0b00100100,0b00110000


.db 0b00011001,0b00010010,0b00000010,0b01111000
.db 0b00000000,0b00011000

Page: 4

Você também pode gostar