Autor Tema: Migrar instruccion "output bit" de C a Mikrobasic.  (Leído 2306 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado js401721@gmail.com

  • PIC10
  • *
  • Mensajes: 2
Migrar instruccion "output bit" de C a Mikrobasic.
« en: 18 de Febrero de 2020, 14:38:26 »
Buen dia amigos soy nuevo en foro, quisiera hacerles una consulta, resulta que estoy realizando un proyecto en mikrobasic para el corrimiento de led usando un pic 16f628a y el registro de desplazamiento 74hc164, el problema es que no encuentro como comparar 2 bytes y que el resultado de cada comparacion con la mascara 0 o 1 salga por una salida del puertoX, he estado investigando y encontre una instruccion "output bit" en leguaje C, lo que entendi es que esta instruccion funciona como una compuerta and y el resultado 0 o 1 lo manda al puerto, la pregunta es como migrar esta intruccion del C. A Mikrobasic, gracias.

Desconectado elreypic2

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1297
Re:Migrar instruccion "output bit" de C a Mikrobasic.
« Respuesta #1 en: 18 de Febrero de 2020, 15:31:45 »
Creo entender que te refieres a lenguaje C de CCS, correcto?
Si es así, entonces output_bit(pin,value) es una función de CCS que no pertenece al ansi C.
Esa función simplemente lo que hace es colocar en lato o en bajo el pin de cualquier puerto. POr lo tanto una equivalencia en MikroC podría ser simplemente accesando al nombre del bit en particular.
Supongamos que el pin en cuestion es el pin 0 del puerto B.

Entonces en CCS sería:

Código: [Seleccionar]
output_bit(PIN_B0,0);       //Coloca un 0 en el pin 0 del puerto B
output_bit(PIN_B0,1);       //Coloca un 1 en el pin 0 del puerto B

En MikroC sería:

Código: [Seleccionar]
RB0_bit = 0;   //Coloca un 0 en el pin 0 del puerto B
RBO_bit = 1;  //Coloca un 1 en el pin 0 del pierto B

Así de simple.

elreypic.

Desconectado js401721@gmail.com

  • PIC10
  • *
  • Mensajes: 2
Re:Migrar instruccion "output bit" de C a Mikrobasic.
« Respuesta #2 en: 18 de Febrero de 2020, 16:19:39 »
Gracias, siendo asi es corecto esto ya que lo que busco es hacer una mascara y que el resultado de la operacion and salga por el puerto rb0, lo voy a poner en basic;
Dato1=%01010101
Const mascara as byte (8)=(1,2,4,8,16,32,64,128)
For i=0 to 7
Portb.0 = (dato1 AND mascara <<i)
Next i
End
///\\\\ la idea es que el valor de dato1 salga de forma serial por el puero rb0 y lo represente de forma paralela con el registro de desplazamiento 74hc164.


Desconectado elreypic2

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1297
Re:Migrar instruccion "output bit" de C a Mikrobasic.
« Respuesta #3 en: 18 de Febrero de 2020, 18:56:54 »
Eso que intentas hacer no es posible de esa manera, porque lo que estás haciendo es asignar completamente un byte (8 bits) a un solo bit.

Creo que sería mucho más fácil si solo realizas el corrimiento a la izquierda o derecha dependiedno de cual bit necesites sacar primero.
A la ziquierda si quieres el el MSB salga primero o a la derecha si quieres que el LSB salga primero.
Según tu ejemplo pareciera que quieres sacar primeramente el MSB, por lo que pudieras hacer esto:

Código: [Seleccionar]
Dato1 = %01010101
Dato1 = Dato1<<1
If STATUS.0 = 0 Then            'Shifted bit is in Carry Bit of Status Register
    Portb.0 = 1           'Put bit data on output
Else
    Portb.0 = 0
End If

elreypic.

« Última modificación: 18 de Febrero de 2020, 19:37:12 por elreypic2 »