You are on page 1of 3

Encendido y apagado led parpadeo __reset:

.title "parpadeo de led goto main


.equ __30F4013,1 .org 100
.include "p30F40013.inc" main:
;Configuration bits: ; mov #_SP_init,W15 ;inicializa el SP
;.............................................................................. ; mov #_SPLIM_init,W0
config __FOSC, CSW_FSCM_OFF & XT_PLL4 ; mov W0,SPLIM
;use cristal oscilador con el 4x PLL nop
config __FWDT, WDT_OFF ;*******************************configuration de puertos**************
;Desabilitado Watchdog Timer mov #0x0080,W0
config __FBORPOR, PBOR_ON & BORV_27 & PWRT_16 & MCLR_EN mov W0,TRISB
;Set Brown-out Reset voltage and ;***********************************************
;and set Power-up Timer to 16msecs bucle: ; verifica el estado del interruptor abierto o cerrado?
config __FGS, CODE_PROT_OFF ;Desabilitado protecion de codigo BTSC PORTB,#07 ; El BIT 7 chequear interruptor salta si es cero o cerrado
bra bucle
.text call xx
.equ cont, 0x0810 call yy
.global __reset bra bucle
__reset: goto main xx:
.org 100 mov #0x0001,W1
main: mov #__SP_init,W15 ;inicializa el SP mov W1,PORTB
mov #__SPLIM_init,W0 call delay
mov W0,SPLIM return
nop yy:
bclr TRISD,#00 ;RD0 salida mov #0x0002,W1
bclr TRISD,#01 ;RD1 salida mov W1,PORTB
nop call delay
bset PORTD,#00 return
bclr PORTD,#01 delay: ;Subrutina de Retardo en dos lazos
loop: btg PORTD,#00 mov # 0xffff ,W2
call rtdo mov W2,cont
btg PORTD,#01 YY: mov # 0x00ff, W1
call rtdo mov W1,cont1
bra loop XX: dec cont1
rtdo: mov #0xFFFF,W0 bra NZ,XX
mov W0,cont dec cont
resta: dec cont bra NZ,YY
bra NZ,resta return
return .end
.end Realizar un juego de luces cuya secuncia dependera de dos
Encendido apagado de led interruptores conectados al port D
.include “ p30f4013.inc” Si el valor leido es 00001 la secuencia de luces del portB sera 8 led
;Declaración de variables y subprocesos parpadeantes
.global __reset Si el valor leido es 00010 los leds realizaran un recorrido de derecha a
.global _main Izuierda
.global _delay .global _main
.global _delay1 .global _delay
.section .global _secuencia1
.text .global _secuencia2
;*************Programa principal ***************** .global _loop
_main: .text
;Almacenamiento de valores de inicialización en W0,W1,W2,W3 ;programa principal
mov #0x0000,W0; _main:
mov #0x0001,W1;
mov #0x0000,W2; mov #0x0032,w3
;Repeticiones x1000 para la creación de los retardos mov #0x1100,w0
;0x0032h = 52d mov w0,TRISB
mov #0x0032,W3;
mov W0,TRISB ;Configuración el puerto B como salida
mov W1,LATB ; Encendido del puerto RB0 call _loop
_delay: ;Subrutina de Retardo en alto _loop:
dec W3,W4 xx:
mov W4,W3 btss PORTB,#8
repeat #0x03E8 ;Repetición mil veces bra xx1
nop bra _secuencia2
CP0 W4 xx1:
bra NZ, _delay ;Bucle en alto btsc PORTB,#9
mov #0x0032,W3 ;Recarga del número de repeticiones x1000 bra _secuencia1
mov W2,LATB ; Apagado RB0 ;secuencia2
;Subrutina de Retardo en bajo
_delay1: dec W3,W4 _secuencia2:
mov w4,w3 call _delay
repeat #0x3E8 ;Repetición mil veces mov #0x0000,w0
nop mov w0,LATB
CP0 W4 call _delay
bra NZ, _delay1 ;Bucle principal call _delay
bra _main ;Bucle lazo repetitivo principal mov #0x00FF,w0
;EOF mov w0,LATB
.end call _delay
MOTOR PASO A PASO EN DC return
.equ __30f4013,1
.include "p30f4013.inc" ;secuencia 1
; Configuration bits: _secuencia1:
;.............................................................................. call _delay
config __FOSC,CSW_FSCM_OFF&XT_PLL4 ;use cristal oscilador con el 4x PLL mov #0x0001,w0
config __FWDT,WDT_OFF ;Desabilitado Watchdog Timer mov w0,LATB
config __FBORPOR,PBOR_ON&MCLR_EN call _delay
;Set Brown-out Reset voltage and mov #0x0002,w0
;and set Power-up Timer to 16msecs mov w0,LATB
config __FGS,CODE_PROT_OFF ;Desabilitado protecion de codigo call _delay
; Declaración de variables y subprocesos mov #0x0004,w0
.equ cont,#0x0810 mov w0,LATB
.equ cont1,#0x0812 call _Delay
.global xx mov #0x0008,w0
.global yy mov w0,LATB
.global __reset call _delay
.text mov #0x0010,w0
;*************Programa principal ***************** mov w0,LATB
call _delay ; como colector abierto.
mov #0x0020,w0 ; Configuracion del Timer
mov w0,LATB MOV #0x8010,W0 ;T1ON=1 y Prescaler 1:8
call _delay MOV W0,T1CON
mov #0x0040,w0 MOV #0x383B,W0 ;Cargo valor en PR1
mov w0,LATB MOV W0,PR1
call _delay BCLR IFS0,#T1IF ;Borro Flag
mov #0x0080,w0
mov w0,LATB ;..................................
call _delay
return
;codigo para el tiempo
_delay: ............................................
bucle: ;Programa Principal
dec w3,w4 ;..............................................................................
mov w4,w3
repeat #0x000F MainLoop:
nop BTSS IFS0,#T1IF
BRA MainLoop
cp0 w3 BCLR IFS0,#T1IF ;Borro Flag
bra nz,bucle BTG LATB,#0 ; Alterno el valor de RB0
return BRA MainLoop ; Inicio nuevamente
.end
;----------------- Fin del codigo ---------------------------------------------
Realizar el programa para generar una onda cuadrada de 1KHZ en el .end
PIN RB0 cuando se cierra un interruptor ubicado en el PIN RD0, frecuencia
del cristal es de 4MHZ,debe utilizar el TIMER 1 se pide Realizar un programa que parpadear (en un periodo de un segundo), el pin RB0 del puerto B debe
a) Realizar los calculos que debe hacer para obtener el valor a cargar generar una onda cuadrada , utilizando el modulo del timer1 del dsPIC
en el PR1, utilice un prescaler adecuado
1 .equ __30F4013, 1
1 KHZ .include "p30f4013.inc"
=1 config __FOSC, FRC ;Trabajar con el Osc Interno
4MHZ config __FWDT, WDT_OFF ;deshabilitar el Perro guardian
∗256∗(PR−0) config __FBORPOR, MCLR_EN
.equ Fcy, #7370000 ;Frecuencia del Osc.Interno
PR=15=0 x000 A
.equiv LEDS, 0x00FF
.global __main ;The label for the first line of code.
.text ;Start of Code section
b) .global _main
__main:
.global _delay
mov #__SP_init,w15 ;Initalize the Stack Pointer
.global _secuencia1
mov #__SPLIM_init,w0
.global _secuencia2
mov w0,SPLIM ;Initialize the Stack Pointer Limit Register
.global _loop
nop ;Add NOP to follow SPLIM initialization
.text
uar
;programa principal
;Configuración de Pines
_main:
mov #0x00,w0 ;Puerto B como salida Digital
mov w0,TRISB
mov #0x0000,w0
mov #LEDS,w0 ;led apagado
mov w0,TRISB
mov w0,LATB
mov #0x0001,w2
;------------------------------------------------------------------------------------------
mov w2,LATB
;Configuración del Timer para un delay de 1s
; configuracion del timer 1khz
clr T1CON ;.registro de control del TIMER1
CLR T1CON ;apaga el timer1
clr TMR1 ;Iniciar el timer1 con cero
CLR TMR1 ;empieza el timer1 en cero
mov #Fcy/1024,w0 ; valor a cargar en el PR1
mov #0X000A,W0
mov w0,PR1 ;Load Timer1 period register
mov W0,PR1
mov #0x8030,w0 ;.configurar el TIMER1,Ps=256
mov #0x8030,w0
mov w0,T1CON ;
mov w0,T1CON
nop
nop
bucle:
btss IFS0,#T1IF ;testea el bit TIF salta si es uno
bucle:
bra bucle ;Salta a bucle
btss IFS0,#T1IF ;chequeamos timer1 interruptor
bclr IFS0,#T1IF ;poner a cero flag TIF
bra bucle
com LATB ;cambia de alto a bajo o viciversa
bclr IFS0,#T1IF
bra bucle ;Retorno al Bucle
com LATB ;cambia de alto a bajo o viceversa
.end
bra bucle
.end
.equ __33FJ16MC304, 1
.include "p33FJ16MC304.inc"
Realizar la generación de una onda cuadrada de 1sedg de periodo, con un cristal de 4MHZ y
.global _main
mostrarlo en el pin RB0
.text
_main:
; Declaraciones Globales:
mov #0x0FFF,W0
;Aca declaramos las etiquetas que pueden ser u.include "p30f4013.inc"
mov W0,TRISC
mov #0x0000,W2
;..............................................................................
mov W2,TRISB
; Configuracion, Palabras sacadas del include.
MOV #0X03E8,W3
; Primero va el registro/seccion con 2 guion bajo (__FOSC) por ejemplo y luego la
inicio: BTSC PORTC,#3
; configuración del mismo
GOTO ENCENDER
;..............................................................................
GOTO APAGAR
ENCENDER:
config __FOSCSEL, FNOSC_FRCDIV16 & IESO_ON
BSET PORTB,#0
config __FOSC, POSCMD_NONE & OSCIOFNC_ON & FCKSM_CSDCMD
BSET PORTB,#1
config __FWDT, FWDTEN_OFF
CALL _delay
config __FPOR, FPWRT_PWR1 & ALTI2C_OFF & LPOL_OFF & PWMPIN_OFF
BCLR PORTB,#0
config __FGS, GCP_OFF
BCLR PORTB,#1
sadas por otros archivos y
call _delay
;tambien los vectores de interrupcion, los nombres de estos se pueden ver en
;el archivo de linker p33fj32mc202.gld para este caso
BSET PORTB,#4
;..............................................................................
call _delay
BCLR PORTB,#4
.global _main ; De donde viene del startup.

