Não consegui piscar 2 leds independentes, CCS

Olá pessoal, esta é minha primeira postagem!
Trabalho com eletrônica desde 1996 em manutenção, produção e desenho de placas, só não sei programar firmware.
Comecei a estudar um livro em Abril, a IDE é o CCS, aproveitando essa quarentena.
Já passei mais da metade dos capítulos, mais da metade do livro, com bastante atenção e anotações e decidi então repetir desde o ínicio para aprender melhor.
Porem hoje ao praticar uma mudança num código e já não conseguir fiquei frustrado, gostaria da ajuda de vocês por aqui, se puderem!
O exemplo do livro, é o Exemplo 1, é para piscar apenas um led, ao ligar o circuito, esse eu fiz e funcionou perfeitamente.
Porem ao tentar piscar 2 leds, já não consegui, veja abaixo como fiz nos exemplos 2, 3 e 4:
//Exemplo 1: Funciona 1 LED ok
#include <16f628a.h>
#use delay(clock=4000000)
#fuses INTRC_IO //Irá utilizar clock interno, e os 2 pinos do cristal ficarão disponiveis para Entrada e Saída;
#fuses NOWDT //Whatchdog interno, desabilitado;
#fuses PUT //Aguarda 72ms para estabiliar o circuito e então ligar o PIC;
#fuses BROWNOUT //Monitora se o circuito cair pra menos de 4.5v e resetar o PIC;
#fuses NOLVP //Não efetua gravação por baixa voltagem;
#fuses NOMCLR //Não habilita MASTER CLEAR MOCLR desabilitado, pode usar o PINO MCLR como Entrada e Saída;
void main() //Função principal (corpo principal do programa)
//main() //tambem funciona digitar o comando somente: main()
{ //início do bloco de comandos da função principal;
int tempo; //Variável tempo de 8 bitsl;
tempo = 100; //atribui o valor 100 à variável tempo;
// tambem pode ser escrito: "int tempo=100;"
while(true) //se verdadeiro, fica repetindo, loop infinito. Declara que o bloco de comandos a ser iniciado abaixo, fica repetindo
{ //***** início do bloco de comandos para piscar o led. BLOCO DE INSTRUÇÕES A SEREM REPETIDAS;
output_high(pin_b0); //levanta o pino B0, liga o led;
delay_ms(tempo); //aguarda o valor da variável tempo;
output_low(pin_b0); //abaixa o pino B0, desliga o led;
delay_ms(tempo); //aguarda o valor da variável tempo;
} //***** fim do bloco de comando para piscar o led. BLOCO DE INSTRUÇÕES A SEREM REPETIDAS;
} //Fim do bloco de comandos da função principal;
/*Exemplo 2: Funciona 2 LEDs, porem atrasa a piscada do LED, pois tem que percorrer todos os comandos para
voltar no primeiro e não é isso que eu queria testar; */
#include <16f628a.h>
#use delay(clock=4000000)
#fuses INTRC_IO //Irá utilizar clock interno, e os 2 pinos do cristal ficarão disponiveis para Entrada e Saída;
#fuses NOWDT //Whatchdog interno, desabilitado;
#fuses PUT //Aguarda 72ms para estabiliar o circuito e então ligar o PIC;
#fuses BROWNOUT //Monitora se o circuito cair pra menos de 4.5v e resetar o PIC;
#fuses NOLVP //Não efetua gravação por baixa voltagem;
#fuses NOMCLR //Não habilita MASTER CLEAR MOCLR desabilitado, pode usar o PINO MCLR como Entrada e Saída;
void main() //Função principal (corpo principal do programa)
//main() //tambem funciona digitar o comando somente: main()
{ //início do bloco de comandos da função principal;
int tempo; //Variável tempo de 8 bitsl;
tempo = 100; //atribui o valor 100 à variável tempo;
// tambem pode ser escrito: "int tempo=100;"
int tempo2; // MEU TESTE
tempo2=250; // MEU TESTE
while(true) //se verdadeiro, fica repetindo, loop infinito. Declara que o bloco de comandos a ser iniciado abaixo, fica repetindo
{ //***** início do bloco de comandos para piscar o led. BLOCO DE INSTRUÇÕES A SEREM REPETIDAS;
output_high(pin_b0); //levanta o pino B0, liga o led;
delay_ms(tempo); //aguarda o valor da variável tempo;
output_low(pin_b0); //abaixa o pino B0, desliga o led;
delay_ms(tempo); //aguarda o valor da variável tempo;
output_high(pin_b2); //levanta o pino B2, liga o led; MEU TESTE
delay_ms(tempo2); //aguarda o valor da variável tempo2; MEU TESTE
output_low(pin_b2); //abaixa o pino B2, desliga o led; MEU TESTE
delay_ms(tempo2); //aguarda o valor da variável tempo2; MEU TESTE
} //***** fim do bloco de comando para piscar o led. BLOCO DE INSTRUÇÕES A SEREM REPETIDAS;
} //Fim do bloco de comandos da função principal;
//Exemplo 3: Como imaginei que funcionaria, mas apenas o LED do rb0 funciona corretamente;
#include <16f628a.h>
#use delay(clock=4000000)
#fuses INTRC_IO //Irá utilizar clock interno, e os 2 pinos do cristal ficarão disponiveis para Entrada e Saída;
#fuses NOWDT //Whatchdog interno, desabilitado;
#fuses PUT //Aguarda 72ms para estabiliar o circuito e então ligar o PIC;
#fuses BROWNOUT //Monitora se o circuito cair pra menos de 4.5v e resetar o PIC;
#fuses NOLVP //Não efetua gravação por baixa voltagem;
#fuses NOMCLR //Não habilita MASTER CLEAR MOCLR desabilitado, pode usar o PINO MCLR como Entrada e Saída;
void main() //Função principal (corpo principal do programa)
//main() //tambem funciona digitar o comando somente: main()
{ //início do bloco de comandos da função principal;
int tempo; //Variável tempo de 8 bitsl;
tempo = 100; //atribui o valor 100 à variável tempo;
// tambem pode ser escrito: "int tempo=100;"
int tempo2; // MEU TESTE
tempo2=250; // MEU TESTE
while(true) //se verdadeiro, fica repetindo, loop infinito. Declara que o bloco de comandos a ser iniciado abaixo, fica repetindo
{ //***** início do bloco de comandos para piscar o led. BLOCO DE INSTRUÇÕES A SEREM REPETIDAS;
output_high(pin_b0); //levanta o pino B0, liga o led;
delay_ms(tempo); //aguarda o valor da variável tempo;
output_low(pin_b0); //abaixa o pino B0, desliga o led;
delay_ms(tempo); //aguarda o valor da variável tempo;
} //***** fim do bloco de comando para piscar o led. BLOCO DE INSTRUÇÕES A SEREM REPETIDAS;
{ //***** início do SEGUNDO bloco de comandos para piscar o led do RB2. BLOCO DE INSTRUÇÕES A SEREM REPETIDAS; MEU TESTE
output_high(pin_b2); //levanta o pino B2, liga o led; MEU TESTE
delay_ms(tempo2); //aguarda o valor da variável tempo2; MEU TESTE
output_low(pin_b2); //abaixa o pino B2, desliga o led; MEU TESTE
delay_ms(tempo2); //aguarda o valor da variável tempo2; MEU TESTE
} //***** fim do SEGUNDO bloco de comando para piscar o led. BLOCO DE INSTRUÇÕES A SEREM REPETIDAS; MEU TESTE
} //Fim do bloco de comandos da função principal;
//Exemplo 4: outra tentativa de piscar o outro led;
#include <16f628a.h>
#use delay(clock=4000000)
#fuses INTRC_IO //Irá utilizar clock interno, e os 2 pinos do cristal ficarão disponiveis para Entrada e Saída;
#fuses NOWDT //Whatchdog interno, desabilitado;
#fuses PUT //Aguarda 72ms para estabiliar o circuito e então ligar o PIC;
#fuses BROWNOUT //Monitora se o circuito cair pra menos de 4.5v e resetar o PIC;
#fuses NOLVP //Não efetua gravação por baixa voltagem;
#fuses NOMCLR //Não habilita MASTER CLEAR MOCLR desabilitado, pode usar o PINO MCLR como Entrada e Saída;
void main() //Função principal (corpo principal do programa)
//main() //tambem funciona digitar o comando somente: main()
{ //início do bloco de comandos da função principal;
int tempo; //Variável tempo de 8 bitsl;
tempo = 100; //atribui o valor 100 à variável tempo;
// tambem pode ser escrito: "int tempo=100;"
int tempo2; // MEU TESTE
tempo2=250; // MEU TESTE
while(true) //se verdadeiro, fica repetindo, loop infinito. Declara que o bloco de comandos a ser iniciado abaixo, fica repetindo
{ //***** início do bloco de comandos para piscar o led. BLOCO DE INSTRUÇÕES A SEREM REPETIDAS;
output_high(pin_b0); //levanta o pino B0, liga o led;
delay_ms(tempo); //aguarda o valor da variável tempo;
output_low(pin_b0); //abaixa o pino B0, desliga o led;
delay_ms(tempo); //aguarda o valor da variável tempo;
} //***** fim do bloco de comando para piscar o led. BLOCO DE INSTRUÇÕES A SEREM REPETIDAS;
} //Fim do bloco de comandos da função principal;
void piscaled2() //Função piscaled2
//main() //tambem funciona digitar o comando somente: main()
{ //início do bloco de comandos da função principal;
int tempo2; //Variável tempo de 8 bitsl;
tempo = 250; //atribui o valor 100 à variável tempo2;
while(true) //se verdadeiro, fica repetindo, loop infinito. Declara que o bloco de comandos a ser iniciado abaixo, fica repetindo
{ //***** início do bloco de comandos para piscar o led. BLOCO DE INSTRUÇÕES A SEREM REPETIDAS;
output_high(pin_b2); //levanta o pino B2, liga o led;
delay_ms(tempo2); //aguarda o valor da variável tempo2;
output_low(pin_b2); //abaixa o pino B2, desliga o led;
delay_ms(tempo2); //aguarda o valor da variável tempo2;
} //***** fim do bloco de comando para piscar o led do portB, pino 2. BLOCO DE INSTRUÇÕES A SEREM REPETIDAS;
}
Onde está o meu erro, pois consigo compilar corretamente mas não consigo piscar 2 leds de forma independentes?
Trabalho com eletrônica desde 1996 em manutenção, produção e desenho de placas, só não sei programar firmware.
Comecei a estudar um livro em Abril, a IDE é o CCS, aproveitando essa quarentena.
Já passei mais da metade dos capítulos, mais da metade do livro, com bastante atenção e anotações e decidi então repetir desde o ínicio para aprender melhor.
Porem hoje ao praticar uma mudança num código e já não conseguir fiquei frustrado, gostaria da ajuda de vocês por aqui, se puderem!
O exemplo do livro, é o Exemplo 1, é para piscar apenas um led, ao ligar o circuito, esse eu fiz e funcionou perfeitamente.
Porem ao tentar piscar 2 leds, já não consegui, veja abaixo como fiz nos exemplos 2, 3 e 4:
//Exemplo 1: Funciona 1 LED ok
#include <16f628a.h>
#use delay(clock=4000000)
#fuses INTRC_IO //Irá utilizar clock interno, e os 2 pinos do cristal ficarão disponiveis para Entrada e Saída;
#fuses NOWDT //Whatchdog interno, desabilitado;
#fuses PUT //Aguarda 72ms para estabiliar o circuito e então ligar o PIC;
#fuses BROWNOUT //Monitora se o circuito cair pra menos de 4.5v e resetar o PIC;
#fuses NOLVP //Não efetua gravação por baixa voltagem;
#fuses NOMCLR //Não habilita MASTER CLEAR MOCLR desabilitado, pode usar o PINO MCLR como Entrada e Saída;
void main() //Função principal (corpo principal do programa)
//main() //tambem funciona digitar o comando somente: main()
{ //início do bloco de comandos da função principal;
int tempo; //Variável tempo de 8 bitsl;
tempo = 100; //atribui o valor 100 à variável tempo;
// tambem pode ser escrito: "int tempo=100;"
while(true) //se verdadeiro, fica repetindo, loop infinito. Declara que o bloco de comandos a ser iniciado abaixo, fica repetindo
{ //***** início do bloco de comandos para piscar o led. BLOCO DE INSTRUÇÕES A SEREM REPETIDAS;
output_high(pin_b0); //levanta o pino B0, liga o led;
delay_ms(tempo); //aguarda o valor da variável tempo;
output_low(pin_b0); //abaixa o pino B0, desliga o led;
delay_ms(tempo); //aguarda o valor da variável tempo;
} //***** fim do bloco de comando para piscar o led. BLOCO DE INSTRUÇÕES A SEREM REPETIDAS;
} //Fim do bloco de comandos da função principal;
/*Exemplo 2: Funciona 2 LEDs, porem atrasa a piscada do LED, pois tem que percorrer todos os comandos para
voltar no primeiro e não é isso que eu queria testar; */
#include <16f628a.h>
#use delay(clock=4000000)
#fuses INTRC_IO //Irá utilizar clock interno, e os 2 pinos do cristal ficarão disponiveis para Entrada e Saída;
#fuses NOWDT //Whatchdog interno, desabilitado;
#fuses PUT //Aguarda 72ms para estabiliar o circuito e então ligar o PIC;
#fuses BROWNOUT //Monitora se o circuito cair pra menos de 4.5v e resetar o PIC;
#fuses NOLVP //Não efetua gravação por baixa voltagem;
#fuses NOMCLR //Não habilita MASTER CLEAR MOCLR desabilitado, pode usar o PINO MCLR como Entrada e Saída;
void main() //Função principal (corpo principal do programa)
//main() //tambem funciona digitar o comando somente: main()
{ //início do bloco de comandos da função principal;
int tempo; //Variável tempo de 8 bitsl;
tempo = 100; //atribui o valor 100 à variável tempo;
// tambem pode ser escrito: "int tempo=100;"
int tempo2; // MEU TESTE
tempo2=250; // MEU TESTE
while(true) //se verdadeiro, fica repetindo, loop infinito. Declara que o bloco de comandos a ser iniciado abaixo, fica repetindo
{ //***** início do bloco de comandos para piscar o led. BLOCO DE INSTRUÇÕES A SEREM REPETIDAS;
output_high(pin_b0); //levanta o pino B0, liga o led;
delay_ms(tempo); //aguarda o valor da variável tempo;
output_low(pin_b0); //abaixa o pino B0, desliga o led;
delay_ms(tempo); //aguarda o valor da variável tempo;
output_high(pin_b2); //levanta o pino B2, liga o led; MEU TESTE
delay_ms(tempo2); //aguarda o valor da variável tempo2; MEU TESTE
output_low(pin_b2); //abaixa o pino B2, desliga o led; MEU TESTE
delay_ms(tempo2); //aguarda o valor da variável tempo2; MEU TESTE
} //***** fim do bloco de comando para piscar o led. BLOCO DE INSTRUÇÕES A SEREM REPETIDAS;
} //Fim do bloco de comandos da função principal;
//Exemplo 3: Como imaginei que funcionaria, mas apenas o LED do rb0 funciona corretamente;
#include <16f628a.h>
#use delay(clock=4000000)
#fuses INTRC_IO //Irá utilizar clock interno, e os 2 pinos do cristal ficarão disponiveis para Entrada e Saída;
#fuses NOWDT //Whatchdog interno, desabilitado;
#fuses PUT //Aguarda 72ms para estabiliar o circuito e então ligar o PIC;
#fuses BROWNOUT //Monitora se o circuito cair pra menos de 4.5v e resetar o PIC;
#fuses NOLVP //Não efetua gravação por baixa voltagem;
#fuses NOMCLR //Não habilita MASTER CLEAR MOCLR desabilitado, pode usar o PINO MCLR como Entrada e Saída;
void main() //Função principal (corpo principal do programa)
//main() //tambem funciona digitar o comando somente: main()
{ //início do bloco de comandos da função principal;
int tempo; //Variável tempo de 8 bitsl;
tempo = 100; //atribui o valor 100 à variável tempo;
// tambem pode ser escrito: "int tempo=100;"
int tempo2; // MEU TESTE
tempo2=250; // MEU TESTE
while(true) //se verdadeiro, fica repetindo, loop infinito. Declara que o bloco de comandos a ser iniciado abaixo, fica repetindo
{ //***** início do bloco de comandos para piscar o led. BLOCO DE INSTRUÇÕES A SEREM REPETIDAS;
output_high(pin_b0); //levanta o pino B0, liga o led;
delay_ms(tempo); //aguarda o valor da variável tempo;
output_low(pin_b0); //abaixa o pino B0, desliga o led;
delay_ms(tempo); //aguarda o valor da variável tempo;
} //***** fim do bloco de comando para piscar o led. BLOCO DE INSTRUÇÕES A SEREM REPETIDAS;
{ //***** início do SEGUNDO bloco de comandos para piscar o led do RB2. BLOCO DE INSTRUÇÕES A SEREM REPETIDAS; MEU TESTE
output_high(pin_b2); //levanta o pino B2, liga o led; MEU TESTE
delay_ms(tempo2); //aguarda o valor da variável tempo2; MEU TESTE
output_low(pin_b2); //abaixa o pino B2, desliga o led; MEU TESTE
delay_ms(tempo2); //aguarda o valor da variável tempo2; MEU TESTE
} //***** fim do SEGUNDO bloco de comando para piscar o led. BLOCO DE INSTRUÇÕES A SEREM REPETIDAS; MEU TESTE
} //Fim do bloco de comandos da função principal;
//Exemplo 4: outra tentativa de piscar o outro led;
#include <16f628a.h>
#use delay(clock=4000000)
#fuses INTRC_IO //Irá utilizar clock interno, e os 2 pinos do cristal ficarão disponiveis para Entrada e Saída;
#fuses NOWDT //Whatchdog interno, desabilitado;
#fuses PUT //Aguarda 72ms para estabiliar o circuito e então ligar o PIC;
#fuses BROWNOUT //Monitora se o circuito cair pra menos de 4.5v e resetar o PIC;
#fuses NOLVP //Não efetua gravação por baixa voltagem;
#fuses NOMCLR //Não habilita MASTER CLEAR MOCLR desabilitado, pode usar o PINO MCLR como Entrada e Saída;
void main() //Função principal (corpo principal do programa)
//main() //tambem funciona digitar o comando somente: main()
{ //início do bloco de comandos da função principal;
int tempo; //Variável tempo de 8 bitsl;
tempo = 100; //atribui o valor 100 à variável tempo;
// tambem pode ser escrito: "int tempo=100;"
int tempo2; // MEU TESTE
tempo2=250; // MEU TESTE
while(true) //se verdadeiro, fica repetindo, loop infinito. Declara que o bloco de comandos a ser iniciado abaixo, fica repetindo
{ //***** início do bloco de comandos para piscar o led. BLOCO DE INSTRUÇÕES A SEREM REPETIDAS;
output_high(pin_b0); //levanta o pino B0, liga o led;
delay_ms(tempo); //aguarda o valor da variável tempo;
output_low(pin_b0); //abaixa o pino B0, desliga o led;
delay_ms(tempo); //aguarda o valor da variável tempo;
} //***** fim do bloco de comando para piscar o led. BLOCO DE INSTRUÇÕES A SEREM REPETIDAS;
} //Fim do bloco de comandos da função principal;
void piscaled2() //Função piscaled2
//main() //tambem funciona digitar o comando somente: main()
{ //início do bloco de comandos da função principal;
int tempo2; //Variável tempo de 8 bitsl;
tempo = 250; //atribui o valor 100 à variável tempo2;
while(true) //se verdadeiro, fica repetindo, loop infinito. Declara que o bloco de comandos a ser iniciado abaixo, fica repetindo
{ //***** início do bloco de comandos para piscar o led. BLOCO DE INSTRUÇÕES A SEREM REPETIDAS;
output_high(pin_b2); //levanta o pino B2, liga o led;
delay_ms(tempo2); //aguarda o valor da variável tempo2;
output_low(pin_b2); //abaixa o pino B2, desliga o led;
delay_ms(tempo2); //aguarda o valor da variável tempo2;
} //***** fim do bloco de comando para piscar o led do portB, pino 2. BLOCO DE INSTRUÇÕES A SEREM REPETIDAS;
}
Onde está o meu erro, pois consigo compilar corretamente mas não consigo piscar 2 leds de forma independentes?