TODOPIC

Microcontroladores PIC => Lenguaje C para microcontroladores PIC => Mensaje iniciado por: micronet3 en 27 de Abril de 2010, 20:03:27

Título: crear un registro de 18 bits con con los pines del puerto b y el puerto c
Publicado 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


 
Título: Re: crear un registro de 18 bits con con los pines del puerto b y el puerto c
Publicado por: KALLITOS en 27 de Abril de 2010, 20:25:10
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
Título: Re: crear un registro de 18 bits con con los pines del puerto b y el puerto c
Publicado por: micronet3 en 27 de Abril de 2010, 20:47:33
gracias amigo, entonces esto quedaria asi.

int16 registro;
registro=make16(portc,portb);
Título: Re: crear un registro de 18 bits con con los pines del puerto b y el puerto c
Publicado por: KALLITOS en 27 de Abril de 2010, 21:03:38
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
Título: Re: crear un registro de 18 bits con con los pines del puerto b y el puerto c
Publicado por: bigluis en 09 de Mayo de 2010, 00:26:07
si no me equivoco lo que KALLITOS quiso decir es lo siguiente

Código: [Seleccionar]
registro=make16(input_c(),input_b());
de lo contrario corrijanme.
Título: Re: crear un registro de 18 bits con con los pines del puerto b y el puerto c
Publicado por: gera en 09 de Mayo de 2010, 01:12:57
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!!
Título: Re: crear un registro de 18 bits con con los pines del puerto b y el puerto c
Publicado por: Nocturno en 09 de Mayo de 2010, 01:49:51
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.