bra inicio
_main:

APAGAR:
;Configuracion de Puertos
BSET PORTB,#0
mov #0x0000, W0
mov W0, LATB ; Limpio los valores de los latch
mov W0, TRISB ; Ponemos todos los pines de salida RB0-15
mov W0, ODCB ; Se configuran los pines para no trabajar como
_delay: repetir: mov #0x0A,w1
dec w3,w4 mov w1,PORTB
mov W4,W3 call delay
REPEAT #0X03E8 mov #0x09,w1
nop mov w1,PORTB
cp0 w4 call delay
bra nz,_delay mov #05,w1
mov #0x03e8,w3 mov w1,PORTB
RETURN call delay
.end mov #06,w1
mov w1,PORTB
equ 30f4013,1 call delay
.include "p30f4013.inc" dec VAR1
; Configuration bits: bra nz,repetir1 ;vueltas
;.............................................................................. antihorario:
config _FOSC,CSW_FSCM_OFF&XT_PLL4 ;use cristal oscilador con el 4x PLL …
config _FWDT,WDT_OFF ;Desabilitado Watchdog Timer delay:
config _FBORPOR,PBOR_ON&MCLR_EN dec w3,w4
;Set Brown-out Reset voltage and mov w4,w3
;and set Power-up Timer to 16msecs repeat #0x03e8
config FGS,CODE_PROT_OFF ;Desabilitado protecion de codigo nop
; Declaración de variables y subprocesos cp0 w4
.equ cont,#0x0810 bra nz,delay
.equ cont1,#0x0812 mov #0x03e8,w3
.global xx return
.global yy .end
.global _reset
.text
;*************Programa principal *****************
_reset:
goto main
.org 100
main:

