1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
| define OSC 4 TRISB=0 PORTB=0 VECES var Byte LED_VERDE_1 var PORTB.0 LED_AMARILLO_1 var PORTB.1 LED_ROJO_1 var PORTB.2 LED_VERDE_2 var PORTB.3 LED_AMARILLO_2 var PORTB.4 LED_ROJO_2 var PORTB.5 SEMAFORO: high LED_ROJO_2: high LED_VERDE_1 pause 9000 low LED_VERDE_1 GOSUB BLINK_LED_AMARILLO_1 low LED_ROJO_2: high LED_VERDE_2: high LED_ROJO_1 pause 9000 low LED_VERDE_2 GOSUB BLINK_LED_AMARILLO_2 low LED_ROJO_1 goto semaforo BLINK_LED_AMARILLO_1: FOR VECES = 0 TO 10 high LED_AMARILLO_1 pause 300 low LED_AMARILLO_1 pause 300 NEXT VECES RETURN BLINK_LED_AMARILLO_2: FOR VECES = 0 TO 10 high LED_AMARILLO_2 pause 300 low LED_AMARILLO_2 pause 300 NEXT VECES RETURN end |
- Las primeras líneas de código se utiliza lo que ya se venía manejando el oscilador, puertos de salida, los nombres a cada pin del puerto B de nuestro PIC.
- Ahora se cuenta con una variable tipo BYTE llamada VECES que más adelante se utilizara para establecer la cantidad de ocasiones que encenderán y apagan los LEDs amarillos.
- Se tiene la etiqueta SEMAFORO que indica el inicio nuestra rutina principal y en el cual se encuentra que pines se deben de activar con su debido tiempo para que se tenga visualmente en los LEDs una simulación de un par de semáforos. Básicamente se inicia encendiendo el LED verde del primer semáforo y el LED rojo del segundo, mientras el LED rojo permanece activo el otro semáforo enciende y apaga el LED amarillo, después enciende el LED verde del segundo semáforo y el primero pasa rojo y se repite bueno ya sabrán ustedes el comportamiento de los semáforos. Dentro de esta rutina nos encontramos con las siguientes instrucciones GOSUB BLINK_LED_AMARILLO1 y GOSUB BLINK_LED_AMARILLO2 que no son más que saltos a otras subrutinas.
- Después se tienes dos subrutinas que son casi iguales, la diferencia entre ellos es el nombre de cada una y el pin o LED que activan, en el primer caso activa el LED correspondiente a un primer semáforo y por supuesto la otra activa el LED del segundo semáforo. Dentro de estas se encuentra unos ciclos FOR que son los encargados de indicar cuantas veces se repetirá el encendido y apagado de los LEDs amarillos, al terminar dicha cantidad se utiliza la instrucción RETURN para regresar al lugar de donde se ha llamado la subrutina.
- Por último tenemos el fin de nuestro programa.
- http://electronicayrobotica.wordpress.com/2012/12/29/semaforo-con-pic16f84a-tres/