Oye puedes decirme como hacerlo en picBasic es que ese programa ya lo tengo instalado en mi maquina y he estado trabajándolo junto con visual basic, trate de hacer el programa pero creo que necesito un archivo extra porque solo puedo trabajar con el pic 18f4550 y no aparece otro y que compilador debo elegir??
La operación Xor me refería a la instrucción
command = command ^ %01111111111111 ; invierte el estado del bit 0 de B0
endif
Según yo cuando colocas "^" es porque quieres aplicar la operación XOR, pero puedo equivocarme. Esta instrucción no la comprendo del todo, porque hacerla?que función tiene?
y si no la hago tendrá alguna consecuencia?
El código que pase EN Mplab utilizando el compilador ccs es el siguiente.
Me basé en tu lógica o en la parte de programa que pusiste anteriormente.
Bueno hasta aqui mis problemas espero y puedas ayudarme o seguir aconsejándome como loCódigo:struct empaquetado { ///Todo esto es para tratar de hacer lo mismo que tu unsigned int bit0:1; /// con la variable comando, creo una estructura unsigned int bit1:1; /// empaquetado con 14 variables las cuales unsigned int bit2:1; /// corresponden a cada bit de la señal del control unsigned int bit3:1; unsigned int bit4:1; unsigned int bit5:1; unsigned int bit6:1; unsigned int bit7:1; unsigned int bit8:1; unsigned int bit9:1; unsigned int bit10:1; unsigned int bit11:1; unsigned int bit12:1; unsigned int bit13:1; } paquete; ///////////////////////////Dentro de la funcion principal tengo el sig. codigo basado en el tuyo Senal: //Etiqueta del goto paquete = 0; //Todas las variables de la estructura a cero if (!input(IR_RECEPTOR)) // Pregunto si la entrada del pin es cero { paquete.bit13=1; // Pongo el bit13=1,,para acceder a cada bit de la // estructura debo poner paquete.bitx= delay_us(1330); //primer pausa para ke kede en medio del sig bit if(paquete.bit13) //segun yo el valor es 1330 en el retardo y no 2066 { codigo(); //función donde pregunto por los demás bits } ///////////////////////////////Función código //Esta parte del código va checando la trama mandada por el control de tal forma que checa cada bit de // la trama compuesta por 14 bits, los retardos son los adecuados para que separe a cada bit // si al checar cae en un uno es porque es un uno y en caso contrario si cae en un cero corresponde a un cero, en esto según yo como estoy tomando la salida de un receptor donde // la señal de salida siempre sera un uno al recibir la señal de control se hace cero // y obtendremos una señal invertida de como la muestran normalmente ///////////////////////////////////////////////////////////////////////////////////////////////// // int codigo() { if (input(IR_RECEPTOR)){ paquete.bit12 = 1;}//Asigno valor a cada bit dependiendo de la else{ paquete.bit12 = 0;}// entrada delay_us(pausa); if (input(IR_RECEPTOR)){ paquete.bit11 = 1;} else{ paquete.bit11 = 0;} delay_us(pausa) ; if (input(IR_RECEPTOR)){ paquete.bit10 = 1;} else{ paquete.bit10 = 0;} delay_us(pausa); if (input(IR_RECEPTOR)){ paquete.bit9 = 1;} else{ paquete.bit9 = 0 ;} delay_us(pausa); if (input(IR_RECEPTOR)){ paquete.bit8 = 1;} else { paquete.bit8 = 0;} delay_us(pausa); if (input(IR_RECEPTOR)){ paquete.bit7 = 1;} else { paquete.bit7 = 0;} delay_us( pausa) ; if (input(IR_RECEPTOR)){ paquete.bit6 = 1;} else{ paquete.bit6 = 0;} delay_us (pausa ); if (input(IR_RECEPTOR)){ paquete.bit5 = 1;} else { paquete.bit5 = 0;} delay_us( pausa ); if (input(IR_RECEPTOR)){ paquete.bit4 = 1;} else { paquete.bit4 = 0;} delay_us( pausa ); if (input(IR_RECEPTOR)){ paquete.bit3 = 1;} else{ paquete.bit3 = 0;} delay_us( pausa ); if (input(IR_RECEPTOR)){ paquete.bit2 = 1;} else { paquete.bit2 = 0;} delay_us( pausa ); if (input(IR_RECEPTOR)){ paquete.bit1 = 1;} else { paquete.bit1 = 0;} delay_us (pausa) ; if (input(IR_RECEPTOR)){ paquete.bit0 = 1;} else { paquete.bit0 = 0; } ///////////En esta parte no se como hacer la operacion que hiciste la de invertir los bits /////lo puedo hacer uno por uno pero es muy largo if (paquete.bit12) ;//Si la señal viene invertida la arregla if (paquete.bit13){ paquete.bit13 = 0;}//Por ejemplo para invertir el estado del bi13 else{ paquete.bit13 = 1;}//pregunto si es uno si es cierto lo pongo a // cero y si es cero lo pongo a uno y asi para // todos los bits bit12,bit11,bit10,....bit0 // Depués regresaríamos a donde fue llamada la función tecla y en ese espacio checaría los // últimos bits para saber la tecla que fue presionada y hacer algo por ejemplo mostrarlo en // el lcd prender un led con el peso correspondiente a la tecla o activar un motor,etc.
has hecho, esperando que comprendas lo que trato de hacer en mi código y las explicaciones que en el doy. Sin nada mas me despido
Perdóname, ni me acuerdo porque puse esa operación OR.
El otro día revisando el código, me preguntaba; ¿para que puse eso?
Última edición por un moderador: