TODOPIC
Microcontroladores PIC => Lenguaje C para microcontroladores PIC => Mensaje iniciado por: fidodido18 en 30 de Marzo de 2009, 11:53:21
-
Hola a todos,
tengo una duda, respecto a la salida de un PIC 16f877a.
COmo todos saben el puerto C y D estan mezclados, y necesito que mi salida que es un numero de 12 bit salgan en orden por el puerto c y d.
Es decir:
PIN_D7: bit0
PIN_D6: bit1
PIN_D5: bit2
PIN_D4: bit3
PIN_C7: bit4
PIN_C6: bit5
PIN_C5: bit6
PIN_C4: bit7
PIN_D3: bit8
PIN_D2: bit9
PIN_D1: bit10
PIN_D0: bit11
el bit 12 siempre es tierra por eso lo omito, bueno mi pregunta es como configuro en este orden de salida, para que nada mas sea decir ouput_XYZ(el numero de 11 bit), si tengo alguna forma, es que no quiero que despues al hacer el impreso me quede todo en desorden, me imagino que mas de uno a tenido el problema.
Desde ya gracias!!
-
En que lenguaje C, de que empresa??
-
En que lenguaje C, de que empresa??
En CCS, solo que pense que todos los programas en C se manejan igual.
tengo una solucion vaga del problema, que es hacer un numero long (16 bit) y luego hacer un BIT_TEST de cada bit de la variable y si esta en 1 hacer un OUTPUT_HIGH del pin respectivo. Hasta ahora esa es mi solucion, sin embargo si hay otra mas facil seria de gran ayuda.
-
Una estructura serviria?
-
Por favor sé más específico, ¿cómo están declarados los bits? ¿Cómo tienes los datos de entrada?
-
Creo que una estructura o la asignacion de cada bit individual puede servir.
Podrias usar BIT
#bit V1 = datoOut1.0
#bit V2 = datoOut1.1
#bit V3 = datoOut1.2
#bit V4 = datoOut1.3
#bit V5 = datoOut1.4
#bit V6 = datoOut1.5
#bit V7 = datoOut1.6
#bit V8 = datoOut1.7
Eso lo uso yo, te permite enviar a un puerto los datos o bits ordenados como quieras...
-
Por favor sé más específico, ¿cómo están declarados los bits? ¿Cómo tienes los datos de entrada?
bueno gracias a todos por responder,
les explico mas detallado, yo tengo que manejar un pll de 11 bit, y quiero que salga del PIC un FLEX de datos en orden, pero utilizando el puerto c y d del pic 16f877a que estan en desorden, por consiguiente tengo que sacar por esos pines los numeros de 880 a 1039 (decimales) que si los pasan a binarios dan un maximo de 11 bit.
hasta ahora mi unica solucion es preguntar bit por bit de una variable tipo LONG (16 bit) y si el bit es 0 o 1 apago o enciendo el pin deseado, estoy buscando alguna opcion donde pueda manipular los pines de salida de un puerto y llamarlo puerto_XX, para solamente colocar output_puertoXX(880), por dar un ejemplo.