Перейти к содержанию

Dan'nah

Members
  • Постов

    213
  • Зарегистрирован

  • Посещение

Информация о Dan'nah

  • День рождения 06.07.1986

Информация

  • Пол
    Мужчина
  • Город
    Украина, г. Харьков

Электроника

  • Стаж в электронике
    Не связан с электроникой

Посетители профиля

6 947 просмотров профиля

Достижения Dan'nah

Экспериментатор

Экспериментатор (5/14)

  • Неделя на форуме
  • Месяц на форуме
  • Год на форуме
  • 10 лет  на форуме
  • 10 постов на форуме

Последние значки

16

Репутация

  1. До обновления при открытии темы с новыми сообщениями она открывалась на первом непрочитанном сообщении. Сейчас открывается первое сообщение темы — неудобно (особенно когда в теме много страниц, а первое непрочитанное находится не на последней странице — приходится его искать). Возможно ли вернуть эту функцию?
  2. Нужно отключить JTAG (fuse JTAGEN), который висит на PORTC
  3. 3S / 2200 mAh / 30C : С=2200 mAh, 30С=30*2200=66000 mA — максимальный отдаваемый ток 66А
  4. Нет. (!PINC.0) -> (PINC.0==0), проверка на равенство 0 ( !0 == 1 is true, !1 == 0 is false). (PINC.0 != 0) -> (PINC.0 == 1) , т.к. PINC.0 может принимать значения 0 или 1 (1 != 0 is true, 0 != 0 is false).
  5. #include <mega8.h> // частота CP 8мгц. #include <delay.h> unsigned char n = 1; unsigned char m = 1<<7; void main(void) { // начало программы DDRD = 0xFF; PORTD = 0x00; // выход - PORTD. DDRC = 0x00; PORTC=0x03; // входы - PC0 и PC1. подключаем нагрузочные резисторы к PC0 и PC1 PORTD = 0xFF; delay_ms(1000); PORTD = 0x00; // мигнуть для проверки лампочек while(1) { // главный цикл if (!PINC.0) { // если есть нажатие n delay_ms(20); while(!PINC.0); // Ждём отпускания n=n<<1; // сдвиг влево if (!n) n=1; //переполнение — восстанавливаем исходное значение } if (!PINC.1) { // если есть нажатие m delay_ms(20); while(!PINC.1); // Ждём отпускания m=m>>1; // сдвиг вправо if (!m) m=1<<7; // } delay_ms(20); // доп. задержка антидребезга при отпускании кнопки PORTD= (n & m); } } Доработал код. При отпускании кнопка тоже дребезжит — добавил задержку. Код целиком и полностью работает в соответствии с лог. схемой (если нет каких-то дополнительных условий) — проверено в железе.
  6. Знаю)) Уже просветили. Очень удобно
  7. @Prozac Согласно алгоритму (картинке) в порт выводится AND 0001 xor 0001 = 0000, если не ошибаюсь
  8. #include <mega8.h> // частота CP 8мгц. #include <delay.h> unsigned char n = 1; unsigned char m = 1<<7; void main(void) { // начало программы DDRD = 0xFF; PORTD = 0x00; // выход - PORTD. DDRC = 0x00; PORTC=0x03; // входы - PC0 и PC1. подключаем нагрузочные резисторы к PC0 и PC1 PORTD = 0xFF; delay_ms(1000); PORTD = 0x00; // мигнуть для проверки лампочек while(1) { // главный цикл temp=0; if (PINC.0==0) { // если есть нажатие n delay_ms(10); while(PINC.0==0); // Ждём отпускания n=n<<1; // сдвиг влево if (!n) n=1; //переполнение — восстанавливаем исходное значение } if (PINC.1==0) { // если есть нажатие m delay_ms(10); while(PINC.1==0); // Ждём отпускания m=m>>1; // сдвиг вправо if (!m) m=1<<7; // } PORTD= (n & m); } }
  9. Если не ошибаюсь, "дурина" тактируется от кварцевого резонатора на 16МГц. Вот и надо выставить на тактирование от внешнего кварцевого резонатора CKSEL3...0 0111, CKDIV8 1, SUT1...0 10 или 11
×
×
  • Создать...