Jump to content

    
Sign in to follow this  
niketa

MSP 430 + Сегментный индикатор

Recommended Posts

Я думаю что вы заметили что в старшем разряде проскакивает единица. Пока мне непонятно почему.

Сделай точку остановки в отладчике именно в том месте, где происходит вывод 1 в старшем разряде. Или напиши такое условие. Потом крути-верти резистор. Когда будет выводиться 1 в старшем разряде, отладчик остановится. Посмотри значения переменных. Может так найдешь причину.

 

В функции show_number лучше использовать оператор switch, чем кучу if. Можно и if, но тогда все if кроме первого должны быть заменены на else if.

 

Зачем нужна "маленькая пауза"? Она у тебя не маленькая, она очееееееень маленькая.

Edited by d7d1cd

Share this post


Link to post
Share on other sites
Сделай точку остановки в отладчике именно в том месте, где происходит вывод 1 в старшем разряде. Или напиши такое условие. Потом крути-верти резистор. Когда будет выводиться 1 в старшем разряде, отладчик остановится. Посмотри значения переменных. Может так найдешь причину.

Ошибку в коде нашел. Предыдущий пост исправил. Я там забыл скобки две поставить.

 

Зачем нужна "маленькая пауза"? Она у тебя не маленькая, она очееееееень маленькая.

Паузу уберу нафиг,она ненужна.

 

В функции show_number лучше использовать оператор switch, чем кучу if. Можно и if, но тогда все if кроме первого должны быть заменены на else if.

Спасибо.Исправлю.

Share this post


Link to post
Share on other sites

Для конструкций вида

if (number == 0) {
        P1OUT &=~(BIT1+BIT2+BIT3+BIT5);
        P2OUT &=~(BIT0+BIT2);
    }
    if (number == 1) {
        P1OUT &=~BIT3+BIT5;
    }
    ......

лучше использовать switch(number ) case 0: case 1: ....

 

Пардон, повторился, d7d1cd уже указал.

Edited by Mihey_K

Share this post


Link to post
Share on other sites

Случайно наткнулся на эту тему. Если еще актуально - год назад мне потребовалось сотворить пульт управления домашней печкой с двухсимвольным семисегментным индикатором. Для проотипа просто взял MSP430G2553 в корпусе DIP и воткнул его в бредборд. Сверху насадил индикатор. Так что каждая ножка индикатора идет напрямую к своей ножке MSP. Таким образом в каждую единицу времени можно зажечь один сегмент. Ярковато, даже учитывая, что каждый элемент горит только 1/16 времени. Но для макетирования сгодилось. Потом, когда паял конечное устройство - в цепи анодов добавил резисторы (две штуки - по одному на каждый анод)

 

Схему не рисовал, там и так понятно. А на код могу ссылку дать. Если интересно - пишите в личку. (я форум крайне не регулярно просматриваю, так что не увижу, если здесь кто напишет.)

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this