Форум программистов, компьютерный форум, киберфорум
Микроконтроллеры ATmega AVR
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.94/18: Рейтинг темы: голосов - 18, средняя оценка - 4.94
1 / 1 / 2
Регистрация: 24.11.2013
Сообщений: 84
1

Программирование портов ввода-вывода (Atmega48, Си)

26.04.2015, 20:08. Показов 3510. Ответов 7
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Добрый вечер. Помогите с заданием.

Необходимо составить программу.

1) При старте программы, светодиоды не светиться.
2) При нажатой 2 кнопки, светодиоды включаться по очереди, создавая эффект бегущих огней с право налево, а при нажатой кнопки 7, включение светодиодов происходит в противоположном направлении.

Вот есть наработки, но не знаю как выполнить 1.пункт.

C++ (Qt)
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
42
43
44
45
#define F_CPU 3686400UL
#include <avr/io.h>
#include <util/delay.h>
 
int main(void)
{
    unsigned char r,d;
    DDRB=   0xFF;
    PORTB = 0xFF;
    DDRD  = 0x00;
    PORTD = 0xFF;
    d=1;
    
 
    while (1)
    {
        
        if (d==1)
        r=0b10000000;
        else    
        r=0b00000001;
        while (r != 0)
        {
            
            PORTB = r^0xFF; 
            if (d==1)
            {
                r>>=1;
            }
            else
            {
                r<<=1;
            }   
            _delay_ms(100);     
            if(!(PIND & (1<< 7)))
            {
                d=1;
            }           
            if(!(PIND & (1<< 2)))
            {
                d=0;
            }
        }
    }
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
26.04.2015, 20:08
Ответы с готовыми решениями:

Программирование портов ввода/вывода
Ребята, помогите спрограммировать работу в AtmelStudio на языке C или C++ пожалуйста. Вот задание:...

Программирование портов ввода/вывода
Всем доброго! Нужно помощь в решении задачи. Буду благодарен. Светодиоды включаются по...

Как отключить jtag в esp32 для освобождение портов ввода-вывода?
Интересует вопрос как отключить jtag в esp32 для освобождения портов ввода-вывода? И какой номер...

Вывод текущей даты используя информацию из CMOS памяти и портов ввода-вывода (70h-7Fh)
Здравствуйте! Помогите кто чем может! На входном языке Ассемблер разработать программу, которая...

Программирование ввода-вывода
Прошу написать код для двух заданий из двух частей: 1)Прокрутить 10 строк вверх(строка...

7
1280 / 1185 / 175
Регистрация: 02.12.2013
Сообщений: 4,883
26.04.2015, 21:19 2
Цитата Сообщение от MonoRec Посмотреть сообщение
Вот есть наработки, но не знаю как выполнить 1.пункт.
А каким портам светодиоды подключены и как?
0
1 / 1 / 2
Регистрация: 24.11.2013
Сообщений: 84
27.04.2015, 11:18  [ТС] 3
Цитата Сообщение от Витальич Посмотреть сообщение
Сообщение от MonoRec
Вот есть наработки, но не знаю как выполнить 1.пункт.
А каким портам светодиоды подключены и как?
Светодиоды подключены к портам PORTB
0
1280 / 1185 / 175
Регистрация: 02.12.2013
Сообщений: 4,883
27.04.2015, 11:22 4
Цитата Сообщение от Витальич Посмотреть сообщение
и как?
У светодиода есть катод и анод к порту что идет?
0
1 / 1 / 2
Регистрация: 24.11.2013
Сообщений: 84
27.04.2015, 11:35  [ТС] 5
Цитата Сообщение от Витальич Посмотреть сообщение
Сообщение от Витальич
и как?
У светодиода есть катод и анод к порту что идет?
Анодом
0
1280 / 1185 / 175
Регистрация: 02.12.2013
Сообщений: 4,883
27.04.2015, 11:42 6
Цитата Сообщение от MonoRec Посмотреть сообщение
1) При старте программы, светодиоды не светиться.
Цитата Сообщение от MonoRec Посмотреть сообщение
Вот есть наработки, но не знаю как выполнить 1.пункт.
C
1
2
3
4
    unsigned char r,d;
    DDRB=   0xFF;  /* Настраиваем порт на выход */
    PORTB = 0xFF; /* Подаём на порты "B" логические 1 так как светодиод подключён анодом светодиоды светятся  */
// Вывод: надо написать PORTB = 0;
P.S.Остальной код не смотрел
0
1 / 1 / 2
Регистрация: 24.11.2013
Сообщений: 84
27.04.2015, 19:19  [ТС] 7
При запуске программы, запускаются бегущие огни.
Как сделать так, что бы при запуске программы, огни не бегали.
Только запускались при нажатии 7-ой кнопки с право налево, но так же что бы менялось их направление при нажатии 2-ой кнопки.

Перенаправление работает как надо, но нету запуска огней 7-ой кнопкой. Как это реализовать?
0
1280 / 1185 / 175
Регистрация: 02.12.2013
Сообщений: 4,883
28.04.2015, 08:39 8
Вы код сами писали или ...?
0
28.04.2015, 08:39
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
28.04.2015, 08:39
Помогаю со студенческими работами здесь

Программирование файлового ввода-вывода.
В квадратной матрице размером 5х5, заполненной случайными целыми числами из диапазона (-45,+45) в...

Программирование универсальной системы ввода вывода
Здравствуйте! Задача такова, требуется создать универсальную программу ввода вывода которая будет...

Программирование с использованием встроенных функций ввода/вывода
Задача. Составить программу реальной информатики, которая производить вычисления параметров...

Программирование ввода/вывода с использованием внешних файлов
Без Вас справлюсь!!!!!!!!! :p:p:p program prog_2_6; type vx=array of real; var fl1,fl2:text;...

Программирование прерываний. Интерфейс с базовой системой ввода-вывода
Доброго времени суток, уважаемые форумчане! Требуется ваша помощь! Написать процедуру,...

Программирование ATmega48-20PU
Как мне запрограммировать фьюсы ATmega48-20PU, чтобы мк работал от внутреннего генератора? (нужны...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru