TODOPIC
Microcontroladores PIC => Lenguaje C para microcontroladores PIC => Mensaje iniciado por: miked en 22 de Noviembre de 2011, 17:48:21
-
Hola buenas a todos, acabo de registrarme en este foro del que estoy aprendiendo mucho.
me he iniciado en esto de los Microcontroladores hace apenas 3 dias, todo lo que e aprendido lo e aprendido aqui.
Mi problema es qye kiero crear un programa para que al darle al PULSADOR se me enciada en led y al darle otra vez se apague.
e probado con esto
int cont;
void main(){
trisb=0x00;
trisc=0x01;
portb=0x00;
cont=0;
while(1){ //bucle...
if(portc=1||cont=1); //si pulsamos o el contador tiene un 1 el led se activa
{
portb=1;
delay_ms(100);
cont=cont+1;
}
if(cont>1); //si en contador de vuelve a poner a >1 se reinicializa a 0
{
cont=0;
}
}
Muchas gracias por vuestro tiempo y espero apernder mucho con vosotros
-
tienes varias cosas mal
seria if(portc==1||cont==1), si pones un = lo que haces es asignar ese valor, no compararlo. Ademas seria PORTC.RC0, RC1... debes elegir que PIN es el que tiene el pulsador.
al poner PORTB=1 asignas 1 a los 8 bits, en este caso seria el RB0, pero te recomiendo que pongas PORTB.RB0 para que asi te sea mas facil entenderlo, cada puerto son 8 pines para que asi lo entiendas mejor, no por ello todos los puertos tienen 8 pines, pero es una buena costumbre que lo hagas asi.
Si lo que quieres es que con 1 pulsacion se encienda y 1 se apague lo puedes hacer de esta manera
if(PORTC.RC0) {
PORTB.RB0=!PORTB.RB0;
delay_ms(100);
}
-
En mikroC el bit o pin se asigna por Fx, por ejemplo PORTB.F0 sería RB0, etc. Podes buscar los manuales que hay en la pagina de mikroelectronica, son bastante completo ;-)
Saludos!
-
Muchas gracias de nuevo.
me quito muchas dudas ver tu ejemplo.
solo tengo una pregunta mas
if(PORTC.RC0) diciendo esto el programa ya comprende que es cuando le mande un 1 al pin 0 de rc?
gracias suky buscare ahora!
-
si, si no pones nada, de ==, >, <.... es cualquier numero distinto de 0, si pones !PORTC.RC0 es lo inverso, es decir, si es 0 seria verdadero, si es un numero distinto de 0 seria falso.