Folks, I am thinking of changind some io API (not really changing, but extensions). So, will it worth if we declare ports as structures: --------------------------------------------------------------------------------------- typedef union port { volatile unsigned char reg_p; volatile struct { unsigned __p0:1, __p1:1, __p2:1, __p3:1, __p4:1, __p5:1, __p6:1, __p7:1; } __pin; } ioport_t;
#define pin0 __pin.__p0 #define pin1 __pin.__p1 #define pin2 __pin.__p2 #define pin3 __pin.__p3 #define pin4 __pin.__p4 #define pin5 __pin.__p5 #define pin6 __pin.__p6 #define pin7 __pin.__p7 typedef struct { ioport_t in, out,dir,ifg,ies,ie,sel; } xport_t; xport_t port0 asm("0x10"); /// and so on... ---------------------------------------------------------------------- So, user can write: port0.out.pin1 = 1; xxx = port0.in.pin2; port0.reg_p = 0x7e; or something. Of course this will not discard existing declarations. If we're going to add this declaration to header files, we need to choose a name for portX. Will 'port0 .. port6' be suitable for it? Or just forget about it? ~d /******************************************************************** ("`-''-/").___..--''"`-._ (\ Dimmy the Wild UA1ACZ `6_ 6 ) `-. ( ).`-.__.`) Enterprise Information Sys (_Y_.)' ._ ) `._ `. ``-..-' Nevsky prospekt, 20 / 44 _..`--'_..-_/ /--'_.' ,' Saint Petersburg, Russia (il),-'' (li),' ((!.-' +7 (812) 3468202, 5585314 ********************************************************************/