微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 在MCS51单片机中对特殊功能寄存器的C51定义

在MCS51单片机中对特殊功能寄存器的C51定义

时间:11-20 来源:互联网 点击:

我们用sfrP0=0×80表示P0,用sfrSP=0×81表示SP,这个没有歧义。但有疑问的是:假如用sbitP0_1=0×81表示P0口的第一位,那么我想表示SP寄存器的第0位怎么办呢?如果也是定义成sbitSP_0=0×81那么明显会有二义性,编译器理解不了。其实这个问题是不存在的,从图1中可以看出,SPR又可以分为两个区域:可位寻址区和不可位寻址区。可位寻址区的寄存器地址能够被8整除,而不可位寻址区的寄存器地址不满足这一要求。因此例子中的sbitSP_0=0×81对于SP寄存器这是无效的应该写成sfrSP=0x81。

例如:sbitP1^1=0x81;sfrSP=0x81;

它们虽然都引用了同一个地址0×81,但是对于编译器来说,这两者的含义完全不同,前者因为有sfr关键字,所以是字节地址。后者因为是sbit关键字,所以是位寻址,表示的是一个bit。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top