MBedder, терминатор (29.12.2013 22:57 - 23:03, просмотров: 432) ответил fk0 на А зачем это нужно?
Будто сам не знаешь - например, для того, чтобы инициализировать TRISx/ODCx/ANSELx/CNENx etc, не делая дополнительных дефайнов руками Микрочип вконец ебанулся, и в хедеры ХС16 включил гору вот таких дефайнов:
#define _TRISE_TRISE0_POSITION 0x00000000
#define _TRISE_TRISE0_MASK 0x00000001
#define _TRISE_TRISE0_LENGTH 0x00000001
...
#define _PORTE_RE0_POSITION 0x00000000
#define _PORTE_RE0_MASK 0x00000001
#define _PORTE_RE0_LENGTH 0x00000001
...
#define _LATE_LATE0_POSITION 0x00000000
#define _LATE_LATE0_MASK 0x00000001
#define _LATE_LATE0_LENGTH 0x00000001
...
#define _CNENE_CNIEE0_POSITION 0x00000000
#define _CNENE_CNIEE0_MASK 0x00000001
#define _CNENE_CNIEE0_LENGTH 0x00000001
...
#define _CNPUE_CNPUE0_POSITION 0x00000000
#define _CNPUE_CNPUE0_MASK 0x00000001
#define _CNPUE_CNPUE0_LENGTH 0x00000001
...
#define _CNPDE_CNPDE0_POSITION 0x00000000
#define _CNPDE_CNPDE0_MASK 0x00000001
#define _CNPDE_CNPDE0_LENGTH 0x00000001
...
#define _ANSELE_ANSE0_POSITION 0x00000000
#define _ANSELE_ANSE0_MASK 0x00000001
#define _ANSELE_ANSE0_LENGTH 0x00000001
т.е. на каждый БИТ по ТРИ дефайна с именами типа Эйяфьятлайокудль Жугдердемидыйн Гуррагча - можешь сам посчитать, сколько их. В WinAVR/AVRGCC хоть было полегче - эти имена дефайнились как NAME_bp (bit position) и NAME_bv (bit value)