Ejemplo Básico Assembler: Prender y Apagar Led
De Wikitronica
Revisión del 18:02 10 may 2013 de Mrojas (Discusión | contribuciones) (Página creada con «Categoría: EC2721 - Arquitectura del Computador 1 Categoría: EC3731 - Arquitectura del Computador 2 Categoría:MC9S08QE128 <syntaxhighlight lang="asm"> ;*****...»)
;********************************************************************
;* Código ejemplo para escribir programas en assembler. *
;* Programa sencillo que inicializa puertos de entrada y salida, *
;* crea una variable que aumenta cada vez que se presiona un botón, *
;* el resultado se muestra por los leds *
;********************************************************************
; -------------------------------------------------------------------
; Include files
INCLUDE 'derivative.inc'
;
; export symbols
;
XDEF Inicio
ABSENTRY Inicio
; -------------------------------------------------------------------
; Definición de variables (ds: byte por defecto)
ORG Z_RAMStart
contador: DS.B 1 ; variable que guarda la cuenta
;
; code section
;
ORG ROMStart
Inicio:
LDHX #RAMEnd+1 ; initialize the stack pointer
TXS
;--------------------------------------------------------
;Configuracion de los pines del Demoqe128
BSR Configurar_GPIO
;--------------------------------------------------------
;Inicializo contador
CLR contador
mainLoop:
BRCLR 5,PTAD,Incremento ; encuesto pin para
; saber si fue presionado
feed_watchdog
BRA mainLoop ; Halt
Incremento:
lda contador ; incremento contador
inca
sta contador
lda #$3F
and contador
coma
sta PTCD
lda #$C0
and contador
coma
sta PTED
bra mainLoop
;**************************************************************
; Subrutinas de Configuracion
;**************************************************************
Configurar_GPIO: ;;General Port Input/Output
LDA #$3F
STA PTCDD ;;6Bits (LSB) PTC - habilitados como salida
LDA #$C0
STA PTEDD ;;2Bits (MSB) PTE - habilitados como salida
LDA #$3F
STA PTCD ;;Cero a la salida (logica negada)
LDA #$C0
STA PTED ;;Cero a la salida (logica negada)
LDA #$00
STA PTADD ;;Puerto A - habilitado como entrada
LDA #$FF
STA PTAPE
RTS
;**************************************************************
;* spurious - Spurious Interrupt Service Routine. *
;* (unwanted interrupt) *
;**************************************************************
spurious: ; placed here so that security value
NOP ; does not change all the time.
RTI
;**************************************************************
;* Interrupt Vectors *
;**************************************************************
ORG Virq
DC.W spurious ;
DC.W spurious ; SWI
DC.W Inicio ; Reset