Для sdcc регистры описываются вот так:
__sfr __at 0x9A SPI2CTx;
__sfr __at 0x9B SPI2CRx;
__sfr __at 0xE8 SPIMOD1;
__sfr __at 0xE9 SPIMOD2;
__sfr __at 0xEA SPISTAT;
Для Keil C/C++:
sfr SPI2CTx = 0x9A;
sfr SPI2CRx = 0x9B;
sfr SPIMOD1 = 0xE8;
sfr SPIMOD2 = 0xE9;
sfr SPISTAT = 0xEA;
В других языках еще может быть как-то по-другому.
Совершенно идеален был бы вариант: выделить шаблон с параметрами ( в данном случае с двумя - символическое обозначение, адрес в hex-представлении) и назначить данному шаблону другой в соответствии с описанием. Затем (другой командой)проверить как действует на одной конструкции, если визуально ошибки нет, применить ко всему открытому простому текстовому файлу.
Допустим, у меня есть заголовочный файл для Keil, а я хочу его быстро преобразовать в такой же для SDCC. Там еще различные конструкции для описания битов. У sdcc для этих целей есть:
__sfr __at 0x88 TCON; /* timer/counter/control*/
__sbit __at 0x88 IT0;
__sbit __at 0x89 IE0;
__sbit __at 0x8a IT1;
__sbit __at 0x8b IE1;
__sbit __at 0x8c TR0;
__sbit __at 0x8d TF0;
__sbit __at 0x8e TR1;
__sbit __at 0x8f TF1;
А у Keil описано только вот так:
//TMOD
#define T0_M0 0x01
#define T0_M1 0x02
#define C_T0 0x04
#define GATE0 0x08
#define T1_M0 0x10
#define T1_M1 0x20
#define C_T1 0x40
#define GATE1 0x80




Ответить с цитированием