Bueno visto el exito de la ayuda, y despues de un dia dedicandole tiempo al proyecto he llegado a la solucion del mismo.
Se trata de un semaforo, bueno de dos pq es un cruce.
He utilizado hi-tech y proteus para emplementarlo, dejo el codigo puesto.
El reloj en proteus para que se cumplieran los tiempos lo he tenido q poner a 20MHZ, gracias por las respuestas xD
Era ironia, para quien no lo piye...
#include <pic.h>
#define PORTBIT(adr, bit) ( (unsigned)(&adr)*8 + (bit) )
#define TOINI 61
#define LED RB1
//-- Divisor del prescar a 256
#define T_10ms 61
#define LED RB1
void timer0_delay(unsigned char t0ini)
{
//-- Dar valor inicial del timer
TMR0=t0ini;
//-- Flag de interrupcion a cero
T0IF=0;
//-- Esperar a que transcurra el tiempo indicado
while(T0IF==0);
}
/*******************************************************/
/* Pausa */
/* ENTRADA: duracion de la pausa en centesimas (10ms) */
/*******************************************************/
void timer0_delay_long(unsigned int duracion)
{
unsigned int i;
for (i=0; i<duracion; i++)
timer0_delay(T_10ms);
}
void main(void)
{
TRISB = 0x00;
LED=0;
//-- Configurar Timer 0
//-- Modo temporizador
T0CS=0; PSA=0;
//-- Presscaler a 256
PS2=1; PS1=1; PS0=1;
//-- Hacer parpadear el led con periodo de 1segundo
while(1) {
//
PORTB=0x91;
timer0_delay_long(1000);
PORTB=0x92;
timer0_delay_long(300);
PORTB=0x24;
timer0_delay_long(1000);
PORTB=0x44;
timer0_delay_long(300);
}
}