30 / 29 / 15
Регистрация: 28.09.2011
Сообщений: 449
1

Attiny2313. Управление светодиодами: глюк

15.03.2013, 11:32. Показов 3872. Ответов 11
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Только начал кое-как изучать микропроцессоры и знаю совсем немного.
Задание такое: нужно, чтобы на этой светодиоды.rar модели при нажатии зажигались все красные светодиоды, а при повторном нажатии тушились. я сделал, но у меня получилось, что еще до нажатия все красные светодиоды мигают, а при нажатии тушатся.
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
#include<tiny2313.h>
#include<delay.h>
 
void main(void)
{
    bit action = 0; // нужна для определения действия
    PORTB = 0xFF;
    DDRB = 0xFF;
    PORTD = 0x7F;
    DDRD = 0x00;
    ACSR = 0x80;
    while (1)
    {
        if ( (PIND.0 == 1) ) // если кнопка не нажата
        {           
            if ( action == 0 ) // если диоды не горят - включаем
            {
                PORTB = 0b01010101^0xFF;
                action = 1; // меняем значение, при след. нажатии диоды потухнут
            }
            else // если диоды горят - тушим          
            {
                PORTB = 0b00000000^0xFF;
                action = 0; // меняем значение, при след. нажатии диоды загорятся
            } 
            delay_ms(50); // задержка                                 
        } 
    }
}
все компилилось, asm и hex файлы создавались и работали. теперь пытаюсь что-то менять, например, ставлю PIND.0 == 0 с файл компилится, а вот в asm ошибка Undefined symbol: mcucr
Assembler
1
2
3
4
5
6
7
8
9
;#include<tiny2313.h>
    #ifndef __SLEEP_DEFINED__
    #define __SLEEP_DEFINED__
    .EQU __se_bit=0x20
    .EQU __sm_mask=0x50
    .EQU __sm_powerdown=0x10
    .EQU __sm_standby=0x40
    .SET power_ctrl_reg=mcucr
    #endif
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
15.03.2013, 11:32
Ответы с готовыми решениями:

Управление светодиодами
народ подскажите. сам в программировании микроконтроллер я слабо, мне надо сделать одна кнопка 3...

Управление светодиодами
После запуска программы включены светодиоды LED0 – LED5, а светодиоды LED7 и LED6 выключены. При...

Управление светодиодами на ATMega8
Добрый день товарищи программисты. Написал небольшую прогу по смене режима работы 2х светодиодов. ...

Управление светодиодами с ATMega328
Здравствуйте помогите пожалуйста с написанием кода. Нужно запрограммировать мигания восьми...

Управление светодиодами на Atmega48
Нужно написать код на СИ для Atmega 48. Вот для этого задания. Первоначально включены светодиоды с...

11
10231 / 6609 / 498
Регистрация: 28.12.2010
Сообщений: 21,156
Записей в блоге: 1
15.03.2013, 15:43 2
...перезагрузить среду, пересоздать проект.
0
Тутошний я
2146 / 1201 / 225
Регистрация: 03.11.2009
Сообщений: 4,416
Записей в блоге: 2
15.03.2013, 20:57 3
И выкинуть задержку, из за неё моргает.

Добавлено через 10 минут
запутался. Да, мигает из за задержки но по другой причине. Алгоритм не правильный.
Переменная action должна менятся только при нажатии кнопки. А сейчас она при каждой проходе цикла меняется.
0
30 / 29 / 15
Регистрация: 28.09.2011
Сообщений: 449
16.03.2013, 10:45  [ТС] 4
как при каждом проходе? там же каждый раз проверяется: если нажата и если не нажата. как тогда сделать лучше?
0
Тутошний я
2146 / 1201 / 225
Регистрация: 03.11.2009
Сообщений: 4,416
Записей в блоге: 2
16.03.2013, 11:06 5
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
    while (1)
    {
        if ( (PIND.0 == 1) ) // если кнопка не нажата
        {           
            if ( action == 0 ) PORTB = 0b01010101^0xFF;// если диоды не горят - включаем
            else PORTB = 0b00000000^0xFF;// если диоды горят - тушим            
        }
        else
        {    
            if ( action == 0 ) action = 1;// меняем значение, при след. нажатии диоды потухнут
            else action = 0;//меняем значение, при след. нажатии диоды загорятся          
        }
            delay_ms(500); // задержка                                  
    }
1
30 / 29 / 15
Регистрация: 28.09.2011
Сообщений: 449
16.03.2013, 11:14  [ТС] 6
опять та же ошибка, по поводу которой я и обратился!
0
Тутошний я
2146 / 1201 / 225
Регистрация: 03.11.2009
Сообщений: 4,416
Записей в блоге: 2
16.03.2013, 11:16 7
Тогда
Цитата Сообщение от raxp Посмотреть сообщение
...перезагрузить среду, пересоздать проект.
0
30 / 29 / 15
Регистрация: 28.09.2011
Сообщений: 449
16.03.2013, 11:21  [ТС] 8
Вы не представляете, сколько раз я уже это делал!
0
10231 / 6609 / 498
Регистрация: 28.12.2010
Сообщений: 21,156
Записей в блоге: 1
16.03.2013, 11:37 9
...переустановить среду тоже?
0
35 / 35 / 1
Регистрация: 07.02.2012
Сообщений: 79
16.03.2013, 12:41 10
Попробуй так:
C
1
2
3
4
5
6
7
8
9
10
11
12
        if ( (PIND.0 == 0) ) 
        {   //кнопка нажата
            if ( action == 0 )
            {   //нажатие ещё не фиксировали
                PORTB = 0b01010101^PORTB;  //переключаем светодиоды
                action = 1; //фиксируем нажатие
            }
        }
        else
        {   //кнопка отпущена
            action = 0; //фиксируем 
        }
Проект посмотреть не могу, поэтому строка PORTB = 0b01010101^PORTB может быть неверной.

В исходной программе при отпущенной кнопке каждый цикл происходит изменение action, и светодиодов тоже.

С реальными кнопками надо учитывать их дребезг.
0
30 / 29 / 15
Регистрация: 28.09.2011
Сообщений: 449
16.03.2013, 12:48  [ТС] 11
та же фишка.
0
35 / 35 / 1
Регистрация: 07.02.2012
Сообщений: 79
16.03.2013, 23:09 12
Прогнал свой код в AVRStidio, работает.
0
16.03.2013, 23:09
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
16.03.2013, 23:09
Помогаю со студенческими работами здесь

Управление 8-мью светодиодами
Нужна Ваша помощь в решении задачи. Нужно решить любую из следующих задач (реализация C++ или...

Управление светодиодами на ATMega8 (ASM)
Здраствуйте Пытаюсь написать программу, которая при замыкании кнопки SA1 горящий светодиот...

Управление светодиодами одной кнопкой
Есть программа написанная на assembler. В proteus работает, но на макетке не хочет. Кто подскажет в...

Управление светодиодами стенда на базе MCS-51
При изменении количества включенных ДД перемещать светодиод на ДСИ слева направо. На языке C. Буду...

Управление светодиодами с кнопок (ASM, Proteus, PIC12F675)
Добрый день! У меня вот такое задание, светодиоды HL1 и HL2 погашены, когда нажимаем на клавишу...

Управление светодиодами на ATtiny2313
Ребята, помогите. Нужно написать программу под ATtiny 2313, где при нажатии кнопки 1 горит Led...


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

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

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