| Микроконтроллеры | Помогите написать программу цифрового таймера | 
|
|---|---|---|
serg_svd: PIND.3  а в WinAVR так можно к битам порта обращаться ?  | 
  | 
|
по-моему да. А в чем проблема? А определение кнопок может лучше в таком виде?  | 
  | 
|
Проблема в том, что это С, а не ассемблер. Конструкция PIND.2 с точки зрения С - неправильная. Для доступа к биту пользуйтесь маской, например (PIND & 0b00000100), либо (PIND & (1 << PD2))  | 
  | 
|
до этого такая конструкция работала нормально. Да и в книге Программирование МК на Си она присутствует. Эта конструкция позволяет только читать из порта А можно подробней расписать работу этих масок  (PIND & 0b00000100), либо (PIND & (1 < PD2))  | 
  | 
|
serg_svd: А можно подробней расписать работу этих масок (PIND & 0b00000100), либо (PIND & (1 <PD2)) А то я что-то не пойму Подробно о работе масок  и о  свдвигах и о поразрядных логических операц... - и там же он-лайн книга "Язык Си" от Карниган Ричи - основоположников Си.  | 
  | 
|
chav1961: Конструкция PIND.2 с точки зрения С - неправильная.  | 
  | 
|
А записывать в порт - вот так: PORTD |= 1 << PD2; (установка 1) PORTD &= ~(1 << PD2); (сброс 0)  | 
  | 
|
И очень зря, что правильная. Я в свое время программатор на Visual Studio С в мегу8 затащил на раз-два, потому что никакой экзотикой при программировании не пользуюсь. Стандарт языка С для того и существует, чтобы его соблюдать. В WinAVR GCC она, кстати, тоже не заработает  | 
  | 
|
chav1961: PORTD |= 1 << PD2; (установка 1) /i> PORTD |= 1 < PD2; // установка 1 на PD2 равносильно PORTD |= 1 < 2; равносильно PORTD |= 0b100; | - установить биты наприв "1"  | 
  | 
|
chav1961: Стандарт языка С для того и существует, чтобы его соблюдать. Я думаю он для того есть чтоб НЕ НАРУШАТЬ его. А соблюдать не обязательно ИМХО.  | 
  | 
|
| 
 Форум про радио — сайт, посвященный обсуждению электроники, компьютеров и смежных тем. pro-radio.online | Обратная связь  | 
© 2003—2025  | 
|||