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

 
 
> Баг от Кейла, Запись int -ов жить не мешает но кровь портит
редактор
сообщение Jan 28 2008, 11:55
Сообщение #1


Местный
***

Группа: Участник
Сообщений: 356
Регистрация: 9-06-07
Пользователь №: 28 315



Столкнулся в Keil c такой фишкой: для лакальных и глобальных переменных типа int разная последовательность записи данных.
ex:
sfr16 CAN0DAT= 0xD8;;
int a

void aaa(void)
{ int b;
CAN0DAT = a; // сперва пишет старшую часть слова, затем младшую
...
CAN0DAT = b; // сперва пишет младшую часть слова, затем старшую

}
все бы ничего, и жить можно, но в C8051F04X при записи чтении младшей части слова в CAN происходит автоигкремент адреса, в результате данные попадают не по адресу.
Мелочь а противно, каждый раз по байтам писать.


--------------------
Хорошую систему делают из стандартных блоков нестандартно мыслящие инженеры.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Палыч
сообщение Jan 31 2008, 07:25
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 2 399
Регистрация: 10-05-06
Из: г. Новочеркасск
Пользователь №: 16 954



Цитата(редактор @ Jan 28 2008, 14:55) *
Столкнулся в Keil c такой фишкой: для лакальных и глобальных переменных типа int разная последовательность записи данных.


Попробовал при разных уровнях оптимизации - и ни разу не увидел разной последовательности записи: в обоих случаях (и для глобальных и для локальных переменных) запись производится - сначала старший байт, затем - младший. Брал процедуру ааа(), которую Вы привели в качестве примера. Транслятор - версии 8.04
Go to the top of the page
 
+Quote Post



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

 


RSS Текстовая версия Сейчас: 29th July 2025 - 23:15
Рейтинг@Mail.ru


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