Está en la página 1de 4

;***********************

;* This stationery serves as the framework for a user application. *


;* For a more comprehensive program that demonstrates the more *
;* advanced functionality of this processor, please see the *
;* demonstration applications, located in the examples *
;* subdirectory of the "Freescale CodeWarrior for HC08" program *
;* directory. *
;***********************

; Include derivative-specific definitions


INCLUDE 'derivative.inc'

;
; 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

MOV #$09, unidades


MOV #$09, decenas
MOV #$09, unidadesbcd
MOV #$09, decenasbcd
MOV #$09, limite

;---------------------------------------------------------------------------------

;SE ENVIAN LOS SIGUIENTES CODIGOS DE ACOMODO DE PINES A LAS TERMINALES B Y C


;ESTO PARA NO TENER MAYOR PROBLEMA AL MOMENTO DE LA IMPLEMENTACION
;---------------------------------------------------------------------------------
;PUERTO B
;--------------------------------------
MOV #%01111110,$80 ;ajuste del 0
MOV #%011000,$81 ;ajuste del 1
MOV #%10110110,$82 ;ajuste del 2
MOV #%10111100,$83 ;ajuste del 3
MOV #%11011000,$84 ;ajuste del 4
MOV #%11101100,$85 ;ajuste del 5
MOV #%11101110,$86 ;ajuste del 6
MOV #%111000,$87 ;ajuste del 7
MOV #%11111110,$88 ;ajuste del 8
MOV #%11111000,$89 ;ajuste del 9
;--------------------------------------
;PUERTO C
;--------------------------------------
MOV #%10011111,$90 ;ajuste del 0
MOV #%000110,$91 ;ajuste del 1
MOV #%10101101,$92 ;ajuste del 2
MOV #%101111,$93 ;ajuste del 3
MOV #%110110,$94 ;ajuste del 4
MOV #%111011,$95 ;ajuste del 5
MOV #%10111011,$96 ;ajuste del 6
MOV #%001110,$97 ;ajuste del 7
MOV #%10111111,$98 ;ajuste del 8
MOV #%111110,$99 ;ajuste del 9
;--------------------------------------

main:
BSR CUENTA_UNIDADES2
BSR BUSQUEDA_UNIDADES
LDA unidadesbcd
STA PTCD
BSR BUSQUEDA_DECENAS
LDA decenasbcd
STA PTBD
BSR RETARDO

BRA main

;-------------------------------------------

; ESTA SUBRUTINA LLEVA A CABO LA CUENTA 99-0


;-------------------------------------------
CUENTA_UNIDADES2:
DEC unidades
LDA unidades
CMP #$00
BEQ CUENTA_DECENAS2
RTS

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
;--------------------------------------------------------

;ESTA SUBRUTINA REALIZA LA CONVERSION BCD DE LAS UNIDADES


;--------------------------------------------------------
BUSQUEDA_UNIDADES:
LDHX #$90
MOV #$90,limite
LDA unidades
ADD limite
STA limite

CONVERSION_BCD1:
CPX limite
BEQ SALIDA_UNIDADES
INCX
BRA CONVERSION_BCD1

SALIDA_UNIDADES
LDA ,X
STA unidadesbcd
RTS

;--------------------------------------------------------

;ESTA SUBRUTINA REALIZA LA CONVERSION BCD DE LAS DECENAS


;--------------------------------------------------------
BUSQUEDA_DECENAS:
LDHX #$80
MOV #$80,limite
LDA decenas
ADD limite
STA limite

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) *
;**********************

spurious: ; placed here so that security value


NOP ; does not change all the time.
RTI

;**********************
;* Interrupt Vectors *
;**********************

ORG $FFFA

DC.W spurious ;
DC.W spurious ; SWI
DC.W _Startup ; Reset

También podría gustarte