Documentos de Académico
Documentos de Profesional
Documentos de Cultura
;
; export symbols
;
XDEF _Startup
ABSENTRY _Startup
;
; variable/data section
;
ORG RAMStart ; Insert your data definition here
ExampleVar: DS.B 1
unidades: equ $A0
decenas: equ $A1
unidadesbcd: equ $A2
decenasbcd: equ $A3
limite: equ $A4
;
; code section
;
ORG ROMStart
_Startup:
LDHX #RAMEnd+1 ; initialize the stack pointer
TXS
CLI ; enable interrupts
PROG_PORTS:
MOV #$FF,PTBDD ;puerto B salida (DECENAS)
MOV #$FF,PTCDD ;puerto C salida (UNIDADES)
MOV #$00,PTAD; habilita el puerto A como registro de datos
MOV #$00,PTADD; A es la entrada para ascender o descender
;---------------------------------------------------------------------------------
main:
BSR CUENTA_UNIDADES2
BSR BUSQUEDA_UNIDADES
LDA unidadesbcd
STA PTCD
BSR BUSQUEDA_DECENAS
LDA decenasbcd
STA PTBD
BSR RETARDO
BRA main
;-------------------------------------------
CUENTA_DECENAS2:
MOV #$09, unidades
DEC decenas
LDA decenas
CMP #$FFFFFFFFFFFFFFFF
BEQ REINICIO
RTS
REINICIO:
MOV #$09,unidades
MOV #$09,unidadesbcd
MOV #$09,decenas
MOV #$09,decenasbcd
RTS
;--------------------------------------------------------
CONVERSION_BCD1:
CPX limite
BEQ SALIDA_UNIDADES
INCX
BRA CONVERSION_BCD1
SALIDA_UNIDADES
LDA ,X
STA unidadesbcd
RTS
;--------------------------------------------------------
CONVERSION_BCD2:
CPX limite
BEQ SALIDA_DECENAS
INCX
BRA CONVERSION_BCD2
SALIDA_DECENAS
LDA ,X
STA decenasbcd
RTS
;---------------------
;SECUENCIA DE RETARDO
;---------------------
RETARDO:
CLR $A5
CLR $A6
MOV #2,$A7 ; Podemos acelerar el proceso de conteo
cambiando "MOV #[numero]"
VOLVER:
DBNZ $A5,VOLVER
feed_watchdog
DBNZ $A6,VOLVER
feed_watchdog
DBNZ $A7,VOLVER
feed_watchdog
RTS
;**********************
;* spurious - Spurious Interrupt Service Routine. *
;* (unwanted interrupt) *
;**********************
;**********************
;* Interrupt Vectors *
;**********************
ORG $FFFA
DC.W spurious ;
DC.W spurious ; SWI
DC.W _Startup ; Reset