Sari la conținut
ELFORUM - Forumul electronistilor

The_Reaper

Membru
  • Număr conținut

    482
  • Înregistrat

  • Ultima Vizită

Postări postat de The_Reaper

  1. Eu  folosesc o betoniera Limex de vreo 6 ani, e modelul de 190 de litri, merge perfect si acum. Coroana este tot din fonta dar  si la mine este  putin stramba. Eu am cumparat-o gata asamblata, cuva este dintr-o bucata, motorul n-am observat sa se incalzeasca, dar nici nu l-am controlat.

  2. Salutare,  daca  mai citeste cineva topicul, am si eu o intrebare. Am facut urmatorul joc de lumini, am mai modificat eu efectele si nu functioneaza cum trebuie programul, nu reia jocul numarul 1 se blocheaza la un efect si il ruleaza doar pe ala. Cum fac sa ruleze doar jocul numarul 1?

     

    #define BUTON   RA0_bit
    #define INPUT   1
    #define OUTPUT  0

    #define APASAT  0

    #define NR_JOCURI    4

    unsigned int  i = 0 ;

    //Timer0
    //Prescaler 1:4; TMR0 Preload = 6; Actual Interrupt Time : 1 ms
    void InitTimer0(){
      OPTION_REG = 0x81;
      TMR0 = 6;
      INTCON = 0xA0;
    }

    void init_sys(){
      CMCON = 0x07;        // To turn off comparators
      VREN_bit = 0;        // Disable voltage reference

      TRISB = 0b00000000;  // portul B este numai IESIRI
      PORTB = 0b00000000;  // se porneste cu toti pinii port B in stare LOW

      TRISA0_bit = INPUT;  // RA0 este intrare digitala - asigura-te ca ai un rezistor de pull-up connectat de pe pin catre VCC
    }

    void Interrupt(){
      static unsigned char counter = 0;
      static unsigned char ultima_apasare_reala = 0;

      if (TMR0IF_bit){
        TMR0IF_bit = 0;
        TMR0 = 6;

        // daca chiar si numai odata butonul nu este apasat atunci
        // ori avem bouncing ori butonul nu mai este apasat asadar in 'else' facem variabila counter = 0
       if (BUTON == APASAT){
          counter++;
          /* Daca var. counter ajunge la 10 atunci au trecut 10ms cu butonul apasat,
            deci suntem siguri ca avem o apasare reala
          */
          if (counter >= 10){
            counter = 0;
            if (ultima_apasare_reala == 0){
              // i este un contor care numara circular la fiecare apasare reala pana la NR_JOCURI
              // daca NR_JOCURI este 4 ca in cazul curent atunci variabila i va lua valorile: 0,1,2,,3,0,1,2,3 samd
              if (i >= NR_JOCURI-1) i = 0;
              else i++;
              ultima_apasare_reala = 1;
            }
          }
        }
        else {
          counter = 0;
          ultima_apasare_reala = 0;
        }
      }
    }

    void joc_lumini_1(){
      /* Aici vom avea definit jocul de lumini nr 0
      */
        int j;

          for (j = 0; j < 8; j++){
        PORTB = (1 << j);
        delay_ms(50);
      }
      for (j = 7; j >= 0; j--){
        PORTB = (1 << j);
        delay_ms(50);
       }
      PORTB = 0xCC;
      delay_ms(300);
      PORTB = 0x33;
      delay_ms(300);
      PORTB = 0x55;
      delay_ms(300);
      PORTB = 0xAA;
      delay_ms(300);
      PORTB = 0x55;
      delay_ms(300);
      PORTB = 0xAA;
      delay_ms(300);
      PORTB = 0xCC;
      delay_ms(300);
      PORTB = 0x33;
      delay_ms(300);
      for (j = 0; j < 8; j++){
        PORTB = (1 << j);
        delay_ms(50);
      }
      for (j = 7; j >= 0; j--){
        PORTB = (1 << j);
        delay_ms(50);
       }


      PORTB = 0xF0;
      delay_ms(500);
      PORTB = 0x0F;
      delay_ms(500);
      PORTB = 0x99;
      delay_ms(500);
      PORTB = 0x66;
      delay_ms(500);
      PORTB = 0x99;
      delay_ms(500);
      PORTB = 0x66;
      delay_ms(500);

      PORTB = 0x80;
      delay_ms(100);
      PORTB = 0xC0;
      delay_ms(100);
      PORTB = 0xE0;
      delay_ms(100);
      PORTB = 0xF0;
      delay_ms(100);
      PORTB = 0xF8;
      delay_ms(100);
      PORTB = 0xFC;
      delay_ms(100);
      PORTB = 0xFE;
      delay_ms(100);
      PORTB = 0xFF;
      delay_ms(100);
                     for (j = 0; j < 8; j++){
        PORTB = (1 << j);
        delay_ms(50);
      }
      for (j = 7; j >= 0; j--){
        PORTB = (1 << j);
        delay_ms(50);
       }
    }

    void joc_lumini_2(){
      /* Aici vom avea definit jocul de lumini nr 1
      */

    PORTB = 0x80;
      delay_ms(100);
      PORTB = 0xC0;
      delay_ms(100);
      PORTB = 0xE0;
      delay_ms(100);
      PORTB = 0xF0;
      delay_ms(100);
      PORTB = 0xF8;
      delay_ms(100);
      PORTB = 0xFC;
      delay_ms(100);
      PORTB = 0xFE;
      delay_ms(100);
      PORTB = 0xFF;
      delay_ms(100);

    }

    void joc_lumini_3(){
      /* Aici vom avea definit jocul de lumini nr 2
      */
      int j;

      for (j = 0; j < 8; j++){
        PORTB = (1 << j);
        delay_ms(50);
      }
      for (j = 7; j >= 0; j--){
        PORTB = (1 << j);
        delay_ms(50);
       }
        for (j = 0; j < 8; j++){
        PORTB = (1 << j);
        delay_ms(1000);
      }
      for (j = 7; j >= 0; j--){
        PORTB = (1 << j);
        delay_ms(1000);
      }
    }
    void void joc_lumini_4() {
      /* Aici vom avea definit jocul de lumini nr 3
      */

         PORTB = 0x80;
      delay_ms(100);
      PORTB = 0xC0;
      delay_ms(100);
      PORTB = 0xE0;
      delay_ms(100);
      PORTB = 0xF0;
      delay_ms(100);
      PORTB = 0xF8;
      delay_ms(100);
      PORTB = 0xFC;
      delay_ms(100);
      PORTB = 0xFE;
      delay_ms(100);
      PORTB = 0xFF;
      delay_ms(100);

    }

    void main(){
      init_sys();
      InitTimer0();

      // bucla infinita
      while (1) {

        switch (i){
          case 0:
            joc_lumini_1();
            break;
          case 1:
            joc_lumini_2();
            break;
          case 2:
            joc_lumini_3();
            break;
          case 3:
            joc_lumini_4();
            break;
        }

      }
    }

×
×
  • Creează nouă...

Informații Importante

Am plasat cookie-uri pe dispozitivul tău pentru a îmbunătății navigarea pe acest site. Poți modifica setările cookie, altfel considerăm că ești de acord să continui.Termeni de Utilizare si Ghidări