Форум программистов, компьютерный форум, киберфорум
Микроконтроллеры
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
1 / 1 / 0
Регистрация: 10.03.2013
Сообщений: 404

Работа условных операторов с отдельными разрядами регистров ввода-вывода

24.01.2014, 17:50. Показов 1033. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день.
Имеет микроконтроллер Atmega8.
Программирую в среде AtmelStudio 6 на языке С.
Передо мной встала проблема синтаксиса - как в условных операторах и операторах цикла работать с отдельными разрядами. Например на ножку поступает низкий логический уровень, и надо сравнить разряд этого вывода с константой.
Вот в таком коде ничего не работает (переключение светодиоды по нажатию кнопки между двумя состояниями):
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#include <avr/io.h>
#include <util/delay.h>
 
int main(void)
{
    DDRC=0b11111111;
    DDRD=0b00000000;
    PORTD=0b00000001;
    PORTC=0b00000001;
    while(1)
        {
            while(PIND0==1){}
                
            if(PINC0==1)
                {
                    PORTC=0b00000000;
                }
            else
                {
                    PORTC=0b00000001;
                }
            while(PIND0==0){}
        
        }
}
Проблема с условиями в скобках, так как не происходит ни одного верного сравнения, схема собрана правильно, ибо на асме все работает идеально. Прошу вашей помощи.
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
24.01.2014, 17:50
Ответы с готовыми решениями:

Каковы особенности выполнения операторов: присваивания, ввода-вывода, условных, циклов
Контрольные вопросы 1. Особенности выполнения операторов: присваивания, ввода-вывода, условных, циклов. 2. Арифметические выражения:...

Перегрузка операторов ввода вывода
в .h файле сделал объявление inline ostream&amp; operator &lt;&lt;(ostream&amp;, const Proc&amp;); inline istream&amp; operator &gt;&gt;(istream&amp;, Proc&amp;); ...

Перегрузка операторов ввода и вывода
помогите реализовать перегрузку операторов ввода и вывода. Использовать не менее 5 флагов форматирования. объявление моего класса: ...

4
 Аватар для raxper
10237 / 6615 / 498
Регистрация: 28.12.2010
Сообщений: 21,154
Записей в блоге: 1
24.01.2014, 18:23
Например на ножку поступает низкий логический уровень, и надо сравнить разряд этого вывода с константой.
какой-такой разряд у вывода? Может выделить ножку (разряд) порта? Используйте маску.
0
1 / 1 / 0
Регистрация: 10.03.2013
Сообщений: 404
24.01.2014, 20:19  [ТС]
Да, именно это я и имел ввиду, но я уже сам разобрался - использую битовые операции.
0
62 / 187 / 31
Регистрация: 14.02.2013
Сообщений: 1,699
24.01.2014, 21:10
для удобства можно и так записать.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#include <avr/io.h>
#include <util/delay.h>
 
int main(void)
{
    DDRC=0xff;
    DDRD=0;
    PORTD=0x01;
    PORTC=0x01;
    while(1)
        {
            while(PIND0==1){}
                
            if(PINC0==1)
                {
                    PORTC=0;
                }
            else
                {
                    PORTC=0x01;
                }
            while(PIND0==0){}
        
        }
}
0
 Аватар для Voland_
1983 / 1276 / 131
Регистрация: 04.01.2010
Сообщений: 4,607
27.01.2014, 01:25
Лучший ответ Сообщение было отмечено raxp как решение

Решение

georgfour, а чего у вас PORTC настроен весь на выходы, а потом вы с него же спрашиваете чего там у него на входе? У вас инициализация неправильная. Вот оно ничего и не работает. Разберитесь с назначением регистров DDRx и PORTx, мне кажется, ошиблись вы именно в этом.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
27.01.2014, 01:25
Помогаю со студенческими работами здесь

Перегрузка операторов вывода и ввода
Я не могу понять , как это сделать , помогите пожалуйста , вот код #include &lt;iostream&gt; #include &lt;conio.h&gt; #include...

Перегрузка операторов ввода и вывода
#include &lt;iostream&gt; #include &lt;conio.h&gt; using namespace std; class ComplexNumber { private: double a, b; ...

Перегрузка операторов ввода вывода
ребята болит уже голова)) main.cpp #include &quot;myStr.h&quot; int main() { myStr myS(&quot;ok&quot;); cout&lt;&lt;myS&lt;&lt;endl;//надо чтоб...

Перегрузка операторов ввода/вывода
Вроде сделал, но не работает перегрузка оператора ввода. #include &quot;stdafx.h&quot; #include &lt;iostream&gt; using namespace std; ...

Перегрузка операторов ввода\вывода
Вот такой простенький пример описан во многих постах, есть в некоторых видео но у меня в компиляторе mvs 2015, при компиляции выдает...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Хочу заставить корпорации вкладываться в здоровье сотрудников: делаю мат модель здравосохранения
anaschu 22.03.2026
e7EYtONaj8Y Z4Tv2zpXVVo https:/ / github. com/ shumilovas/ med2. git
1С: Программный отбор элементов справочника по группе
Maks 22.03.2026
Установка программного отбора элементов справочника "Номенклатура" из модуля формы документа. В качестве фильтра для отбора справочника служит группа номенклатуры. Отбор по наименованию группы. . .
Как я обхитрил таблицу Word
Alexander-7 21.03.2026
Когда мигает курсор у внешнего края таблицы, и нам надо перейти на новую строку, а при нажатии Enter создается новый ряд таблицы с ячейками, то мы вместо нервных нажатий Энтеров мы пишем любые буквы. . .
Krabik - рыболовный бот для WoW 3.3.5a
AmbA 21.03.2026
без регистрации и смс. Это не торговля, приложение не содержит рекламы. Выполняет свою непосредственную задачу - автоматизацию рыбалки в WoW - и ничего более. Однако если админы будут против -. . .
1С: Программный отбор элементов справочника по значению перечисления
Maks 21.03.2026
Установка программного отбора элементов справочника "Сотрудники" из модуля формы документа. В качестве фильтра для отбора служит значение перечислений. / / Событие "НачалоВыбора" реквизита на форме. . .
Переходник USB-CAN-GPIO
Eddy_Em 20.03.2026
Достаточно давно на работе возникла необходимость в переходнике CAN-USB с гальваноразвязкой, оный и был разработан. Однако, все меня терзала совесть, что аж 48-ногий МК используется так тупо: просто. . .
Оттенки серого
Argus19 18.03.2026
Оттенки серого Нашёл в интернете 3 прекрасных модуля: Модуль класса открытия диалога открытия/ сохранения файла на Win32 API; Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru