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

mosfetx

Members
  • Постов

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

  • Посещение

Информация

  • Город
    Каспийск

Электроника

  • Стаж в электронике
    3-5 лет
  • Сфера радиоэлектроники
    Дагестан
  • Оборудование
    Осциллограф RIGOL DS1052E. Генераторы RIGOL DG1022, Г4-102А
    Pinboard 2, AVRASP программатор

Достижения mosfetx

Новобранец

Новобранец (2/14)

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

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

0

Репутация

  1. Глупые вопросы продолжаются #define F_CPU 8000000, #define F_CPU 8000000L, #define F_CPU 8000000UL Зачем здесь эти буквы после 8000000.
  2. Учу по урокам с этого сайта http://narodstream.ru/avr-urok-7-knopka/. Встретил там такие предложения. Наверное он имел ввиду if(!(PINB&0b00000001)? и ещё я вообще не понял что он тут имеет ввиду Возможно глупые вопросы но я должен все понимать чтоб двигаться дальше.
  3. Спасибо. С этим вопросом понятно. Продолжаю обучение
  4. То есть чтобы не происходило инвертирование всех битов мне надо писать PORTD &= ~(1<<i);?
  5. Всем привет. Снова взялся за Си. Прошлые попытки провалились. Если не найду ответа в гугл или здесь, вопросы буду писать в эту тему Вопрос в следующем. #define F_CPU 8000000 #include <avr/io.h> #include <util/delay.h> int main(void) { unsigned char i=0; DDRD = 0xFF; PORTD = 0x00; while (1) { for ( i=0; i<=7; i++ ) { PORTD = (1<<i); _delay_ms(500); } for ( i=0; i<=7; i++ ) { PORTD = ~(1<<i); _delay_ms(500); } } } Во втором цикле for, как я понимаю должно быть так.в момент входа в цикл PORTD все биты нули. И при выполнении строки PORTD = ~(1<<i); ни чего не должно происходить. так как запись нуля в ноль ни чего не произойдёт. Но как только доходит до этой строки все биты PORTD выставляются в единицы. И потом начинает тухнуть один светодиод с сдвигом влево. Объясните пожалуйста почему так. Вроде это побитовые операции,
  6. #include <avr/io.h> char x = 0; char temp = 0; int main(void) { DDRD = 0; PORTD = 0xFF; while (1) { for (char i = 0; i<8; i++) { if ((PIND&(1<<x))==1) { temp++; } else { x++; } } x = 0; } } Хотел опрашивать все 8 пинов. на наличии лог1. так не работает. Если написать PD0 работает (был не внимателен)
  7. Всем привет. начинаю изучать Си. При опросе PINа в AVR, на то, нажата ли кнопка if((PIND&(1<<PD0)) == 0) все выполняется, то есть при имитации нажатия (отлаживал в avr Studio7) проходит в тело функции (истина) А при if((PIND&(1<<PD0)) == 1) и не нажатой кнопке (условие лог 1) в тело функции не входит(в истину). Как работает последний if? В железе не проверял. Пытаюсь разобраться с ифом. Заранее благодарю.
×
×
  • Создать...