TODOPIC
Microcontroladores PIC => Lenguaje C para microcontroladores PIC => Mensaje iniciado por: micronet3 en 27 de Abril de 2010, 20:03:27
-
hola, una consulta, estoy intentando crear un unico registro que agrupe a los pines del puerto b y el puerto c.
por ejemplo
registro_nuevo[0]=1 //esto representaria al pin b0 del puerto b
registro_nuevo[15]=0 // esto representaria al pin c7 del puerto c
hasta ahora no encuentro la manera de formar este nuevo registros, tienen ustedes alguna idea con la cual pueda guiarme
gracias y saludos
-
En la ayuda de CCS viene lo siguiente, espero sea lo que buscas.
make16( )
--------------------------------------------------------------------------------
Syntax:
i16 = MAKE16(varhigh, varlow)
Parameters:
varhigh and varlow are 8 bit integers.
Returns:
A 16 bit integer
Function:
Makes a 16 bit number out of two 8 bit numbers. If either parameter is 16 or 32 bits only the lsb is used. Same as: i16 = (int16)(varhigh&0xff)*0x100+(varlow&0xff) except it is done with two byte moves.
Availability:
All devices
Requires:
Nothing
Examples:
long x;
int hi,lo;
x = make16(hi,lo);
Saludos
-
gracias amigo, entonces esto quedaria asi.
int16 registro;
registro=make16(portc,portb);
-
En la ayuda de CCS viene lo siguiente, espero sea lo que buscas.
input_x( )
--------------------------------------------------------------------------------
Syntax:
value = input_a()
value = input_b()
value = input_c()
value = input_d()
value = input_e()
value = input_f()
value = input_g()
value = input_h()
value = input_j()
value = input_k()
Parameters:
None
Returns:
An 8 bit int representing the port input data.
Function:
Inputs an entire byte from a port. The direction register is changed in accordance with the last specified #USE *_IO directive. By default with standard I/O before the input is done the data direction is set to input.
Availability:
All devices.
Requires:
Nothing
Examples:
data = input_b();
Saludos
-
si no me equivoco lo que KALLITOS quiso decir es lo siguiente
registro=make16(input_c(),input_b());
de lo contrario corrijanme.
-
Estas en lo correcto :wink:
Se puede hacer como dijiste vos
registro=make16(portc,portb);
pero previamente hay q hacer unas definiciones indicando la direccion de memoria del puerto b y c.. a la larga es mas facil como dice KALLITOS.
saludos!!
-
Pero hay algo que no entiendo; estás pidiendo un registro de 18 bits, y con la suma de dos puertos llegas como mucho a 16.