vitalik_1984 писал(а):При динамической индикации нужно использовать таймеры.Где у вас таймер?
дело было не в неиспользовании таймеров.
Просто аноды были через ключи и происходило инвертирование.
Убрал ключи все норм заработало.
Все равно спасибо за ответ, пришлось разобраться как использовать таймер ))
Извиняюсь что вмешиваюсь в обсуждение, о хочу задать маленький вопрос:
Хочу кнопку в главном цикле опрашивать нет ли нажатия, на ассемблере это команда SBIC (SBIS). А на Си это как лучше написать? я сделал так
#define MASKA 0b00000100 // маска для кнопки, он на PB2 выводе.
while(1)
{
a=VHOD_PIN;
a = a & MASKA;
if (a!=4)
{
a++; \\здесь просто задержка если нажата кнопка
}
}
union
{
unsigned char byte[2];
unsigned int word;
}MyData;
Существует ли какая нибудь возможность организовать распределение word старшим байтом вперед?
т.е к примеру при
MyData.byte[0] = 0x12;
MyData.byte[1] = 0x34;
получить в
MyData.word = 0x1234 а не 0x3412
Без сдвигов - нет.
Существует 2 вида компиляторов - big-endian и litl-endian - способ представления многобайтовых переменных.
В одном случае он ставит младший байт первым, в другом - старший.
Переубедить его нельзя.
Все понял. Спасибо urry. Сделал со сдвигом.
Я все таки надеялся что можно собрать какой нибудь новый тип данных из структур объединений.
И вот еще макрос без сдвигов, но это уже не то.
union
{
unsigned char BUFFER[Stock_Bytes]; // сюда по юсарту принимаю пакет
struct
{
unsigned long HEAD;//FF FF FF 55 заголовок для чего он нужен не понятно. может из спячки выводить.
unsigned int VALUE[(38-6)/2];// значения 16 битный тип данных которые тоже просто складываем и получаем загрязнение в усл единицах
unsigned int CRC;//контрольная сумма с 5 по 36 байт просто сумма байт
};
}STOCK;
Далее передаю это сумму VALUE[0..16] в работающую систему по шине I2C, Как виртуальный модуль измерения тока и температуры.
Т.е некий адаптер между существующей телемеханикой и "прибором" (СТОК 101).
Так вот, все получается перевернутым и STOCK.CRC VALUE HEAD а почему уже объяснили выше.А хотелось бы сделать просто через объединение. Теперь понимаю что ни как.
И сделал через сдвиг.