Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
LABORATORIO NRO04
TEMA: DESARROLLO DE SEMAFORO DIGITAL CON dsPIC30F4013
OBJETIVO:
Implementar un semáforo CON EL dsPIC30F4013 configurando el temporizador para encender
un led verde durante un tiempo determinado y luego un led rojo durante otro tiempo
FUNDAMENTO
El led rojo estará encendido durante 10 segundos, luego debe encenderse el led verde durante 10
segundos y así sucesivamente
Estos leds debe estar ubicado en los pines RD0 ( rojo) y RD1( verde)
Procedimiento
Se recomienda utilizar interrupción interna del timer para realizar el programa,en el control
de tiempo de 10seg con timer de 32 bits ( TMR2 yTMR3)
3. Realizar los cambios en el programa comentando cada instrucción del paso 2, para que el
peatón accione el interruptor conectado al pin 17 O RA11/INT0 y solicite que se ponga
en verde
Indicación
Se propone el programa respectivo para su estudio e implementación
Previamente debe hacer la simulación y luego las pruebas con el dsPIC30F4013
.equ __p30f,4013
.include "p30F4013.inc"
.global __reset
.global __INT0Interrupt
.global __T3Interrupt
;******************************************************************
PRINCIPAL:
CLRWDT
GOTO PRINCIPAL
;********************************************************************************************
__INT0Interrupt:;****Interruption externa
;Ponemos el semaforo en rojo y comienza la secuencia
;del semáforo de nuevo.
DISI #3 ;deshabilitamos interrpciones
BCLR IFS0,#0 ;borramos el flag de interrpcion
MOV #0x0001,W0 ;ponemos a rojo el semaforo
MOV W0,PORTD ;moviendo a uno el PORTD
CLR TMR2 ;Borramos el temporizador
CLR TMR3 ;para que empiece de nuevo
RETFIE ;devolvemos el control al programa principal
;**************************************************
__T3Interrupt:
BCLR IFS0,#7 ;Borramos el flag T3IF de activación de la interrupción
BTSS PORTD,#0 ; si el semaforo esta en verde
GOTO ROJO ; lo ponemos en rojo
VERDE: ; y en caso contrario
MOV #0x0002,W0 ; lo ponemos en verde
MOV W0,PORTD ; en los leds conectados al PORTD
GOTO FINAL
ROJO:
MOV #0x0001,W0
MOV W0,PORTD
FINAL:
RETFIE ;Retorno de la interrupción
;***********************************************************
__reset:
;Inicialización del puerto D
CLR PORTD ; inicializamos el puerto A
MOV #0xFCF0, W0 ; como salida RD0 y RD1
MOV W0, TRISD ; configurando TRISD
MOV #0x0001,W0 ; ponemos el semaforo
MOV W0,PORTD ; en ROJO moviendo 1 al PORTA
MOV #0X00FF,W0
MOV W0,TRISA
CLR W0