На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
Страницы: (18) « Первая ... 3 4 [5] 6 7 ...  17 18 все  ( Перейти к последнему сообщению )  
    > Разбираемся с IAR , Обсуждаем небольшие коды на IAR.
      Поправка
      ExpandedWrap disabled
        _    _
         \
          \

      Мы на секунду замыкаем контакт, и отпускаем его (кнопка не должна быть нажата постоянно)??????
      Сообщение отредактировано: bizar -
        да, только есснно в этом случае критерием нажатой кнопки будет 0 на соответствующем разряде порта
          ExpandedWrap disabled
            критерием нажатой кнопки будет 0

          В смысле критерием, я таких слов незнаю.
          (малясь недоразвет)
            признаком:)
              Это для одной кнопки.
              ExpandedWrap disabled
                main()
                     {
                      TRISA = 4;
                      PORTA = 0x1c;
                      TRISB = 0;
                      PORTB = 0xff;
                      while(PORTA & Bit(1));
                      while(1)
                              {
                              tick();
                              switch(PORTB, PORTA)
                                                 {
                                                 case 0x1c : PORTB = 0xfc;
                                                 break;
                                                 case 0xfc : PORTB = 0xf3;
                                                 break;
                                                 case 0xf3 : PORTB = 0xcf;
                                                 break;
                                                 case 0xcf : PORTB = 0x3f;
                                                 break;
                                                 case 0x3f : PORTA = 0x1c;
                                                 }
                              }
                }

              Для двух кнопок, можно создать две функции и врубать их поочерёдно если кнопка была нажата он будет выполнять эту функцию бесконечно???????? - (так можно реализовать программу)…..
                Цитата
                bizar, 24.01.04, 12:01
                switch(PORTB, PORTA)
                Так делать бессмысленно. Это эквивалентно просто switch(PORTA)
                  А как нужно (PORTB & PORTA)
                    Цитата
                    bizar, 24.01.04, 12:23
                    А как нужно (PORTB & PORTA)
                    А скажи словами, чего хочешь получить?
                    Я некоторые этапы вашего диалога пропустил.
                      Хотим заставить мигать светодиоды на PORTA и PORTB,
                      чтобы они мигали при нажатии кнопки.

                      Добавлено в :
                      Нужно чтобы два светодиода первый RB второй на RA загорались одновременно.
                        работа над ошибками:
                        Цитата

                        main()
                        {
                        TRISA = 3; // заменяем на TRISA = 3; ты же опрашиваешь кнопку на RA1, т е его и настраиваешь на вход
                        PORTA = 0x1c;
                        TRISB = 0;
                        PORTB = 0xff;
                        while(PORTA & Bit(1));
                        while(1)
                        {
                        tick();
                        if (PORTA & Bit(2)) PORTA &= ~Bit(2);
                        else POTRA |= Bit(2);
                        if (PORTB & Bit(1)) PORTB &= ~Bit(1);
                        else POTRB |= Bit(1);
                        }
                        }
                          ExpandedWrap disabled
                            {
                            tick();
                            if (PORTA & Bit(2)) PORTA &= ~Bit(2);
                            else POTRA |= Bit(2);
                            if (PORTB & Bit(1)) PORTB &= ~Bit(1);
                            else POTRB |= Bit(1);
                            }

                          Объясни принцип работы этого кусочка (или натолкни на него).
                            Цитата

                            {
                            tick();
                            //------------------------------------------------
                            if (PORTA & Bit(2)) PORTA &= ~Bit(2);
                            else POTRA |= Bit(2);
                            // дословно:
                            // если 2-й бит порта PORTB установлен, сбрасываем его
                            // иначе устанавливаем его
                            //------------------------------------------------
                            if (PORTB & Bit(1)) PORTB &= ~Bit(1);
                            else POTRB |= Bit(1);
                            // тоже самое про первый бит порта PORTA
                            }
                              Проще написать PORTB ^= Bit(1);
                              ExpandedWrap disabled
                                main()
                                    {
                                      TRISA = 3; // заменяем на TRISA = 3; ты же опрашиваешь кнопку на RA1, т е его и настраиваешь на вход
                                      PORTA = 0x1c;
                                      TRISB = 0;
                                      PORTB = 0xff;
                                      while(PORTA & Bit(1));
                                      while(1)
                                              {
                                              tick();
                                              PORTA ^= Bit(2); // инвертируем бит
                                              PORTB ^= Bit(1); // инвертируем бит
                                              }
                                }
                                2trainer
                                да, действительно, а я то бошку в свое время ломал, ка кэто одной командой сделать:)
                                  main()
                                  {
                                  TRISA = 3; // RA1 настраиваем на вход
                                  TRISA = 4; // RA2 настраиваем на вход
                                  TRISA = 8; // RA3 настраиваем на вход
                                  PORTA = 0x1c;
                                  TRISB = 0;
                                  PORTB = 0xff;
                                  while(PORTA & Bit(1));
                                  while(1)
                                  {
                                  tick(); ????????????????????
                                  tick2(); ??????????????????????
                                  tick3(); ???????????????????????
                                  PORTA ^= Bit(2); // инвертируем бит
                                  PORTB ^= Bit(1); // инвертируем бит
                                  ??????????
                                  ??????????

                                  }
                                  }

                                  Чёта я не понял как для нескольких кнопок делать.
                                  А так в общем то potor и trainer спасибо за ваше терпение.
                                  0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                                  0 пользователей:
                                  Страницы: (18) « Первая ... 3 4 [5] 6 7 ...  17 18 все


                                  Рейтинг@Mail.ru
                                  [ Script execution time: 0,0347 ]   [ 15 queries used ]   [ Generated: 9.05.24, 00:00 GMT ]