Sunteți pe pagina 1din 5

3.

Los semáforos son señales de control de tráfico que se sitúan en intersecciones viales y
otros lugares para regular el tráfico vehicular y, por ende, el tránsito peatonal.
Se debe Diseñar y desarrollar un programa utilizando el dsPIC30F4013 que emule el
funcionamiento de los semáforos del crucero vial que se muestra en la Figura.

En este crucero vial se tienen cuatro semáforos, dos para la avenida principal y dos para
la avenida secundaria. Ambas avenidas son de doble sentido, las vueltas son prohibidas
por lo que el recorrido solo puede ser recto.
Las siguientes condiciones describen el funcionamiento de los semáforos:
Mientras los semáforos S1 y S3 de la avenida principal, se encuentran en “siga” (verde),
los semáforos S2 y S4 de la avenida secundaria, se encontrarán en “alto” (rojo). Los
semáforos S2 y S4 se mantienen en rojo aun cuando los semáforos S1 y S3 cambien a
“preventivo” (amarillo). Cuando cambien a “alto” los semáforos S1 y S3, los semáforos
S2 y S4 estarán en “siga”, manteniéndose así mientras S1 y S3 pasen a “preventivo”.
Finalmente se repite el ciclo indefinidamente.
Asumiendo que el flujo vehicular de la avenida principal es mayor que el de la avenida
secundaria, se establece que el tiempo en verde de los semáforos S1 y S3 (de la avenida
principal) debe ser mayor al tiempo en verde de los semáforos S2 y S4 (de la avenida
secundaria).
Del análisis del funcionamiento de los semáforos de un crucero se obtiene la Tabla

Diagrama de flujo.
El diagrama de flujo es una representación gráfica de un proceso. Ofrece una descripción
visual de las actividades implicadas en un proceso, mostrando la relación secuencial
ente ellas.
Programación:

.equ __33fj12G202,1

.include "p33fj12MC202.inc"

;******************************************************

config __FOSCSEL, FNOSC_FRCDIV16 & IESO_ON

config __FOSC, POSCMD_NONE & OSCIOFNC_ON & FCKSM_CSDCMD

config __FWDT, FWDTEN_OFF

config __FGS, GCP_OFF

;..............................................................................

;Declaración de variables y subprocesos

.equ cont,#0x0810

.equ cont1,#0x0812

.global aa

.global bb
.global __reset

.global _main

.global _tiempo

.section .text

;-------------Programa principal--------------

__reset:

goto _main

.org 100

_main:

;configuramos el puerto B como salida

mov #0x0000,W0

mov W0,TRISB

CLR PORTB

MOV #0xffff,W0

MOV W0,ADPCFG ;poniendo los puertos a señales digitales

;--------------------comienzo----------------

bucle:

MOV #0x0861,W1

MOV W1,LATB ; N1

CALL _retardo1 ;retardo

MOV #0x08a2,W1

MOV W1,LATB ;N2

CALL _retardo1 ;retardo

MOV #0x030c,W1

MOV W1,LATB ;N3

CALL _retardo2 ;retardo

MOV #0x0514,W1

MOV W1,LATB ;N4

CALL _retardo2 ;retardo


BRA bucle

;subrutina de tiempo

_retardo1:

MOV #0x07ff,W6

MOV W6,cont

BB: MOV #0x00ff,W5

MOV W5,cont1

AA: DEC cont1

BRA NZ,AA

DEC cont

BRA NZ,BB

return

_retardo2:

MOV #0x03ff,W6

MOV W6,cont

BBB: MOV #0x00ff,W5

MOV W5,cont1

AAA: DEC cont1

BRA NZ,AAA

DEC cont

BRA NZ,BBB

return

.end
Simulación:

D1
+5v R2
100
LED-GREEN
D2
R3
R1 100
10k LED-YELLOW
D3
R4
100
LED-RED

D4
R5
100
LED-GREEN
D5
U1 R6
1 4
MCLR RB0/CN4/RP0/AN2/EMUD1/PGD1
20 5
VDDCORE RB1/CN5/RP1/AN3/EMUC1/PGC1 100
6 LED-YELLOW
RB2/CN6/RP2/AN4
7 D6
RB3/CN7/RP3/AN5
11
R7
RB4/CN1/RP4/SOSCI/EMUD3/PGD3
14
RB5/CN27/RP5/ASDA1 100
28 15 LED-RED
AVDD RB6/CN24/RP6/ASCL1
27 16
AVSS RB7/CN23/RP7/INT0
17
2

RB8/CN22/RP8/SCL1/PWM2H1/TCK
18
RB9/CN21/RP9/SDA1/PWM2L1/TDO D7
X1 RB10/CN16/RP10/PWM1H3/TDI
21 R8
CRYSTAL 2 22
RA0/CN2/VREF+/AN0/EMUD2/PGD2 RB11/CN15/RP11/PWM1L3/TMS
3 23 100
RA1/CN3/VREF-/AN1/EMUC2/PGC2 RB12/CN14/RP12/PWM1H2
1

9 24 LED-GREEN
10
RA2/CN30/CLKI/OSCI RB13/CN13/RP13/PWM1L2
25 D8
12
RA3/CN29/CLKO/OSCO RB14/CN12/RP14/PWM1H1
26
R9
RA4/CN0/T1CK/SOSCO/EMUC3/PGC3 RB15/CN11/RP15/PWM1L1
100
DSPIC33FJ12MC202 LED-YELLOW
D9
R10
100
LED-RED

D10
R11
100
LED-GREEN
D11
R12
100
LED-YELLOW
D12
R13
100
LED-RED

S-ar putea să vă placă și