TODOPIC
Microcontroladores PIC => Lenguaje C para microcontroladores PIC => Mensaje iniciado por: PICNASIO en 29 de Enero de 2020, 23:39:37
-
Hola a todos. Alguien sabe como puedo activar los pines de mis salidas uno por uno con un ciclo for?
int8 a=1;
int8 x;
for(x=0;x<a;x++)
{
output_high(pin_ba);
}
delay_ms(500);
me sale error ya que no existe pin_b
-
int8 x;
for(x=1;x!=0;x<<=1)
{
output_b(x);
delay_ms(500);
}
Espero que funcione
-
Si llegara a ser necesario un barrido continuo es mas negocio usar rotate_left/right
int8 port = 1 ;
#byte port = getenv("SFR:PORTB")
void main(void)
{
set_tris_b(0) ;
while(1){
delay_ms(500) ;
rotate_left(&port,1) ;
}
-
¿Pero no lo estarias haciendo una sola ves con el while(1)?, ya que una vez que quede en 0x80, pasaria a 0x00. Me parece un poco raro que mantenga el bit del carry que queda.
-
Eso pasaría si fuera desplazamiento (shift_left/right) , pero al ser rotación de 0x80 pasa a 0x01.
En el código assembler generado, hace:
RLF 06,W ; El MSB va al carry
RLF 06,F ; Rota incluyendo el carry, que tiene el MSB