C语言访问MCU寄存器的三种方式
MCU中的特殊功能寄存器SFR,实际上就是SRAM地址已经确定的SRAM单元,在C语言环境下对其访问归纳起来有3种方法。
1.对C编译器进行语法扩充
对C编译器进行语法扩充。例如MCS51系列单片机的C-51语法中扩充了sfr关键字,举例如下:
sfr P0 = 0x80;
这样操作0x80单元直接写P0即可。
又如Atmel的AVR系列单片机,其ICCAVR和GCCAVR编译器都没有定义新的数据类型,只能采用标准C的强制类型转换和指针来实现访问MCU的寄存器。而IAR和CodeVisionAVR编译器对ANSI C进行了扩充,定义了新的数据类型,使C语言可以直接访问MCU的有关寄存器,例如在IAR中可以使用:
SFR_B(DDRB, 0x28);
CodeVisionAVR中可以使用:
sfrb DDRB = 0x28;
2.使用标准C的强制类型转换和指针来实现
采用标准C的强制转换和指针的概念来实现访问M