; mov #_SP_init,W15 ;inicializa el SP


; mov #_SPLIM_init,W0
; mov W0,SPLIM
nop
;*******************************configuration de puertos**************
mov #0x0080,W0
mov W0,TRISB
;***********************************************
bucle: ; verifica el estado del interruptor abierto o cerrado?
BTSC PORTB,#07 ; El BIT 7 chequear interruptor salta si es cero o cerrado
bra bucle
;*********************************************
call xx
call yy
bra bucle
;************************************************
xx:
mov #0x0001,W1
mov W1,PORTB
call delay
return
yy:
mov #0x0002,W1
mov W1,PORTB
call delay
return
;*************************************************************
delay: ;Subrutina de Retardo en dos lazos mov # 0xffff ,W2
mov W2,cont
YY: mov # 0x00ff, W1
mov W1,cont1

XX: dec cont1


bra NZ,XX
dec cont
bra NZ,YY
return
;****************************************************
.end
equ 30f4013,1
.include "p30f4013.inc"
.global _main
.global _reset
.equ VAR1,#0x0810
.equ VAR2,#0x0812
.equ VAR3,#0x0814
__reset:
.org 100
_main:
mov #0x03e8,w3
mov #0x1F00,w0
mov w0,TRISB
;...............
mov#0x0000,w0
mov w0,PORTB
;..............
new:
btsc PORTB,#07
bra new
;....................
repetir1: mov #480,w0
mov w0,VAR1 ;vueltas cantidad
;.....................

You might also like