Blog Archive
Con la tecnología de Blogger.
TIMERs
Temporizadores
Tipos de Temporizadores:
TIMER 1 (Tipo A):
Ejemplo1: dsPIC30f2010_Timerled.s
.equ __30F2010, 1
.include "p30f2010.inc"
config __FOSC, FRC ;Trabajar con el Osc Interno
config __FWDT, WDT_OFF ;deshabilitar el Perro guardian
config __FBORPOR, MCLR_EN
.equ Fcy, #7370000 ;Frecuencia del Osc.Interno
.equiv LEDS, 0x0007
;.................................................................................................................
;.................................................................................................................
.global __reset ;The label for the first line of code.
.text ;Start of Code section
__reset:
mov #__SP_init,w15 ;Initalize the Stack Pointer
mov #__SPLIM_init,w0
mov w0,SPLIM ;Initialize the Stack Pointer Limit Register
nop ;Add NOP to follow SPLIM initialization
;-----------------------------------------------------------------------------------------------------------------
;Conficuarcion de Pines
mov #0x00,w0 ;Port E all como salida Digital
mov w0,TRISE
mov #LEDS,w0 ;Initialize LED pin data to off state
mov w0,LATE
;-----------------------------------------------------------------------------------------------------------------
;Configuracion del Timer para un delay de 1s
clr T1CON ;Turn off Timer1 by clearing control register
clr TMR1 ;Start Timer1 at zero
mov #Fcy/1024,w0 ;Get period register value for 1/2 second
mov w0,PR1 ;Load Timer1 period register
mov #0x8030,w0 ;Get Timer1 settings (1:256 prescaler)
mov w0,T1CON ;Load Timer1 settings into control register
nop
;----------------------------------------------------------------------------------------------------------------- buclePrincipal:
btss IFS0,#T1IF ;Check if Timer1 interrupt flag is set
bra buclePrincipal ;Loop back until set
bclr IFS0,#T1IF ;Clear Timer1 interrupt flag
com LATE
bra buclePrincipal ;Retorno al Bucle
;-----------------------------------------------------------------------------------------------------------------
.end ;End del codigo .asm
Una de las labores más habituales en los
programas de control de dispositivos
suele ser
determinar intervalos concretos de tiempo, y recibe el nombre de
temporizador (TIMER)
el elemento encargado de realizar esta función.También suele ser frecuente contar los
impulsos que se producen en el exterior del sistema,
y el elemento destinado a este fin se denomina contador.
Los TIMERS o Temporizadores son módulos
integrados en el controlador que permiten realizar cuentas tanto de eventos
internos como externos.
Los dsPIC presenta tres tipos de temporizadores; los de TIPO A ,TIPO B y EL TIPO C.
TIMER 1 (Tipo A):
Ejemplo1: dsPIC30f2010_Timerled.s
/****************************************************************/
// Realizar un programa que parpadear(en un periodo de un segundo), algunos
// pines del puerto E, utilizando para ello el cristal Interno y el modulo del
// timer 1 del dsPIC.
/****************************************************************/// pines del puerto E, utilizando para ello el cristal Interno y el modulo del
// timer 1 del dsPIC.
.equ __30F2010, 1
.include "p30f2010.inc"
config __FOSC, FRC ;Trabajar con el Osc Interno
config __FWDT, WDT_OFF ;deshabilitar el Perro guardian
config __FBORPOR, MCLR_EN
.equ Fcy, #7370000 ;Frecuencia del Osc.Interno
.equiv LEDS, 0x0007
;.................................................................................................................
;.................................................................................................................
.global __reset ;The label for the first line of code.
.text ;Start of Code section
__reset:
mov #__SP_init,w15 ;Initalize the Stack Pointer
mov #__SPLIM_init,w0
mov w0,SPLIM ;Initialize the Stack Pointer Limit Register
nop ;Add NOP to follow SPLIM initialization
;-----------------------------------------------------------------------------------------------------------------
;Conficuarcion de Pines
mov #0x00,w0 ;Port E all como salida Digital
mov w0,TRISE
mov #LEDS,w0 ;Initialize LED pin data to off state
mov w0,LATE
;-----------------------------------------------------------------------------------------------------------------
;Configuracion del Timer para un delay de 1s
clr T1CON ;Turn off Timer1 by clearing control register
clr TMR1 ;Start Timer1 at zero
mov #Fcy/1024,w0 ;Get period register value for 1/2 second
mov w0,PR1 ;Load Timer1 period register
mov #0x8030,w0 ;Get Timer1 settings (1:256 prescaler)
mov w0,T1CON ;Load Timer1 settings into control register
nop
;----------------------------------------------------------------------------------------------------------------- buclePrincipal:
btss IFS0,#T1IF ;Check if Timer1 interrupt flag is set
bra buclePrincipal ;Loop back until set
bclr IFS0,#T1IF ;Clear Timer1 interrupt flag
com LATE
bra buclePrincipal ;Retorno al Bucle
;-----------------------------------------------------------------------------------------------------------------
.end ;End del codigo .asm
Suscribirse a:
Entradas (Atom)