.include"m32def.inc"
.org 0x000
rjmp reset
reset:
ldi r16, HIGH(REMEND) La pila de nuevo porque usaremos retardo
out SPH, r16
ldi r16, LOW(RAMEND)
out SPL, r16
config:
ser r20
out DDRA, r20
inicio:
clr r20
ldi r20, 64 ;64 en la tabla ascii es @ puesto que esto se
;incrementara empieza mostrando la letra A
incremento:
inc r20
cpi r20, 91
breq siguiente
out PORTA, r20 ; aqui muestra la A si no es igual a " [ " no saltara
call retardo ; a siguiente por tanto queda en el bucle
rjmp incremento
siguiente:
clr r20
ldi r20, 96 ;empieza un caracter antes de la letra a
incremento2:
inc r20
cpi r20, 123
breq inicio
out PORTA, r20 ; muestra hasta la z
call retaro
rjmp incremento2
retardo:
ldi r22, 5
ret2:
dec r22
cpi r22, 0
breq fin
car1:
ldi r23, 255
ret1:
dec r23
cpi r23, 0
breq ret2
car0:
ldi r24, 255
ret0:
dec r24
cpi r24, 0
breq ret1
rjmp ret0
fin:
ret
Como pueden ver este programa muestra ciclicamente las letras del abecedario en ascii empezando por mayusculas y terminando obiamente con minusculas.
Pero es utulizando breq.
Ahora haremos lo mismo pero con "brne" (Salta si no es igual)
El siguiente programa lo hare sin el retardo ni el stack, se los dejo de tarea para que le hechen coco...xD
.include "m32def.inc"
.org 0x00
rjmp config
config:
ser r16
out DDRA, r16
minusculas:
ldi r17, 96
inicio:
inc r17
out PORTA, r17
cpi r17, 122
brne inicio
rjmp mayusculas
mayusculas:
ldi r17, 64
ciclo:
inc r17
out PORTA, r17
cpi r17, 90
brne ciclo
rjmp minusculas
En el programa anterios creo que no hace falta ni comentarios se sobre entiende muy bien si vez una tabla ascii sobre todo.
0 comentarios:
Publicar un comentario en la entrada