Перейти к содержанию

вывод кода на 7-сегментник


Рекомендуемые сообщения

Подскажите пожалуйста в чем может быть проблема, должно быть нажимаем на одну из 5 кнопок, а мк выводит на 7сег номер кнопки, сейчас если начинаем счет с 5ой и по убыванию то норм, если с 0 и по возрастанию то выводит только 0.  до этого пробовал через switch результат такой же

fine F_CPU 8000000
#include <avr/io.h>
#include <avr/interrupt.h>
#include <util/delay.h>

unsigned char temp,rab,count,but;
unsigned char *point;
unsigned char mas[10]={0x3F,0x6,0x5B,0x4F,0x66,0x6D,0x7D,0x7,0x7F,0x6F};

void initport()
{
    DDRD=0x00;
    PORTD=0x00;
    DDRB=0xFF;
    PORTB=0x00;
    ACSR=0x80;
}
void inittimer()
{
    TCCR1B|=(1<<WGM12)|(1<<CS12)|(1<<CS10);
    TIMSK|=(1<<OCIE1A);
    OCR1A=487;
    TCNT1=0;
}
unsigned char conversion(i)
{
    but=*(point+i);
    return but;
}
int main(void)
{
    initport();
    inittimer();
     point=&mas;
    while(1)
    {       
        if (PIND!=0)
        {
            _delay_ms(100);
                while((PIND&(1<<count))==0)
               {
                  ++count;
               }    
            PORTB=conversion(count);   
            count=0;
        } 
    }
}

Без имени.png

Без имени1.png

Ссылка на комментарий
Поделиться на другие сайты

Реклама: ООО ТД Промэлектроника, ИНН: 6659197470, Тел: 8 (800) 1000-321

1 час назад, Александр5786336 сказал:

    DDRD=0x00;
    PORTD=0x00;

это в таком виде вообще не должно работать , вы установили входы в Z-состояние

Цитата

для того что-бы работало, подтяните каждый вход МК земле через приметив протеза PULLDOWN

Ссылка на комментарий
Поделиться на другие сайты

20% скидка на весь каталог электронных компонентов в ТМ Электроникс!

Акция "Лето ближе - цены ниже", успей сделать выгодные покупки!

Плюс весь апрель действует скидка 10% по промокоду APREL24 + 15% кэшбэк и бесплатная доставка!

Перейти на страницу акции

Реклама: ООО ТМ ЭЛЕКТРОНИКС, ИНН: 7806548420, info@tmelectronics.ru, +7(812)4094849

6 часов назад, IMXO сказал:

для того что-бы работало, подтяните каждый вход МК земле через приметив протеза PULLDOWN

Правильно, но нелогично.

Логичнее делать так, как делают в реальности: активировать встроенную "подтяжку" порта к питанию внутри МК, а кнопки сделать "на общий", то есть реагированить в программе не на появление 1 на пине, а на появление 0.

И еще вопрос: что за извращение с указателем?! В данном примере проще и понятнее использовать обычное обращение к массиву

Цитата

            PORTB=conversion(count);   

            PORTB = mas[count];

 

Если забанить всех, кто набрался смелости думать независимо, здорово будет на форуме - как на кладбище: тишина, птички поют...

Ссылка на комментарий
Поделиться на другие сайты

Выбираем схему BMS для корректной работы литий-железофосфатных (LiFePO4) аккумуляторов

 Обязательным условием долгой и стабильной работы Li-FePO4-аккумуляторов, в том числе и производства EVE Energy, является применение специализированных BMS-микросхем. Литий-железофосфатные АКБ отличаются такими характеристиками, как высокая многократность циклов заряда-разряда, безопасность, возможность быстрой зарядки, устойчивость к буферному режиму работы и приемлемая стоимость. Но для этих АКБ, также как и для других, очень важен контроль процесса заряда и разряда, а специализированных микросхем для этого вида аккумуляторов не так много. Инженеры КОМПЭЛ подготовили список имеющихся микросхем и возможных решений от разных производителей. Подробнее>>

Реклама: АО КОМПЭЛ, ИНН: 7713005406, ОГРН: 1027700032161

57 минут назад, ARV сказал:

Правильно, но нелогично.

 может у ТСа требования именно к управлению по плюсу, вы же этого не знаете и я тоже .да не логично, поэтому исходим из кода программы и предоставленных картинок. 

Ссылка на комментарий
Поделиться на другие сайты

13.09.2019 в 10:08, ARV сказал:

Правильно, но нелогично.

Логичнее делать так, как делают в реальности: активировать встроенную "подтяжку" порта к питанию внутри МК, а кнопки сделать "на общий", то есть реагированить в программе не на появление 1 на пине, а на появление 0.

И еще вопрос: что за извращение с указателем?! В данном примере проще и понятнее использовать обычное обращение к массиву

 

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

DDRD=0x00;

PORTD=0xFF;

требований никаких нет.

Без имени.png

13.09.2019 в 11:15, IMXO сказал:

 может у ТСа требования именно к управлению по плюсу, вы же этого не знаете и я тоже .да не логично, поэтому исходим из кода программы и предоставленных картинок. 

по DDRD=0x00, portd=0x00, portd=0xff, почитал вроде ясно спасиба. мой косяк.

Ссылка на комментарий
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы публикуете как гость. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.
Примечание: Ваш пост будет проверен модератором, прежде чем станет видимым.

Гость
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Ответить в этой теме...

×   Вставлено с форматированием.   Восстановить форматирование

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

Загрузка...
  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...