fbpx

Expresate

Si además quieres enviarnos un Artículo para el Blog y redes sociales, pulsa el siguiente botón:

Dudas sobre algunos...
 
Avisos
Vaciar todo

Dudas sobre algunos puntos en CCS

13 Respuestas
5 Usuarios
0 Reactions
5,935 Visitas
picodestroyer
Respuestas: 6
Topic starter
(@picodestroyer)
Active Member
Registrado: hace 16 años

Hola a todos , soy nuevo en esto de la robotica y tengo una par de dudas sobre el lenguaje de programacion c en el compilador CCS. Bien me descarge este codigo en CCS para mirar como funcionaba#FUSES NOBROWNOUT //No brownout reset
#FUSES NOMCLR //Master Clear pin used for I/O
#FUSES NOLVP //No low voltage prgming, B3(PIC16) or B5(PIC18) used for I/O
#FUSES NOCPD //No EE protection

#use delay(clock=4000000)

#byte puerto_b = 06

void main( void )
{

set_tris_b( 0x01 ); // RB0 como entrada y lo demás del puerto B como salida
puerto_b = 0; // Limpia puerto B

DO{
if (!input (PIN_B0)){ // Si se presiona RB0
bit_set( puerto_b, 1 ); // enciende led conectado a RB2
}
else{ // Si no se presiona RB0
bit_clear( puerto_b, 1 ); // apaga led conectado a RB2
}
} while ( TRUE );
}

Pero la parte donde configura los puertos , el set_tris_b no entiendo como le indica que puertos son entrada y como salida a partir del numero hexadecimal.
Otra duda que me ronda la cabeza es la parte del if en la de bit_set en esa parte no entiendo absolutamente nada no se que le esta pasando, ni se porque al principio iguala el puerto_b a 0.

Muchas gracias por todo, la verdad es que me esta encantando esto de la robotica

Responder
12 respuestas
boops
Respuestas: 1813
(@boops)
Ardero
Registrado: hace 19 años

set_tris_b( 0x01 ); // RB0 como entrada y lo demás del puerto B como salida

En binario "00000001" Los ceros son salida los 1 entrada empezando por RBO.

Lo de id es facil si la entrada vale 0 enciende el led y si vale 1 lo apaga.

El poner todo el puerto a 0 es para asegurarse de que no este nada encendido al empezar.

Responder
picodestroyer
Respuestas: 6
Topic starter
(@picodestroyer)
Active Member
Registrado: hace 16 años

Entonces si en vez de poner el numero del puerto en hexadecimal lo pongo en binario no pasa nada no?

La otra pregunta es referente a esta linea de codigo

bit_set( puerto_b, 1 ); // enciende led conectado a RB2

el bit_set que hace? porque primero pone todo el puerto a 0 mediante puerto_b y luego pone a 1 el puerto? puede ser eso?

y ya por acabar alguien tiene una lista de los fuses y su funcion?

Responder
boops
Respuestas: 1813
(@boops)
Ardero
Registrado: hace 19 años

picodestroyer, Los fuses dependen de cada pic y vienen completo en el include del pic (archivo.h)

bit_set() se usa para activar un solo pin del puerto sin afectar a los demás.

bit_clear() es lo mismo pero para poner a 0.

Si, puedes poner en binario con la siguiente notación:

0b00000001

Responder
urriellu
Respuestas: 61
(@urriellu)
Trusted Member
Registrado: hace 18 años

Entonces si en vez de poner el numero del puerto en hexadecimal lo pongo en binario no pasa nada no?

Si es el mismo número, da igual que lo pongas en binario, decimal, hexadecimal, octal o el sistema de numeración que quieras.
La otra pregunta es referente a esta linea de codigo

bit_set( puerto_b, 1 ); // enciende led conectado a RB2

el bit_set que hace? porque primero pone todo el puerto a 0 mediante puerto_b y luego pone a 1 el puerto? puede ser eso?

Pone a "1" (que es lo que se llama "set") el bit nº1 (el 2º parámetro de la función) de la variable "puerto_b".

Para saber qué son las funciones internas de CCS lo mejor es mirarlo en el manual oficial: http://www.ccsinfo.com/downloads/ccs_c_manual.pdf

y ya por acabar alguien tiene una lista de los fuses y su funcion?

En el manual de CCS tienes la lista de todos los fuses que hay. Pero ojo, no todos los que hay tienes que especificarlos siempre, sino que debes saber los que tu modelo de microcontrolador utiliza, y eso lo puedes ver en la sección "Configuration Bits" del datasheet del microcontrolador.

Responder
Página 1 / 3
Compartir: