TODOPIC
Microcontroladores PIC => Todo en microcontroladores PIC => Mensaje iniciado por: Mako22 en 25 de Febrero de 2004, 23:58:00
-
Quisiera hacer este pequeño semáforo, pero tengo una duda:
Para que usa la pata Data (13) y Clock (12), me funcionará sin conectarlas?
Me interesa que el circuito funcione solo sin conectarlo en ningún sitio.

este es el codigo en C:
#include<pic.h>
#include"delay.c"
__CONFIG(11001B);
#define Aspetta 255
void pausa(char ripeti);
main()
{
TRISB = 0;
while(1)
{
PORTB = 0x18; // veicolo verde - pedone rosso
pausa(22);
PORTB = 0x1c; // giallo
pausa(8);
PORTB = 0x22; // veicolo rosso - pedone verde
pausa(20);
PORTB = 0x2; // da qui" in poi lampeggio verde pedone
pausa(1);
PORTB = 0x22;
pausa(1);
PORTB = 0x2;
pausa(1);
PORTB = 0x22;
pausa(1);
PORTB = 0x2;
pausa(1);
PORTB = 0x22;
pausa(1);
PORTB = 0x2;
pausa(1);
PORTB = 0x22;
pausa(1);
}
}
void
pausa(char ripeti)
{
char x;
for(x=0;x<=ripeti;x++)
DelayMs(Aspetta);
}
Saludos a todos
-
buenas, RB7 y RB6 en general estan reservadas para utilizar el ICSP (In Circuit Serial Program) (o algo asi), osea vos el micro lo programas de la forma habitual y si queres utilizas tambien en tu aplicacion las patillas RB7 y RB6, con la salvedad de que a la hora de modificar el firmware que tenes en el micro no necesitas sacarlo del socalo, ya que CLOCK y DATA ingresan por esas patillas.
espero haberte ayudado, por ahi no me esprese bien pero en todo caso otro dia me explayo un poco mejor
saludos
gabriel
-
Quieres decir que si lo monto tal como está sin conectar estas dos patillas, ya funcionará?
Saludos
-
Hola Mako. Como bien te indican esto es para el ICSP, osea, para programar en circuito, sin necesidad de quitar el micro e insertarlo en el programador.
Por tanto, si no lo vas a usar pues no lo necesitas para nada.
Puedes eliminar esas dos líneas. Si te fijas, en la de Vpp (voltaje de programación) tiene un diodo que es para que no derive tensión hacia la fuente de 5v cuando se está programando. Pues como no lo vas a usar lo puedes omitir.
Ahora, lo que yo haría es colocar un pulsador a masa donde pone Vpp, osea, un reset, que siempre viene bien.
Y las resistencias de los leds las cambiaría por unas de 330.
-
Pués sí debe funcionar. De acuerdo con pendexgabo esos dos pines son para grabar el PIC sin levantarlo de la aplicación.
El compilador debe ser el de HITECH ¿no?
A bote pronto la secuencia que realiza con las temporizaciones correspondientes es:
Peatones Coches
R V
R V y A
V R
- R
V R
- R
V R
- R
V R
- R
V R
... y vuelta a empezar
Un saludo
-
Bueno, el tema del compilador era el segundo paso que tenia que mirar, pero ya que mencionais uno miraré de usar ese.
Una cosa, ya que yo de C estoy bastante pegado??
podeis decirme un par de cosas sobre este programita?
La secuencia tendría que ser así:
Vehículos: verde --> ambar --> rojo y otra vez verde --> vuelve a empezar.
Mientras el de vehículos está verde el de peatones está rojo, cuando el de vehículos pasa a rojo, entonces el de peatones pasa a verde ( no antes ). Luego antes de que el de vehículos pase a verde, unos 10 segundos antes, el de peatones pasa a rojo.
La duración de fases, debería ser así:
vehículos --> fase roja unos 2 minutos
fase verde unos 2 minutos
fase ambar unos 20 segundos
¿ Que modificaciones tendría que hacer en el programa para que esto fuera así, pues no creo que el programa sea así?
Saludos a todos
-
Yo uso el compilador de CCS, en el foro es el que más se utiliza, te lo recomiendo. Pega un vistazo por el almacen, allí encontrarás el manual traducido.
Te había puesto la secuencia, pero ha salido por pantalla bastante mal. A ver si ahora sale mejor:
Peatones ---- Coches
---- R ------------- V-----
---- R ----------- V y A --
---- V --------------R ----
--sin luz ---------- R -----
estas dos últimas se repiten 3 veces más, y por último:
--- V ------------- R ------
Vuelta a empezar.
Los tiempos no los he mirado, puedes probarlo a ver que tal, y si no te gusta cambiamos los encendidos y apagados.
PD. Espero no haberme equivocado en la secuencia, la miré ayer rápidamente
-
OK ! gracias y que tengas un buen día.
-
El programa retocado para CCS es el siguiente:
#include<16F84.h>
#fuses XT, NOWDT, NOPUT, NOPROTECT
#use delay(clock=4000000)
#define Aspetta 255
void pausa(char ripeti);
main()
{
set_tris_b(0x00);
while(1)
{
output_B(0x18); // veicolo verde - pedone rosso
pausa(22);
output_B(0x1c); // giallo
pausa(8);
output_B(0x22); // veicolo rosso - pedone verde
pausa(20);
output_B(0x2); // da qui" in poi lampeggio verde pedone
pausa(1);
output_B(0x22);
pausa(1);
output_B(0x2);
pausa(1);
output_B(0x22);
pausa(1);
output_B(0x2);
pausa(1);
output_B(0x22);
pausa(1);
output_B(0x2);
pausa(1);
output_B(0x22);
pausa(1);
}
}
void
pausa(char ripeti)
{
char x;
for(x=0;x<=ripeti;x++)
delay_ms(Aspetta);
}
Funciona bien. Temporizaciones aproximadas con PROTEUS:
6.3s --> 2.3s --> 5.3s --> 0.5s --> 0.5s etc
Un saludo
-
Gracias por la rapidez en tu ayuda. Cunato me sea posible montarlo te dire como me ha funcionado.
Saludos
-
Pocher, muchas gracias por todo.
Funcionando a la Primera !!
Saludos