Programar el micro atmega8535 en ensamblador

Alguien que me pueda ayudar a programar en ensamblador el micro ATMEGA8535, lo que me estan pidiendo en la escuela es hacer un simple Contador utilizando 2 display de 7 segmentos, y que salga por el puertoA, me pidieron que cuente hasta el 99 y del 99 a 0, el avance que tengo es que cuenta al 99 pero no e podido programarle para que decremente a 0.
Este es el codigo y estoy programando en el AVRstudio
Código:
.include "m8535def.inc"

.org 0X00
.org 0X025

	ldi     R16,0x02
	out    SPH,r16 
	ldi     R16,0x5F
	out    SPL,R16

	ldi     R16,0XFF
	out    DDRA,R16
	ldi     R16,0XFF
	out    PORTA,R16

	
gis:	MOV	R20,R16
	OR	R20,R21
	OUT	PORTA,R20
	inc	r16
	rcall	delay
	cpi	r16,10		
	brne	gis			
	eor	r16,r16		

		
	LDI	R22,0X10
	ADD	R21,R22
	CPI	R21,160
	BRNE	GIS			
	EOR	R21,R21
	rjmp         gis


delay:	ldi r17,0X05
   a3:	ldi r18,0X5E
   a2:	ldi r19,0XC4
   a1:	dec r19
		brne a1
		dec r18
		brne a2
		dec r17
		brne a3
		nop
		ret
Si alguien puede hacerme el favor de hacerme el paro con el codigo
 
bueno me tome el trabajo ...

creo ...

gis2: MOV R20,R16
OR R20,R21
OUT PORTA,R20
dec r16
rcall delay
cpi r16,0
brne gis2
eor r16,r16

esto seria para el primer digto ...

veo que tratas de hacer manejar el incremento en un solo registro ...

te recomento que uses un registro independiente para cada digito

y luego para sacarlo lo combinas con una instruccion NSA (Nibble Swap)
no conosco bien el instrution set de ese CPU pero la mayoria tienen esa instruccion
si definitivamente no lo tiene tendrias que hacer R Shift 4 veces ...

una instruccion NSA lo que hace es intercambiar los 4 bits inferiores (LSB) por los 4 superiores..

entoces haces ...

unidad equ R16
decena equ R17

loop1
inc unidad
cpi unidad,10
brne loop1
eor unidad,unidad
inc decena
cpi decena,10
brne loop1
eor unidad,unidad
eor decena,decena
....
para unir en un solo byte mostrar

NSA decena
and decena,0xF0
or unidad,decena (unidad=unidad or decena)
out unidad, porta
and decena,0x0F


bueno espero que te sirva,saludos
 
como uso registros de 16bits?
Necesito hacer operaciones con registros de 16Bits
y Como hago una red de 2 micros esclavos y 1 mirco master? y como conecto el master a una PC? Alguien puede ayudarme?????
 
Atrás
Arriba