Diferencia entre revisiones de «Ejemplo Básico Assembler: Prender y Apagar Led»
De Wikitronica
(Página creada con «Categoría: EC2721 - Arquitectura del Computador 1 Categoría: EC3731 - Arquitectura del Computador 2 Categoría:MC9S08QE128 <syntaxhighlight lang="asm"> ;*****...») |
|||
Línea 20: | Línea 20: | ||
; ------------------------------------------------------------------- | ; ------------------------------------------------------------------- | ||
− | ; Definición de variables | + | ; Definición de variables |
ORG Z_RAMStart | ORG Z_RAMStart | ||
− | contador: DS.B 1 | + | contador: DS.B 1 ; variable que guarda la cuenta |
; | ; | ||
− | ; | + | ; El codigo comienza aqui |
; | ; | ||
ORG ROMStart | ORG ROMStart | ||
Inicio: | Inicio: | ||
− | LDHX #RAMEnd+1 ; | + | LDHX #RAMEnd+1 ; inicializa el stack pointer |
TXS | TXS | ||
;-------------------------------------------------------- | ;-------------------------------------------------------- | ||
− | ;Configuracion de los pines del Demoqe128 | + | ; Configuracion de los pines del Demoqe128 |
BSR Configurar_GPIO | BSR Configurar_GPIO | ||
Línea 39: | Línea 39: | ||
;-------------------------------------------------------- | ;-------------------------------------------------------- | ||
− | ;Inicializo contador | + | ; Inicializo contador |
CLR contador | CLR contador | ||
mainLoop: | mainLoop: | ||
− | |||
− | |||
− | |||
BRCLR 5,PTAD,Incremento ; encuesto pin para | BRCLR 5,PTAD,Incremento ; encuesto pin para | ||
− | + | ;..saber si fue presionado | |
− | ; saber si fue presionado | + | |
− | + | ||
feed_watchdog | feed_watchdog | ||
+ | BRA mainLoop ; Halt | ||
− | |||
Incremento: | Incremento: | ||
+ | ; Incremento contador | ||
+ | INC contador | ||
+ | ; Paso contador a los puertos/leds PTC y PTE | ||
+ | LDA #%00111111 ; mascara para contador | ||
+ | AND contador ;..el resultado queda en Acc | ||
+ | COMA ; compl-1, los leds trabajan | ||
+ | ;..con logica negada | ||
+ | STA PTCD | ||
+ | lda #%11000000 | ||
+ | AND contador ;... | ||
+ | COMA ;... | ||
+ | STA PTED | ||
+ | BRA mainLoop | ||
− | + | ;******************************************************************** | |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | ;************************************************************** | + | |
; Subrutinas de Configuracion | ; Subrutinas de Configuracion | ||
− | ;************************************************************** | + | ;******************************************************************** |
− | Configurar_GPIO: | + | Configurar_GPIO: ; General Port Input/Output |
− | LDA # | + | LDA #%00111111 |
− | STA PTCDD | + | STA PTCDD ; 6Bits(LSB) PTC - habilitado como Salida |
− | LDA # | + | LDA #%11000000 |
− | STA PTEDD | + | STA PTEDD ; 2Bits(MSB) PTE - habilitado como salida |
− | LDA # | + | LDA #%00111111 |
− | STA PTCD | + | STA PTCD ; Inicializo como cero (log. negada) |
− | LDA # | + | LDA #%11000000 |
− | STA PTED | + | STA PTED ; Inicializo como cero (log. negada) |
− | LDA # | + | LDA #%00000000 |
− | STA PTADD | + | STA PTADD ; Puerto A - habilitado como entrada |
− | LDA # | + | LDA #%11111111 ; Pull Up enable para que el boton |
− | STA PTAPE | + | STA PTAPE ;..reconozca la entrada |
RTS | RTS | ||
− | |||
;************************************************************** | ;************************************************************** | ||
Línea 108: | Línea 100: | ||
DC.W spurious ; | DC.W spurious ; | ||
DC.W spurious ; SWI | DC.W spurious ; SWI | ||
− | DC.W Inicio | + | DC.W Inicio ; Reset |
</syntaxhighlight> | </syntaxhighlight> |
Revisión del 18:16 10 may 2013
;********************************************************************
;* 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
ORG Z_RAMStart
contador: DS.B 1 ; variable que guarda la cuenta
;
; El codigo comienza aqui
;
ORG ROMStart
Inicio:
LDHX #RAMEnd+1 ; inicializa el 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:
; Incremento contador
INC contador
; Paso contador a los puertos/leds PTC y PTE
LDA #%00111111 ; mascara para contador
AND contador ;..el resultado queda en Acc
COMA ; compl-1, los leds trabajan
;..con logica negada
STA PTCD
lda #%11000000
AND contador ;...
COMA ;...
STA PTED
BRA mainLoop
;********************************************************************
; Subrutinas de Configuracion
;********************************************************************
Configurar_GPIO: ; General Port Input/Output
LDA #%00111111
STA PTCDD ; 6Bits(LSB) PTC - habilitado como Salida
LDA #%11000000
STA PTEDD ; 2Bits(MSB) PTE - habilitado como salida
LDA #%00111111
STA PTCD ; Inicializo como cero (log. negada)
LDA #%11000000
STA PTED ; Inicializo como cero (log. negada)
LDA #%00000000
STA PTADD ; Puerto A - habilitado como entrada
LDA #%11111111 ; Pull Up enable para que el boton
STA PTAPE ;..reconozca la entrada
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