Autor Tema: se me cruzan los ojos, jajaaj  (Leído 4123 veces)

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

Desconectado Bruno Mafra

  • PIC10
  • *
  • Mensajes: 33
Re:se me cruzan los ojos, jajaaj
« Respuesta #15 en: 24 de Mayo de 2023, 05:31:49 »
PIC C compiler

 

* Captura de pantalla 2023-05-24 103114.png
(51.61 kB, 566x284 - visto 188 veces)
Bruno Mafra

Desconectado Bruno Mafra

  • PIC10
  • *
  • Mensajes: 33
Re:se me cruzan los ojos, jajaaj
« Respuesta #16 en: 24 de Mayo de 2023, 07:16:51 »
OK, finalmente he conseguido el efecto que queria, pero he tenido que usar la salida de otro puerto.(no se bien porque).

void main()
{
    set_tris_b(0xff);
    set_tris_d(0x00);
    output_d(0x00);
    set_tris_c(0x00);
    output_c(0x00);   
    while(1)
    {
                        if (input(pin_b0) == 1) //pulsante ha sido presionado
                {
                         
                         
                        while ((input(pin_b0) == 1)); // espero a que el usuario deje de presionar el pulsante
                        switch (contador)
                       
                        {
                                case 0: output_d(0b00000010);output_toggle(pin_c0); break;
                                case 1: output_d(0b00000100);output_toggle(pin_c0); break;
                                case 2: output_d(0b00001000);output_toggle(pin_c0); break;
                                case 3: output_d(0b00010000);output_toggle(pin_c0); break;
                                case 4: output_d(0b00100000);output_toggle(pin_c0); break;
                                case 5: output_d(0b01000000);output_toggle(pin_c0); break;
                                default:output_d(0b10000000);output_toggle(pin_c0); break;
                        }
                        contador++;
                       
                        if (contador > 0x06) contador = 0x00;
                       
                       
                }
       }
}
Bruno Mafra

Desconectado DominusDRR

  • PIC24H
  • ******
  • Mensajes: 1982
    • Sicoy
Re:se me cruzan los ojos, jajaaj
« Respuesta #17 en: 24 de Mayo de 2023, 10:04:43 »
PIC C compiler

  - Tienes que ingresar para ver archivos adjuntos -

Es lo que te dije, está claro, esas funciones no existen, y leyendo el manual, (algo que deberías hacer) las función pra poner en 1 lógico es output_high y para poner en cero lógico es output_low; es decir quedaría así:

Código: C
  1. case 0: output_low(pin_d7);output_high(pin_d1); break;
  2. case 1: output_low(pin_d1); output_high(pin_d2):break;
  3. case 2: output_low(pin_d2); output_high(pin_d3);break;
  4. case 3: output_low(pin_d3); output_high(pin_d4);break;
  5. case 4: output_low(pin_d4); output_high(pin_d5);break;
  6. case 5: output_low(pin_d5); output_high(pin_d6);break;
  7. default:output_low(pin_d6); output_high(pin_d7);


Tengo una idea algo difusa sobre MPLAB Harmony, XC32 con PIC32

Desconectado DominusDRR

  • PIC24H
  • ******
  • Mensajes: 1982
    • Sicoy
Re:se me cruzan los ojos, jajaaj
« Respuesta #18 en: 24 de Mayo de 2023, 10:17:06 »
OK, finalmente he conseguido el efecto que queria, pero he tenido que usar la salida de otro puerto.(no se bien porque).

void main()
{
    set_tris_b(0xff);
    set_tris_d(0x00);
    output_d(0x00);
    set_tris_c(0x00);
    output_c(0x00);   
    while(1)
    {
                        if (input(pin_b0) == 1) //pulsante ha sido presionado
                {
                         
                         
                        while ((input(pin_b0) == 1)); // espero a que el usuario deje de presionar el pulsante
                        switch (contador)
                       
                        {
                                case 0: output_d(0b00000010);output_toggle(pin_c0); break;
                                case 1: output_d(0b00000100);output_toggle(pin_c0); break;
                                case 2: output_d(0b00001000);output_toggle(pin_c0); break;
                                case 3: output_d(0b00010000);output_toggle(pin_c0); break;
                                case 4: output_d(0b00100000);output_toggle(pin_c0); break;
                                case 5: output_d(0b01000000);output_toggle(pin_c0); break;
                                default:output_d(0b10000000);output_toggle(pin_c0); break;
                        }
                        contador++;
                       
                        if (contador > 0x06) contador = 0x00;
                       
                       
                }
       }
}

No me parece un código optimizado, output_toggle lo usas a cada rato similar al código original que tenía muchos delayMS(500), cuando puedes tener uno solo.
Si deseas usarlo deberías hacerlo así:


Código: C
  1. switch (contador)
  2. {
  3.               case 0: output_d(0b00000010); break;
  4.                                 case 1: output_d(0b00000100); break;
  5.                                 case 2: output_d(0b00001000); break;
  6.                                 case 3: output_d(0b00010000); break;
  7.                                 case 4: output_d(0b00100000); break;
  8.                                 case 5: output_d(0b01000000); break;
  9.                                 default:output_d(0b10000000); break;
  10.                         }
  11.                         output_toggle(pin_c0);
  12.                         contador++;

Otro consejo, vi que usas el proteus para simular tu hardware, podrías usarlo para depurar (debugging) y podrías ir paso a paso en tu código y ver hasta donde llega.

Tengo una idea algo difusa sobre MPLAB Harmony, XC32 con PIC32

Desconectado Bruno Mafra

  • PIC10
  • *
  • Mensajes: 33
Re:se me cruzan los ojos, jajaaj
« Respuesta #19 en: 24 de Mayo de 2023, 10:59:17 »
Gracias. Todo ayuda, tan solo hace 4 dias que empecé a "estudiar" lenguaje C para PICs. Youtube, libros que me habéis recomendado y otros que busco yo.
Estoy seguro del largo camino que me queda adelante, por eso les agradezco a cada uno la paciencia y las ayudas de cada dia.

Sois los mejores ((:-))
Bruno Mafra