Está en la página 1de 3

UNAC-FIEE

MICROCONTROLADORES

LABORATORIO NRO 04
TITULO: DESARROLLO DE SEMAFORO DIGITAL CON dsPIC
OBJETIVO: Estudiar los Timers del Dspic30f y sPIC33f

FUNDAMENTO:

1. Realizar el circuito de la figura

SEMAFORO DIGITAL
R2
10k

U1
1 4
MCLR RB0/CN4/RP0/AN2/EMUD1/PGD1
20 5
VDDCORE RB1/CN5/RP1/AN3/EMUC1/PGC1
RB2/CN6/RP2/AN4
6 R1
7 10k
RB3/CN7/RP3/AN5
11
RB4/CN1/RP4/SOSCI/EMUD3/PGD3
14
RB5/CN27/RP5/ASDA1
28
AVDD RB6/CN24/RP6/ASCL1
15 INT0
27 16
AVSS RB7/CN23/RP7/INT0
17
RB8/CN22/RP8/SCL1/PWM2H1/TCK
18
RB9/CN21/RP9/SDA1/PWM2L1/TDO
21
RB10/CN16/RP10/PW M1H3/TDI
2 22
RA0/CN2/VREF+/AN0/EMUD2/PGD2RB11/CN15/RP11/PWM1L3/TMS
3 23
RA1/CN3/VREF-/AN1/EMUC2/PGC2 RB12/CN14/RP12/PWM1H2
9 24
RA2/CN30/CLKI/OSCI RB13/CN13/RP13/PWM1L2
10 25
RA3/CN29/CLKO/OSCO RB14/CN12/RP14/PWM1H1
12 26
RA4/CN0/T1CK/SOSCO/EMUC3/PGC3 RB15/CN11/RP15/PWM1L1

X1 DSPIC33FJ12MC202
D1 D2
. .

CRYSTAL

VERDE ROJO

El programa principal realiza el control de un semáforo de dos lámparas Verde y Rojo El


encendido de la lámpara Verde (RA0) es 20 segundos y el encendido de la lámpara rojo (RA1)
es también 20 segundos , cuando una persona va cruzar se genera la interrupción INT0 ( pin
RB7) se activa la lámpara verde (RA0) .
El tiempo de encendido de las lámparas es controlado por el TIMER1 mediante interrupciones
y el pulsador es para activar la interrupción externa INT0 el cual inmediatamente el
semáforo se pone en verde

Este programa es para simular y verificar el funcionamiento del programa

Circuito para implementar en el dsPIC30F4013

U1
R1 RESET DPIC30F4013
10k 1 40
MCLR AVDD
2 39
RB0 AVss
3 38
RB1 RB9
4 37
RB2 RB10
5 36
RB3 RB11
6 35
RB4 RB12
7 34
RB5 RD0
8 33
RB6 RD1
9 32
RB7 VDD
10 31
RB8 VSS
11 30
VDD RF0
12 29
VSS RF1
13
OSC1/CLKI RF4
28 INTO
14 27
OSC2/RC15 RF5
15 26
RC13 RF2/RX
X1 16
RC14 RF3/TX
25
D2 D1 . 17
INT0/RA11 RF6
24 R3
. . 18 23 10k
INT2/RD9 INT1/RD8
19 22
RD3 RD2
20 21
VSS VDD

R2
100

MSc. Jacob Astocondor Villar 1


UNAC-FIEE
MICROCONTROLADORES

Desarrollo del programa


I. Programa para simular en el proteus con el dsPIC33FJ32MC202
.equ __33FJ12MC202,1
.include "p33fj12mc202.inc"
config __FOSCSEL, FNOSC_FRCDIV16 & IESO_ON
config __FOSC, POSCMD_NONE & OSCIOFNC_ON & FCKSM_CSDCMD
;config __FWDT, FWDTEN_OFF
config __FPOR, FPWRT_PWR1 & ALTI2C_OFF & LPOL_OFF & PWMPIN_OFF
config __FGS, GCP_OFF
;***************
.global __reset
.global __INT0Interrupt
.global __T1Interrupt
.global __reset
.global __main
.section .text
;*****************************
.org 0x0000
.org 0x000014
bra __INT0Interrupt
.org 0x00001A
bra __T1Interrupt
__reset:
goto __main
;*********************************************
__INT0Interrupt:
;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,PORTA ;moviendo a uno el PORTA
CLR TMR1 ;Borramos el temporizador
RETFIE ;devolvemos el control al programa principal
;**************************************************
__T1Interrupt:
BCLR IFS0,#3 ;Borramos el flag T1IF de activación de la interrupción
BTSS PORTA,#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,PORTA ; en los leds conectados al PORTA
GOTO FINAL
ROJO:
MOV #0x0001,W0
MOV W0,PORTA
FINAL:
CLR TMR1
RETFIE ;Retorno de la interrupción

;***********************************************************
__main:
;Inicialización del puerto A
CLR PORTA ; inicializamos el puerto A
MOV #0x0000, W0 ; como salida RA0 y RA1
MOV W0, TRISA ; configurando TRISA
MOV #0x0001,W0 ; ponemos el semáforo

MSc. Jacob Astocondor Villar 2


UNAC-FIEE
MICROCONTROLADORES

MOV W0,PORTA ; en ROJO moviendo 1 al PORTA


CLR W0
mov #0xFFFF,W1;
mov W1,ADPCFG;
bset TRISB,#7 ; pIN RB7 ENTRADA INT0
;**************Configuración de interrupción externa INT0
MOV #0x0000, W0;
MOV W0,INTCON2 ; set up INT0 ... INT4 to interrupt on positive edge
MOV #0x0001, W0 ; activamos la interrupcion esterna
MOV W0, IEC0 ; INT0 de del pin RB7
;*****************Inicialización del Timer***************
MOV #0x0020,W1
MOV W1,T1CON ;Para cualquier operación con Timers

CLR TMR1 ;Borra el contenido del temporizador TMR1

MOV #0x1FFF,W2 ;Inicializamos el temporizador con


MOV W2,PR1 ;

BCLR IFS0, #3 ; Borramos el flag de interrupción del Timer1


BSET IEC0, #3 ; Habilita interrupciones del Timer1
BSET T1CON,#15 ;Comienza el temporizador con preescaler 1:1
; y fuente del reloj el ciclo de instrucción
PRINCIPAL:
CLRWDT
GOTO PRINCIPAL

.end

II. Programa para implementar con el dsPIC30F4013


Se pide realizar el programa en el dsPIC30F4013 y realizar pruebas

III. Realizar el Programa para implementar con el dsPIC30F4013 para implementar un


semáforo digital con tres lámparas en el puerto B
Donde el semáforo digital es
 Lámpara Verde RB0  20 seg
 Lámpara Ámbar RB1 20 seg
 Lámpara Roja RB2 20 seg
Un Pulsador de activación para poner en verde en cualquier momento por el
usuario se debe colocar en el pin RA11
IV. Para el informe
 ¿Se pide implementar el sistema semáforo digital con tres lámparas?
 Presentar el programa comentando cada instrucción
 Hacer un diagrama de flujo del programa
 Realizar pruebas
 Diga sus conclusiones

MSc. Jacob Astocondor Villar 3

También podría gustarte