;********************************************************************************************************
;*****PROGRAMA QUE SUMA UNOS DATOS Y LOS ALMACENA EN LA MEMORIA *****
;********************************************************************************************************
.include "m32def.inc"
.def temp=r16
.def suma=r17
;Por el momento haremos un programa muy básico para demostrar algunas de las funciones del micro
RESET:
ldi temp, low(RAMEND)
out SPL, temp
ldi temp, high(RAMEND) ;configuración del Stack Pointer para uso de subrutinas
out SPH, temp
ser temp ;con esta instrucción se carga el número 255 a r16
out DDRA, temp ;confiduración del puerto Acomo salida
clr temp ;instrucción que borra el contenido de r16
rjmp INICIO
;***** SECCION DE SUBRUTINAS *****
; =============================
; delay loop generator
; 100000 cycles:
; -----------------------------
; delaying 99990 cycles:
RETARDO_A:
ldi R17, $A5
WGLOOP0:
ldi R18, $C9
WGLOOP1:
dec R18
brne WGLOOP1
dec R17
brne WGLOOP0
; -----------------------------
; delaying 9 cycles:
ldi R17, $03
WGLOOP2:
dec R17
brne WGLOOP2
; -----------------------------
; delaying 1 cycle:
nop
ret
;***** PROGRAMA PRINCIPAL *****
INICIO:
inc temp
sts 0x60, temp
lds temp, 0x60
add suma, temp
sts 0x61, suma
lds suma, 0x61
rcall RETARDO_L ;instruccion que hace un llamado a subrutina
out PORTA, suma ;visualización del resultado en el puerto A
rjmp INICIO
;NOTA:;El stack pointer es un puntero de pila que se utiliza para almacenar datos temporales, para almacenar;variables locales y almacenar el regreso de direcciones despues de llamados a subrutinas, así como;tambien despues de ejecutarse las interrupciones.;Para mas explicación ver la hoja de datos del ATMEGA32 en su sección del stack pointer
;NOTA:
;ir a la página principal para descargar el software generador de retardos para las siguientes aplicadiones...
sábado, 4 de octubre de 2008
Suscribirse a:
Enviar comentarios (Atom)
No hay comentarios:
Publicar un comentario