Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: операция сдвига на 28 разрядов для 16-ти разрядного МК
Форум разработчиков электроники ELECTRONIX.ru > Сайт и форум > В помощь начинающему > Программирование
addi
Здравствуйте, вопрос по тому как лучше написать на Си

Есть MSP430, 16 бит.
Работает с внешней микросхемой по SPI, 8 бит.
У внешней микросхемы все регистры 32 бита.
Значения 32 битных регистров разбиты по 1,2,3,4, итд битам, поэтому удобный доступ можно осуществлить с помощью дефайнов, например

#include <msp430f149.h>
#include "functions.h"

// reg0

#define ANZ_FIRE_0 0x0<<28
#define ANZ_FIRE_1 0x1<<28
#define ANZ_FIRE_2 0x2<<28

Но проблема в том что сдвиг на количество разраядов большее 15 вызывает логичное предупреждение компилятора.
В связи с этим прошу подсказать как можно обойти эту проблему, например будет ли решение через объединение 4 uchar в ulong единственно правильным.

Заранее благодарен
Rst7
Напишите #define ANZ_FIRE_1 0x1UL<<28
addi
Цитата(Rst7 @ Aug 1 2013, 10:33) *
Напишите #define ANZ_FIRE_1 0x1UL<<28

Спасибо большое за поддержку!

"0x1UL" - не совсем понятное приведение типов, пожалуйста поясните по возможности.

Заранее благодарен
Rst7
Ну int же на Вашем процессоре 16 бит. Так что для такого большого сдвига надо переходить на long.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.