宏无非就是展开 #define XBYTE ((unsigned char *)0x20000L) #define RS82C55 XBYTE[0x0803] RS82C55=0x81; => XBYTE[0x803] = 0x81; => ((unsigned char *)0x20000L)[0x803] = 0x81; => * ((unsigned char *)0x20803) = 0x81;
不知道你的什么编译器.如果是keil c51,这个通用指针定义的有问题. 通用指针中,xdata 用1表示. 似乎应当 #define XBYTE ((unsigned char *)0x10000L) 我不大知道8255的具体功能,但对于外设,似乎这样更好 更正确的做法: #define XBYTE ((unsigned char volitale *)0x10000L) 如果这个端口是一个状态标志,更应当这样定义: #define XBYTE ((unsigned char volitale const *)0x10000L)
实际上,这样定义也许更好: #define XBYTE ((unsigned char volitale const xdata*)0)
|