ME CONFIESO... Estudié electrónica, nunca me interesaron los circuitos digitales y trabajo es con energía.
Tengo unos meses estudiando microntroladores por mi cuenta y me puse a programalos en C a través de Mikroc y simulo con Proteus... AL MONTARLO EN PROTOBOARD no se comportó como en el Isis
Por ej: en Isis funciona cambiar el estado de un led mediante un pulsador... en protoboard si presiono RB0 RD2 cambia de 0 a 1, no cambia de 1 a 0, luego si presiono RB1 RD3 hace lo mismo pero se apaga RD2, si presiono 2 pulsadores a las vez solo responde uno de los leds.
Supongo q me falta declarar interrupciones y/o registros especiales...
Agradecería a quien pueda orientarme...
anexo alguno de mis código y el fichero de simulación:
//Cambiar estado de un led mediante un pulsador...
//... si el ledx está en 0 cambia a 1 viceversa
//PIC16F917 a 8MHz de oscilador interno
void main(void)
{
ANSEL=0;
INTCON=0;
TRISB=0b11111111; //Los 0 son salida y los 1 son entradas
TRISC=0b00000000; //Las terminales inician en 0
TRISD=0b11000000;
PORTB=0b11111111;
PORTC=0b00000000;
PORTD=0b11000000;
while(1)
{
if(PORTB.F0==0){ //Si se pulsa RB0, cambiará de estado RD2
if(PORTD.F2==0)
PORTD.F2=1;
else
PORTD.F2=0;
while(PORTB.F0==0);}
if(PORTB.F1==0){
if(PORTD.F3==0)
PORTD.F3=1;
else
PORTD.F3=0;
while(PORTB.F1==0);}
if(PORTB.F2==0){
if(PORTC.F4==0)
PORTC.F4=1;
else
PORTC.F4=0;
while(PORTB.F2==0);}
}
}
Tengo unos meses estudiando microntroladores por mi cuenta y me puse a programalos en C a través de Mikroc y simulo con Proteus... AL MONTARLO EN PROTOBOARD no se comportó como en el Isis
Por ej: en Isis funciona cambiar el estado de un led mediante un pulsador... en protoboard si presiono RB0 RD2 cambia de 0 a 1, no cambia de 1 a 0, luego si presiono RB1 RD3 hace lo mismo pero se apaga RD2, si presiono 2 pulsadores a las vez solo responde uno de los leds.
Supongo q me falta declarar interrupciones y/o registros especiales...
Agradecería a quien pueda orientarme...
anexo alguno de mis código y el fichero de simulación:
//Cambiar estado de un led mediante un pulsador...
//... si el ledx está en 0 cambia a 1 viceversa
//PIC16F917 a 8MHz de oscilador interno
void main(void)
{
ANSEL=0;
INTCON=0;
TRISB=0b11111111; //Los 0 son salida y los 1 son entradas
TRISC=0b00000000; //Las terminales inician en 0
TRISD=0b11000000;
PORTB=0b11111111;
PORTC=0b00000000;
PORTD=0b11000000;
while(1)
{
if(PORTB.F0==0){ //Si se pulsa RB0, cambiará de estado RD2
if(PORTD.F2==0)
PORTD.F2=1;
else
PORTD.F2=0;
while(PORTB.F0==0);}
if(PORTB.F1==0){
if(PORTD.F3==0)
PORTD.F3=1;
else
PORTD.F3=0;
while(PORTB.F1==0);}
if(PORTB.F2==0){
if(PORTC.F4==0)
PORTC.F4=1;
else
PORTC.F4=0;
while(PORTB.F2==0);}
}
}
Adjuntos
Última edición: