单片机
大家好:
我在用单片机向外写地址的时候不知道什么时候该用(volatile unsigned char near*)和 ,应用的场合有什么不同??
最好不要解释成以下类似的了,我只是想知道二者所访问的地址空间有什么不同。假设我现在有一个16位的单片机,最好是举个例子。
#define SREG (*(volatile unsigned char *)0x5F);
(unsigned char *)0x5F,AVR的SREG是八位寄存器,所以0x5F强制转换为指向unsigned char类型;
volatile(可变的)这个关键字说明这变量可能会被意想不到地改变,这样编译器就不会去假设这个变量的值了。这种“意想不到地改变”,不是由程序去改变,而是由硬件去改变——意想不到;