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

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

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

Добрый вечер. Помогите с заданием.

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

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
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.04.2015, 20:08
Ответы с готовыми решениями:

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

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

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

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

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

7
Витальич
1274 / 1184 / 174
Регистрация: 02.12.2013
Сообщений: 4,886
26.04.2015, 21:19 2
Цитата Сообщение от MonoRec Посмотреть сообщение
Вот есть наработки, но не знаю как выполнить 1.пункт.
А каким портам светодиоды подключены и как?
0
MonoRec
1 / 1 / 2
Регистрация: 24.11.2013
Сообщений: 84
27.04.2015, 11:18  [ТС] 3
Цитата Сообщение от Витальич Посмотреть сообщение
Сообщение от MonoRec
Вот есть наработки, но не знаю как выполнить 1.пункт.
А каким портам светодиоды подключены и как?
Светодиоды подключены к портам PORTB
0
Витальич
1274 / 1184 / 174
Регистрация: 02.12.2013
Сообщений: 4,886
27.04.2015, 11:22 4
Цитата Сообщение от Витальич Посмотреть сообщение
и как?
У светодиода есть катод и анод к порту что идет?
0
MonoRec
1 / 1 / 2
Регистрация: 24.11.2013
Сообщений: 84
27.04.2015, 11:35  [ТС] 5
Цитата Сообщение от Витальич Посмотреть сообщение
Сообщение от Витальич
и как?
У светодиода есть катод и анод к порту что идет?
Анодом
0
Витальич
1274 / 1184 / 174
Регистрация: 02.12.2013
Сообщений: 4,886
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
MonoRec
1 / 1 / 2
Регистрация: 24.11.2013
Сообщений: 84
27.04.2015, 19:19  [ТС] 7
При запуске программы, запускаются бегущие огни.
Как сделать так, что бы при запуске программы, огни не бегали.
Только запускались при нажатии 7-ой кнопки с право налево, но так же что бы менялось их направление при нажатии 2-ой кнопки.

Перенаправление работает как надо, но нету запуска огней 7-ой кнопкой. Как это реализовать?
0
Витальич
1274 / 1184 / 174
Регистрация: 02.12.2013
Сообщений: 4,886
28.04.2015, 08:39 8
Вы код сами писали или ...?
0
28.04.2015, 08:39
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.04.2015, 08:39

Какое приложение можно написать на тему "Программирование файлового ввода-вывода"
Здравствуйте! Тема курсовой работы:&quot;Программирование файлового ввода-вывода в С#&quot; Подскажите,...

Ошибка ввода\вывода 104, файле не открыт для ввода (строка 0)
Всё работает, но пишет: &quot;ошибка ввода\вывода 104, файле не открыт для ввода (строка 0). ...

Ошибка ввода/вывода 104 - файл не открыт для ввода
var a:array of integer; n,j,i,k: integer; f:text; begin ...


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

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

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