C语言访问MCU寄存器的三种方式

本文介绍了C语言访问MCU寄存器的三种常见方法:1) 对C编译器进行语法扩充,如在MCS51和AVR系列中;2) 使用标准C的强制类型转换和指针,通过宏定义实现直接访问;3) 结构体实现,通过定义结构体简化外设寄存器的访问,提高代码的可维护性和效率。
摘要由CSDN通过智能技术生成

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

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值