关于嵌入式C语言的一个语法问题!!请教各位高手!!

mati1111   2009-3-13 14:29 楼主
#define WrUTXH1(ch) (*(volatile unsigned char *)(0x1d04023))=(unsigned char)(ch)
请各位大侠帮忙解析这语句的结构,我没看懂。帮个忙,谢谢!

回复评论 (3)

是将CH的值赋给内存地址为0x1d04023的值
点赞  2009-3-13 14:51
unsigned char x = ch; //这种赋值肯定能懂,一般x的地址是由编译器自行决定。

现在
(*(volatile unsigned char *)(0x1d04023))就相当于x,只不过x的地址由程序员指定了在0x1d04023。

(volatile unsigned char *)(0x1d04023)说明0x1d0423是一个(unsigned char*)的地址。

那么要获取这个地址所存储的值怎么办?就是c语言的指针取值,前面加个*。

volatile表示这个地址存的值是必须实时更新,而不能用之前保存的值。就像卖货,必须以实时库存来确认,不能用昨天的库存来告诉客户一样。
点赞  2009-3-13 15:18
谢谢您的答复,有点明白了!
点赞  2009-3-13 16:15
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复