TODOPIC
Microcontroladores PIC => Lenguaje C para microcontroladores PIC => Mensaje iniciado por: Sir_Egnos en 29 de Julio de 2009, 14:52:30
-
Bien, tengo una nueva duda y os la expongo para que como de constumbre me ayudeis.
Si creo una variable llamada mapa_lcd que es de un byte, yo se que con bit_set y bit_clear puedo acceder a un bit de esa variable para ponerlo a 0 o a 1. Pero como se haria para definir un nombre y que remita directamente a ese bit.
Yo hice una cosa asi :
#Define X1 mapa_lcd.1
creo la variable mapa_lcd como int.
Obviamente cuando hago un bit_set(X1); no da error pero no hace lo que yo quiero. Se que mi error esta en el concepto.
Alguien me podria decir como se haria correctamente esto que deseo hacer?
-
Viene en la ayuda de CCS C #BIT
Syntaxos:
#bit id = x.y
Elementos:
id es un identificador valido en C <---- Esto seria el nombre que tu asignes , supongo que al referirse valido no se renombre con alguno existente
x es una constante o variable del C <--- Es tu Variable que en este caso lo llamas "mapa_lcd"
y es una constante de 0-7 <--- El bit a trabajar
Viene este ejemplo
int result; // <-- La Variable o constante
#bit result_odd = result.0 // result_odd es el identificador(le llamaré label xD) y asignas igualdad al bit 0 de la variable/constante result
...
if (result_odd) // y Pues aqui preguntan si el bit 0 de la variable/constante result es 1
Pero xD me quedo aqui porque no le entiendo bien y pues también me servirá.
Int mapa_lcd;
#BIT x1 = mapa_lcd.1 // refiriendome al bit 1
y aplicandolo sería
x1=1 // bit 1 del byte mapa_lcd es puesto a 1
¿esto es correcto?
-
la idea si, lo voy a compilar a ver si funciona como quiero.
Gracias.
P.d. Mi ingles es malisimo y hay veces que no comprendo bien el manual de ccs. Gracias por vuestra paciencia.
-
Si es lo que queria, pero no me compilaba por que hay que definir la variable y justo despues poner los #BIT , sino me da que hay que decirle en la posicion de memoria en la que esta. Vuelvo a decir que mi eingles es malisimo pero es lo que entiendo del manual.
Gracias de nuevo.
El ejemplo que compilo bien :
int salidas_accel;
#BIT X1 = salidas_accel.0
#BIT X10= salidas_accel.1
#BIT x100=salidas_accel.2
Luego ya puedo utilizar el output_high,low,togle que es lo que queria.
-
P.d. Mi ingles es malisimo y hay veces que no comprendo bien el manual de ccs. Gracias por vuestra paciencia.
descargate este (http://www.4shared.com/file/111113641/5a2c63a2/Manual_Compilador_C_Para_PICs.html) pdf, es la misma ayuda de ccs pero en español
saludos
-
Gracias jhozate.
-
Probe el ejemplito y funciona
char leds;
#bit led1 = leds.1
-
Si, si le dices led1 = 1; va ok, pero si le dices output_high(led1) no da error pero no lo activa.