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

 
 
> Зарезервированные слова IAR
Syber
сообщение Dec 27 2011, 19:07
Сообщение #1


Участник
*

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



Начинаю вникать в MSP430G2, купил LAunchPad и решил начать с осмысливания программы "моргающий светодиод", разбирая прошитую программу. Насколько понял, WDTCTL, WDTPW, WDTHOLD - зарезервированные слова. Нашел их описание. К зарезервированным, насколько понял, относятся CCTL0, CCIE, TACTL ну и наверно другие. Где найти перечень всех зарезервированных слов для IAR и их описание?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Syber
сообщение Jan 12 2012, 18:17
Сообщение #2


Участник
*

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



А что там в Простоквашино?

По поводу зарезервированных слов можно море копий сломать, но это не принципиально, поскольку суть сказанного меня поняли и помогли.
По поводу 13 листов. Для налоговой могу напечатать шрифтом 5 пунктов. Для себя и в деловой переписке использую Times, 12 пунктов, одинарный межстрочный. Не знаю, утвержденный ли это стандарт, но пользуются многие. Именно в этом стандарте 13 листов.
Но вот поднял документацию на IAR, получилось что эти 13 листов сущие пустяки.

По поводу программирования. Скарябал на ассемблере для Электроники 60, а это PDP-11 DEC. Для нее же писал на кроссассемблере разработки Протвино. Но пока позволят ресурсы, хочу попрактиковать на С. На нем тоже писал, но тут начались непонятки. Я понимаю вот такую конструкцию:
a = b & c
Но не могу понять строки из примера с моргающим диодом:
LED_OUT &= ~(LED_0 + LED_1)
Описание С нашел в EW430_CompilerReference.pdf. Там много интересного, но нет описания операторов применительно к IAR.
Go to the top of the page
 
+Quote Post
Xenia
сообщение Jan 12 2012, 19:48
Сообщение #3


Гуру
******

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



Цитата(Syber @ Jan 12 2012, 22:17) *
Но не могу понять строки из примера с моргающим диодом:
LED_OUT &= ~(LED_0 + LED_1)

Это типаж, когда устанавливают биты по маске. Маска - это определение набора битов в виде двоичного числа, в котором нужные биты установлены в 1.
Например, маски для каждого из пинов 8-битного порта будут такими:
#define PIN1 1
#define PIN2 2
#define PIN3 4
#define PIN4 8
#define PIN5 16
#define PIN6 32
#define PIN7 64
#define PIN8 128

Если к пину PIN3 присоединен светодиод LED_0, то LED_0=8 будет маской, его зажигающей.
Чтобы зажечь этот светодиод, надо подать напряжение на этот пин, а для этого нужно эту маску установить в порту:
LED_OUT |= PIN3;
или
LED_OUT |= LED_0;
Это тоже типаж, т.к. операция |=осуществляет логическое сложение. А поскольку у нас в маске только один бит, то только он и ДОБАВИТСЯ!
Присваивать напрямую
LED_OUT = LED_0;
в таких случаях нельзя, т.к. тогда обнулятся другие биты, а вместе с этим исчезнут напряжения на остальных пинах.
А вот если надо СТЕРЕТЬ какой-то один бит, то стирают его так:
LED_OUT &= ~LED_0;
Выглядит вычурно sm.gif, но делает то, что нужно. Т.е. сначала инвертирует маску, а потом "фильтрует" через нее старое значение. В результате чего из LED_OUT сотрется только бит LED_0, а остальные биты в нем сохранятся неизменными.

Тот же механизм работает, если в маске более одного бита. Например, выражение LED_0+LED_1 - это маска обоих светодиодов. Ее можно записать и так LED_0|LED_1.
Поэтому, если надо зажечь СРАЗУ оба светодиода, то зажигают их так:
LED_OUT |= (LED_0+LED_1);
а гасят так:
LED_OUT &= ~(LED_0+LED_1);

Но так светодиоды зажигаются, если они горят на напряжении, выдаваемом контроллером. Но можно (и даже лучше) зажигать светодиод, присоединяя один из его выводов через гасящий резитор к плюсу питания, а другой его вывод заземлять через пин контроллера. В этом случае наши операции станут работать наоборот.
LED_OUT |= (LED_0+LED_1); будет гасить, а LED_OUT &= ~(LED_0+LED_1); будет зажигать.
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Syber   Зарезервированные слова IAR   Dec 27 2011, 19:07
- - scifi   Сам я MSP430 не занимался, но то, что Вы называете...   Dec 27 2011, 20:37
- - Syber   Зарезервированными словами в языках программирован...   Dec 28 2011, 05:38
|- - Сергей Борщ   QUOTE (Syber @ Dec 28 2011, 07:38) Зарезе...   Dec 28 2011, 07:22
|- - IgorKossak   Цитата(Сергей Борщ @ Dec 28 2011, 09:22) ...   Dec 28 2011, 07:42
- - ut1wpr   Цитата(Syber @ Dec 27 2011, 23:07) Начина...   Dec 28 2011, 06:02
- - Syber   По поводу зарезервированных слов. Си имеет такие с...   Dec 28 2011, 15:05
|- - ViKo   Цитата(Syber @ Dec 28 2011, 18:05) Что та...   Dec 29 2011, 10:18
|- - KRS   Цитата(Syber @ Dec 28 2011, 19:05) Чей он...   Dec 30 2011, 11:52
- - Syber   Спасибо, нашел. Там дефиниций на 13 листов вордовс...   Dec 29 2011, 17:58
|- - Палыч   Цитата(Syber @ Jan 12 2012, 22:17) ... но...   Jan 12 2012, 19:02
|- - KRS   Цитата(Syber @ Jan 12 2012, 22:17) Я пони...   Jan 12 2012, 19:44
- - Syber   Цитата(Палыч @ Jan 12 2012, 23:02) Но, чт...   Jan 13 2012, 06:42
|- - scifi   Цитата(Syber @ Jan 13 2012, 10:42) Такого...   Jan 13 2012, 07:10
|- - Сергей Борщ   QUOTE (Syber @ Jan 13 2012, 08:42) Что же...   Jan 13 2012, 07:43
|- - Syber   Цитата(Сергей Борщ @ Jan 13 2012, 11:43) ...   Jan 13 2012, 11:47
|- - sparcmaster   Цитата(Syber @ Jan 13 2012, 15:47) Чтобы ...   Jan 13 2012, 14:06
- - Syber   Что значит подставться? Я за себя спокоен, а перед...   Jan 13 2012, 07:41
- - Палыч   Цитата(Syber @ Jan 13 2012, 10:42) Я сказ...   Jan 13 2012, 12:10
- - Сергей Борщ   QUOTE (Syber @ Jan 13 2012, 13:47) Я так ...   Jan 13 2012, 12:38
- - mdmitry   Цитата(Сергей Борщ @ Jan 13 2012, 15:38) ...   Jan 13 2012, 13:31


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

 


RSS Текстовая версия Сейчас: 17th August 2025 - 20:57
Рейтинг@Mail.ru


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