Diferencia entre revisiones de «Ejemplo Timer TPM por encuesta»
De Wikitronica
(Página creada con «<syntaxhighlight lang="asm"> ;******************************************************************* ;* Ejemplo de manejo del Timer TPM utilizando encuesta. ;* Se configura el...») |
(Sin diferencias)
|
Revisión del 19:51 17 mar 2013
;*******************************************************************
;* Ejemplo de manejo del Timer TPM utilizando encuesta.
;* Se configura el timer para que desborde el contador cada 2s
;* Cada vez que se reinicia el contador se niegan los LEDS del DEMOQE
;*******************************************************************
; 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
;
; code section
;
ORG ROMStart
_Startup:
LDHX #RAMEnd+1 ; initialize the stack pointer
TXS
;Configuracion de los pines del Demoqe128
BSR Configurar_GPIO
;Configuramos el TPM
BSR Configurar_TPM
CLI ; enable interrupts
mainLoop:
;Comparamos el contador (16bits)
;Verificamos si llego al valor de interes
LDHX #$FFFF
CPHX TPM1CNT
BNE Fin
;------------------------------------------
;Negamos los pines (Leds Logica negada)
LDA PTCD
COMA
;------------------------------------------
;Mascara de bits para pines inferiores PTC
AND #%00111111
STA PTCD
LDA PTED
COMA
;------------------------------------------
;Mascara de bits para pines superiores PTE
AND #%11000000
STA PTED
;------------------------------------------
;Reiniciamos contador
CLRA
STA TPM1CNT
Fin:
NOP
feed_watchdog
BRA mainLoop
;**************************************************************
; Subrutinas de Configuracion *
;**************************************************************
Configurar_GPIO:
; Configuración de los leds del DEMOQE como salida
; Los Leds tienen lógica negada
;Parte inferior de Puerto C (0:5)
LDA #$3F
STA PTCDD
STA PTCD
;------------------------------------------
;Parte superior de Puerto D (6:7)
LDA #$C0
STA PTEDD
STA PTED
RTS
Configurar_TPM:
;Configuracion del timer TPM1
;(Contador SIN interrupciones al hacer overflow)
LDA #%00001111
; TPM1SC: TOF=0,TOIE=0,CPWMS=0,CLKSB=0,CLKSA=1,PS2=1,PS1=1,PS0=1
;Probar diferentes valores de PS2,PS1,PS0
STA TPM1SC
;------------------------------------------
;Valor maximo de contador (Probar diferentes valores)
LDHX #$FFFF
STHX TPM1MOD
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
<syntaxhighlight>