Форум программистов, компьютерный форум, киберфорум
Наши страницы
Микроконтроллеры Atmega AVR
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.67/3: Рейтинг темы: голосов - 3, средняя оценка - 4.67
EugeneStudent
0 / 0 / 0
Регистрация: 24.05.2016
Сообщений: 2
1

Программирование портов ввода/вывода

24.05.2016, 22:59. Просмотров 579. Ответов 6
Метки нет (Все метки)

Ребята, помогите спрограммировать работу в AtmelStudio на языке C или C++ пожалуйста.
Вот задание:
После запуска программы включены светодиоды LED3 и LED4, а остальные
светодиоды выключены. При каждом нажатии кнопки SW7 включается следующая
пара светодиодов, расположенных дальше от центра, а включенные до этого
светодиоды выключаются. После выключения LED7 и LED0 снова включаются
LED3 и LED4.

Добавлено через 2 минуты
Начало:

C
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <avr/io.h>
#include <util/delay.h>
 
int main(void)
{
    //nastrojka portov
    DDRB=0xFF;
    PORTB=0xFF;
    
    DDRD=0x00;
    PORTD=0xFF;
    
    PIND=0xFF;
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.05.2016, 22:59
Ответы с готовыми решениями:

Программирование портов ввода-вывода (Atmega48, Си)
Добрый вечер. Помогите с заданием. Необходимо составить программу. 1) При старте программы,...

AVR Порты ввода/вывода
Кнопка1: Мигание диодов 4/4. Кнопка2: Гаснут все диоды. Кнопка3: Бег в одну сторону. Кнопка4:...

ATtiny2313: порты ввода-вывода
Всем привет! Помогите, пожалуйста, с таким заданием. К порту D микроконтроллера подключены...

Работа с портами ввода-вывода AVR
Всем доброго времени суток. Я написал статью про работу с портами ввода-выдода МК семейства AVR....

Макросы, определения пинов МК, ввода-вывода
Хочется удобного и покрасивше макросы, определения пинов МК, ввода-вывода. Накидайте примеров,...

6
Voland_
1694 / 1038 / 98
Регистрация: 04.01.2010
Сообщений: 3,524
25.05.2016, 07:58 2
я бы делал массивом байт, в котором будут закодированы необходимые активные светодиоды на каждом шаге и переключал бы эти шаги при каждом нажатии на кнопку.

Решение видится следующее:
1) Организуйте главный цикл программы.
2) В главном цикле организуйте условие, которое позволит вам уловить нажатие кнопки SW7. Нужно выловить именно нажатие, то есть момент переключения состояния по фронту или спаду.
3) Организуйте переключение состояния светодиодов выводом значений из массива. (как возможный вариант). Меняйте индекс элемента массива и выставляйте его значение в порт(ы).

Вроде все - задача плевая. Примеры всех элементов программы есть у нас на форуме. Ищите о "кнопках", "циклах" и "светодиодах" в разделе.
0
Витальич
1274 / 1184 / 174
Регистрация: 02.12.2013
Сообщений: 4,886
25.05.2016, 08:02 3
На каких портах весят леды и на какой порт подключен переключатель, делающий за Вас задания должен догадаться сам.
Ты слышал отвечающий, не смей отвлекать пацана своими вопросами про порты!
0
EugeneStudent
0 / 0 / 0
Регистрация: 24.05.2016
Сообщений: 2
25.05.2016, 16:43  [ТС] 4
Вот что получилось:
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
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
#define F_CPU 3686400UL
#include <avr/io.h>
#include <util/delay.h>
 
int main(void)
{
    DDRB=0xFF;
    PORTB=0b11100111;
    
    DDRD=0x00;
    PORTD=0xFF;
    
    PIND=0xFF;
 
    unsigned char tmp;
    unsigned char a;
    unsigned char b;
    
    while (1)
    {
        tmp=0b11100111;
        PORTB = tmp; //PORTB = tmp^0xFF;
        a = 3; // 2 1 0 
        b = 4; // 5 6 7
        
        while (PORTB != 0b01111110)
        {
            while (PIND & (1<<7)){}
            //_delay_ms(200);
            
            if (PINB & (1<<7))
            {
                PORTB=0xFF;
                a--;
                b++;
                PORTB &= ~(1<<a);
                PORTB &= ~(1<<b);
            }
        }
    }
}
0
Voland_
1694 / 1038 / 98
Регистрация: 04.01.2010
Сообщений: 3,524
25.05.2016, 21:32 5
Цитата Сообщение от EugeneStudent Посмотреть сообщение
Вот что получилось:
пока слабовато. Пишите с комментариями к коду. Так проще разобраться
0
Витальич
25.05.2016, 21:36
  #6

Не по теме:

EugeneStudent, мне нравится ход Ваших мыслей, еще не много по теме и народ подключится

0
Voland_
1694 / 1038 / 98
Регистрация: 04.01.2010
Сообщений: 3,524
26.05.2016, 08:26 7
Цитата Сообщение от Витальич Посмотреть сообщение
еще не много по теме и народ подключится
0
26.05.2016, 08:26
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.05.2016, 08:26

чтение порта ввода-вывода Atmega8
Добрый день. Была поставлена задача: есть датчик движения, в спокойном состоянии с него идет...

Переопределение стандартных функций ввода/вывода
Доброго времени суток жители данного форума и гости ! Имеется задача сделать переопределение...

Передача данных через порты ввода вывода
Возникла такая задача, передать информацию от одного МК к другому, причем для передачи информации...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru