Diferencia entre revisiones de «Ejemplo Básico Assembler: Prender y Apagar Led»

De Wikitronica
Saltar a: navegación, buscar
 
Línea 20: Línea 20:
  
 
; -------------------------------------------------------------------
 
; -------------------------------------------------------------------
; Definición de variables (ds: byte por defecto)
+
; Definición de variables
 
             ORG    Z_RAMStart         
 
             ORG    Z_RAMStart         
contador:  DS.B  1                 ; variable que guarda la cuenta
+
contador:  DS.B  1               ; variable que guarda la cuenta
  
 
;
 
;
; code section
+
; El codigo comienza aqui
 
;
 
;
 
             ORG    ROMStart
 
             ORG    ROMStart
  
 
Inicio:
 
Inicio:
             LDHX  #RAMEnd+1        ; initialize the stack pointer
+
             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
  
            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
  
        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
 
;            Subrutinas de Configuracion
;**************************************************************
+
;********************************************************************
  
Configurar_GPIO:                   ;;General Port Input/Output
+
Configurar_GPIO:           ; General Port Input/Output
             LDA #$3F
+
             LDA #%00111111
             STA PTCDD               ;;6Bits (LSB) PTC - habilitados como salida
+
             STA PTCDD     ; 6Bits(LSB) PTC - habilitado  como Salida
             LDA #$C0
+
             LDA #%11000000
             STA PTEDD               ;;2Bits (MSB) PTE - habilitados como salida
+
             STA PTEDD     ; 2Bits(MSB) PTE - habilitado  como salida
 
                          
 
                          
             LDA #$3F
+
             LDA #%00111111
             STA PTCD               ;;Cero a la salida (logica negada)
+
             STA PTCD       ; Inicializo como cero (log. negada)
             LDA #$C0
+
             LDA #%11000000
             STA PTED               ;;Cero a la salida (logica negada)        
+
             STA PTED       ; Inicializo como cero (log. negada)
 
              
 
              
             LDA #$00                
+
             LDA #%00000000                
             STA PTADD               ;;Puerto A - habilitado como entrada
+
             STA PTADD     ; Puerto A - habilitado como entrada
             LDA #$FF
+
             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             ; Reset
+
             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

Contributors

Mrojas, Racuna