Você está na página 1de 3

.include "m164pdef.

inc"
.def num1=r16
.def num2=r17
.def cont=r19

.dseg
bcd1: .byte 1
bcd2: .byte 1
seg1: .byte 1
seg2: .byte 1
resultado: .byte 1

.cseg
; puertos A y B como entrada y pull up
clr r18
out ddra,r18
out ddrb,r18
ser r18
out porta,r18
out portb,r18
; puerto D como salida
ser r18
out ddrd,r18
out portd,r18
;Puerto C bit MSB como entrada, demas salidas
ldi r18,0b01111111
out ddrc,r18
ser r18
out portc,r18
; pull up
in r18,mcucr
andi r18,0b11101111
out mcucr,r18
;stack point
ldi r18,high(ramend)
out sph,r18
ldi r18,low(ramend)
out spl,r18
;programa:
lectura:
in num1,pinb
in num2,pina
clr cont
cpi num2,0
breq lectura
dividir:
sub num1,num2
brcs sumar
inc cont ;cont contiene la parte
entera
rjmp dividir
sumar: add num1,num2 ;num1 contiene el reciduo
seleccionar:
sbic pinc,7
rjmp parte_fraccionaria
parte_entera:
sts resultado,cont
call rutinas
lds num1,seg1
ori num1,0b10000000
out portc,num1
lds num2,seg2
andi num2,0b01111111
out portd,num2
rjmp lectura
parte_fraccionaria:
sts resultado,num1
call rutinas
lds num1,seg1
ori num1,0b10000000
out portc,num1
lds num2,seg2
andi num2,0b11111111
out portd,num2
rjmp lectura
rutinas:
call bin_bcd
call bcd_segmentos
ret

bin_bcd:
push r16
push r17
push r18

lds r16,resultado
ldi r17,10
clr r18
resta:
sub r16,r17
brcs restaurar
inc r18
rjmp resta
restaurar:
add r16,r17
sts bcd1,r16
sts bcd2,r18
pop r18
pop r17
pop r16
ret

bcd_segmentos:
push r16
push r17

ldi xh,high(bcd1)
ldi xl,low(bcd1)
ldi yh,high(seg1)
ldi yl,low(seg1)

ldi r17,2
siguiente:
ldi zh,high(tabla<<1)
ldi zl,low(tabla<<1)
ld r16,x+
add zl,r16
clr r16
adc zh,r16
lpm r16,z
st y+,r16
dec r17
brne siguiente

pop r17
pop r16
ret
TABLA:
.DB 0b11000000, 0b11111001 ; C�DIGOS 0 y 1
.DB 0b10100100, 0b10110000 ; C�DIGOS 2 y 3
.DB 0b10011001, 0b10010010 ; C�DIGOS 4 y 5
.DB 0b10000010, 0b11111000 ; C�DIGOS 6 y 7
.DB 0b10000000, 0b10010000 ; C�DIGOS 8 y 9
.DB 0b10001000, 0b10000011 ; C�DIGOS A y B
.DB 0b11000110, 0b10100001 ; C�DIGOS C y D
.DB 0b10000110, 0b10001110 ; C�DIGOS E y F

Você também pode gostar