Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: порты
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > MSP430
chainikru
при програмировании для 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
подскажите пожалуйста как записать другие порты.
zhevak
Вы не правильно поняли.

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

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

Возможно я неправильно ответил на ваш вопрос, но тогда уточняйте, что Вы хотели спросить в отличие от того, что спросили.
rezident
Код
#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.
chainikru
16-и ричным исчислением, исчислением я конечно же знаком просто из за того что я перепутал нумерацию битов и считал не 0го по 7й, а с1го по8й у меня не сходилилось, но я это понял только после отправления сообщения, но все равно всем спасибо.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.