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

 
 
 
Reply to this topicStart new topic
> порты
chainikru
сообщение Jan 11 2012, 17:16
Сообщение #1


Участник
*

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



при програмировании для MSP430F2013:
#define LED 0x01 // P1.0
#define Led_1 0x02 // P1.1
#define TXD 0x20 // TXD on P1.5
#define Led_2 0x?? // P1.2
#define Led_3 0x?? // P1.4
подскажите пожалуйста как записать другие порты.
Go to the top of the page
 
+Quote Post
zhevak
сообщение Jan 11 2012, 18:08
Сообщение #2


Знающий
****

Группа: Свой
Сообщений: 723
Регистрация: 29-08-05
Из: Березовский
Пользователь №: 8 065



Вы не правильно поняли.

То, что Вы написали

CODE
#define LED 0x01 // P1.0
#define Led_1 0x02 // P1.1
#define TXD 0x20 // TXD on P1.5

это всего лишь определение названий битов _без_привязки_к_портам.

Допустим, у меня висят два ЛЭД-а разного цвета на разных портах, и оба на последнем -- седьмом бите: один на P1.7, другой на -- P2.7. Тогда я пишу:

CODE
// Биты определения порта P1
#define LED_R 0x80
...
// Биты определения порта P2
#define LED_G 0x80


Как можно видеть, коды совпадают. Но я-то знаю, что красный ЛЭД подключен к первому порту, по
этому я буду писать (1):

CODE
P1OUT |= LED_R;


Но компилятор скушает и даже не поперхнется и такой код (2):

CODE
P1OUT |= LED_G;


и такой (3):

CODE
P2OUT |= LED_R;


Разница только в том, что в первом случае (1) логически будет правильный. Во втором случае, исходный код будет неправильный, но откомпилированный будет точно такой же, как и в случае (1). В третьем случае, мы не замечаем, что у нас перепутан порт, и хотим зажечь красный ЛЭД. Только на реальном железе можно обнаружить такую путаницу.

Но я думаю, что Вы достаточно внимательны при написании кодов чтобы видеть такие описки.

Но если Вам нужно знать коды других битов, то это просто:

бит_0 -- это 0x01
бит_1 -- это 0x02
бит_2 -- это 0x04
бит_3 -- это 0x08
бит_4 -- это 0x10
бит_5 -- это 0x20
бит_6 -- это 0x40
бит_7 -- это 0x80

Возможно я неправильно ответил на ваш вопрос, но тогда уточняйте, что Вы хотели спросить в отличие от того, что спросили.


--------------------
Хочешь рассмешить Бога -- расскажи ему о своих планах!
Go to the top of the page
 
+Quote Post
rezident
сообщение Jan 11 2012, 18:12
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 10 920
Регистрация: 5-04-05
Пользователь №: 3 882



Код
#define Led_2 0x04 // P1.2
#define Led_3 0x10 // P1.4

Если вы не знакомы с 16-и ричным исчислением, то пользуйтесь стандартными обозначениями битов, которые указаны в хедере от TI (msp430f2013.h).
Код
#define Led_2 BIT2 // P1.2
#define Led_3 BIT4 // P1.4

Если пишете на Си, то можно использовать операцию сдвига.
Код
#define Led_2 (1U<<2) // P1.2
#define Led_3 (1U<<4) // P1.4

Суффикс беззнаковой константы (U) в данном случае весьма желателен, чтобы не "налететь" на предупреждение от компилятора об изменении знака числа, когда в результате сдвига будет изменен старший бит числа типа int.
Go to the top of the page
 
+Quote Post
chainikru
сообщение Jan 11 2012, 20:56
Сообщение #4


Участник
*

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



16-и ричным исчислением, исчислением я конечно же знаком просто из за того что я перепутал нумерацию битов и считал не 0го по 7й, а с1го по8й у меня не сходилилось, но я это понял только после отправления сообщения, но все равно всем спасибо.
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 31st July 2025 - 14:12
Рейтинг@Mail.ru


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