реклама на сайте
подробности

 
 
> CSS6.0.1 - не выполняется оператор if
Darth_Vader
сообщение Feb 22 2015, 13:50
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 74
Регистрация: 16-06-11
Пользователь №: 65 721



Почему может не выполняться оператор if, ни одна ветка не исполняется - ни истинная, ни ложная.
Трассировкой прохожу - с if сразу идёт переход на return.
CSS6.0.1
Код
#include <msp430g2452.h>

int main(void) {
    int i=0;
    WDTCTL = WDTPW | WDTHOLD;    // Stop watchdog timer
    P1DIR = 0b00011110;
    P1OUT = 0;
    P2DIR = 0;
    P2REN = 255;
    P2OUT = 0;

    if(P2IN)
        i++;
    else
        i--;
    return 0;
}
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов (1 - 3)
aaarrr
сообщение Feb 22 2015, 15:46
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Потому что значение i потом никак не используется.
Go to the top of the page
 
+Quote Post
Xenia
сообщение Feb 22 2015, 15:46
Сообщение #3


Гуру
******

Группа: Модератор FTP
Сообщений: 4 479
Регистрация: 20-02-08
Из: Москва
Пользователь №: 35 237



Цитата(Darth_Vader @ Feb 22 2015, 16:50) *
Почему может не выполняться оператор if, ни одна ветка не исполняется - ни истинная, ни ложная.


Скорее всего потому, что переменная i нигде больше не используется - дальше тело main() кончается, и переменная гибнет, будучи в ней локальной.

Попробуйте определить i глобально, вынеся его определение за пределы main().
Go to the top of the page
 
+Quote Post
Darth_Vader
сообщение Feb 23 2015, 03:32
Сообщение #4


Участник
*

Группа: Участник
Сообщений: 74
Регистрация: 16-06-11
Пользователь №: 65 721



Большое спасибо!
Про оптимизацию кода компилятором я как-то и не подумал!
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 28th July 2025 - 04:42
Рейтинг@Mail.ru


Страница сгенерированна за 0.01373 секунд с 7
ELECTRONIX ©2004-2016