Столкнулся в Keil c такой фишкой: для лакальных и глобальных переменных типа int разная последовательность записи данных. ex: sfr16 CAN0DAT= 0xD8;; int a
void aaa(void) { int b; CAN0DAT = a; // сперва пишет старшую часть слова, затем младшую ... CAN0DAT = b; // сперва пишет младшую часть слова, затем старшую
} все бы ничего, и жить можно, но в C8051F04X при записи чтении младшей части слова в CAN происходит автоигкремент адреса, в результате данные попадают не по адресу. Мелочь а противно, каждый раз по байтам писать.
--------------------
Хорошую систему делают из стандартных блоков нестандартно мыслящие инженеры.
|