Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Integrado
// File: 18f2550.lkr
// Sample linker script for the PIC18F2550 processor
// Not intended for use with MPLAB C18. For C18 projects,
// use the linker scripts provided with that product.
LIBPATH .
;*******************************************************************
;
; PROYECTO FIN DE CARRERA
; PLACA DETECTOR DE MOVIMIENTO
; Parpadeo de un LED
;
; Realizado: MARTA ARENAS MAS
; Fecha: 22-Mayo-2008
; Versión: v1
;
;*******************************************************************
;******************************************************************
;
; Ficheros Utilizados: P18F2550.INC
; 18F2550.LKR
;
;*******************************************************************
;Este programa enciende y apaga un LED de forma consecutiva
;*******************************************************************
;*******************************************************************
;Declaración de variables
cont equ 0x000
cont1 equ 0x001
;*******************************************************************
; Comienza el programa
;*******************************************************************
INICIO
movlb B'00001111'
movlw 0xFF
movwf cont
movwf cont1
clrf PORTB,1 ; Reset del puerto b
clrf LATB ,1 ; Reset del puerto b
movlw B'00001110' ;Configurar I/O en el registro wreg
movwf TRISB,1 ; Configuramos la puerta B
BUCLE
bsf PORTB,7,1 ; Activa bit 7 Puerta B. Enciendo LED 1
SIGO_ON
decfsz cont,1
goto SIGO_ON
decfsz cont1,1
goto SIGO_ON
bcf PORTB,7,1 ; Apaga bit 7 Puerta B. Enciendo LED 1
SIGO_OFF
decfsz cont,1
goto SIGO_OFF
decfsz cont1,1
goto SIGO_OFF
goto BUCLE
;*******************************************************************
; Fin del programa
END
;*******************************************************************
;
; PROYECTO FIN DE CARRERA
; PLACA DETECTOR DE MOVIMIENTO
; Jugando LEDs
;
; Realizado: MARTA ARENAS MAS
; Fecha: 22-Mayo-2008
; Versión: v1
;
;*******************************************************************
;
; Ficheros Utilizados: P18F2550.INC
; 18F2550.LKR
;
;*******************************************************************
;Este programa enciende consecutivamente 3 leds
;*******************************************************************
;*******************************************************************
;Declaración de variables
cont equ 0x00
cont1 equ 0x01
cont2 equ 0x02
;*******************************************************************
; Comienza el programa
;*******************************************************************
INICIO
movlb B'00001111'
movlw 0xFF
movwf cont
movwf cont1
movlw 0x10
movwf cont2
clrf PORTB,1 ; Reset del puerto b
clrf LATB,1 ; Reset del puerto b
movlw B'00001110' ; Configurar I/O en el registro wreg
movwf TRISB,1 ; Configuramos la puerta B
LED1
decfsz cont,1
goto LED1
decfsz cont1,1
goto LED1
decfsz cont2,1
goto LED1
movlw 0xFF
movwf cont
movwf cont1
movlw 0x10
movwf cont2
bsf PORTB,7,1 ; Activa bit 7 Puerta B. Enciendo LED 1
LED2
decfsz cont,1
goto LED2
decfsz cont1,1
goto LED2
decfsz cont2,1
goto LED2
movlw 0xFF
movwf cont
movwf cont1
movlw 0x10
movwf cont2
bsf PORTB,6,1 ; Activa bit 6 Puerta B. Enciendo LED 2
LED3
decfsz cont,1
goto LED3
decfsz cont1,1
goto LED3
decfsz cont2,1
goto LED3
movlw 0xFF
movwf cont
movwf cont1
movlw 0x10
movwf cont2
bsf PORTB,5,1 ; Activa bit 5 Puerta B. Enciendo LED 3
APAGA
decfsz cont,1
goto APAGA
decfsz cont1,1
goto APAGA
decfsz cont2,1
goto APAGA
clrf PORTB,1 ; Reset puerto B. Apagan los LEDS
clrf LATB,1 ; Reset puerto B
movlw 0xFF
movwf cont
movwf cont1
movlw 0x10
movwf cont2
goto LED1
;*******************************************************************
; Fin del programa
END
;*******************************************************************
;
; PROYECTO FIN DE CARRERA
; PLACA DETECTOR DE MOVIMIENTO
; CUENTA PULSACIONES
;
; Realizado: MARTA ARENAS MAS
; Fecha: 22-Mayo-2008
; Versión: v1
;
;*******************************************************************
;
; Ficheros Utilizados: P18F2550.INC
; 18F2550.LKR
;
;*******************************************************************
;*******************************************************************
;Declaración de variables
cont equ 0x00 ; Variable que va a contar el número de pulsaciones
;*******************************************************************
; Comienza el programa
;*******************************************************************
INICIO
BUCLE
clrf PORTB,1
clrf LATB,1 ; Reset de la Puerta B. Inicializar el vector B
clrf cont ; Inicializamos el contador
ESPERA
btfsc PORTB,1,1 ; Esperamos que se pulse la tecla, es decir, esperamos
;que RB1 pase de "0" a "1"
call INCREMENTO ; Si se pulsó pasamos al subprograma INCREMENTO
goto ESPERA ; No se pulsó, seguimos esperando
INCREMENTO
clrf PORTB,1
incf cont ; Incrementamos contador
SOLTAR
btfsc PORTB,1,1 ; Esperamos que pase de "1" a "0"
goto SOLTAR ; Se soltó la tecla,
return
;*******************************************************************
; Fin del programa
END
Temporizador/Contador e Interrupciones
8x62.5ms=500ms.
;*******************************************************************
;
; PROYECTO FIN DE CARRERA
; PLACA DETECTOR DE MOVIMIENTO
; TEMPORIZADOR PARA QUE LOS LEDS PARPADEEN
;
; Realizado: MARTA ARENAS MAS
; Fecha: 22-Mayo-2008
; Versión: v1
;
;*******************************************************************
;*******************************************************************
;
; Ficheros Utilizados: P18F2550.INC
; 18F2550.LKR
;
;*******************************************************************
; El microprocesador PIC reserva la dirección de memoria 0x08 para el vector de
; interrupción, por tanto en ella se debe de colocar una instrucción de salto,
; para que, cuando el temporizador genere una interrupción , el contador de
; programa se situe en la dirección que comienza la interrupción.
;*******************************************************************
;Declaración de variables
ctr equ 0x00 ; Variable que va a contar el número de pulsaciones
;*******************************************************************
; Comienza el programa
;*******************************************************************
INICIO
clrf PORTB,1
clrf LATB,1 ; Reset de la Puerta B. Inicializamos el vector B
movlw d'8'
movwf ctr ; La variable de control=8
movlw d'12'
movwf TMR0L,1 ; Contamos 12 veces
movlw B'10000000'
movwf RCON,1 ; Habilitamos Interupciones
movlw B'11111100'
movwf INTCON2,1
movlw B'10100000'
movwf INTCON,1 ; Configuramos la interrupción
ESPERA
goto ESPERA
;*******************************************************************
; Rutina de interrupción
;*******************************************************************
RUT_INTER
decfsz ctr,1 ; Salta sino ha llegado al cero
goto NO_CERO
comf LATB,1,1
; comf PORTB,1,1 ; Complementa PORTB
movlw d'8'
movwf ctr ; Inicializa la variable de control
NO_CERO
movlw d'12' ; Inicia el contador
movwf TMR0L,1
bcf INTCON,TMR0IF,1 ; Limpia el falg Interrupción.
retfie
;*******************************************************************
; Fin del programa
END