51单片机的IO接口的地址和赋值大小的关系

关于51单片机的IO接口的地址与赋值大小理解

前提了解

提示:我们需要回顾C语言的类型定义,如int aa=1;代码编译运行的时候计算机运行到int aa=1,它会进行下列操作:首先计算机找到一片4字节大小的地方,然后将这个地方的地址赋值给aa,并且将1保存在这个有着4字节大小的地址里面。
在这里插入图片描述

关于51单片机的IO接口的地址与赋值大小理解

在51单片机的头文件reg51.h里面我们可以看到sfr P1 = 0x90。
首先我们需要理解SFR:SFR也是一种扩充数据类型,占用一个内存单元,值域为0~255。利用它可以访问51单片机内部的所有特殊功能寄存器。如用sfr P1 = 0x90这一句定P1为P1端口在片内的寄存器,在后面的语句中我们可以用P1 = 255(对P1端口的所有引脚置高电平)之类的语句来操作特殊功能寄存器。
sfr—此类型变量可以访问指定的8位特殊功能寄存器,地址范围为0x80~0xFF。定义格式:sfr 变量名=变量地址。
一个内存单元:一个字节大小
特殊功能寄存器:寄存器就是我们保存数据的地方,不过他是以0,1这样的类型保存。为什么说特殊呢?因为它是与我们的51单片机的P0,P1,P2等IO接口和其他设计有关联的。
sfr P1=0x90:定义一个sfr类型的P1的变量,并将0x90这个地址赋值给P1。

下面是给P1变量赋值,
P1=0xfe(16进制)=254(10进制)=11111110(2进制)
为什么说这些寄存器有特殊功能呢?看下图,给这个地址的赋值大小之后,会影响P1各个IO接口的高低电压。
在这里插入图片描述
其他赋值也一样,P1=0x01=1=00000001
通过给这些地址的寄存器赋值,会影响IO接口的高低电压,所以说这些寄存器是特殊功能寄存器。

其他单片机定义

bit—定义位变量,定bai义位变量时可以为du变量赋值,但不能指zhi定变量的地址。定义格式:bit 变量名=变量值。
sbit—此类型变量只要用于访问可位寻址的特殊功能寄存器中的某个位。定义格式:sbit 变量名=位地址;sbit 变量名=SFR地址^位序号;sbit 变量名=sfr16变量^位序号。
sfr—此类型变量可以访问指定的8位特殊功能寄存器,地址范围为0x80~0xFF。定义格式:sfr 变量名=变量地址。
sfr16—此类型的变量可访问16为特殊功能寄存器。定义格式:sfr16 变量名=变量地址。此处的变量地址为16位中的低8位地址,其地址范围为0x80~0xFF。通过sfr16变量读16位特殊功能寄存器时,先读低字节,后读高字节;写特殊功能寄存器时先写高字节,后写低字节。

第一次写有什么不对的地方,欢迎提出。有什么迷惑的地方也可以联系我,互相学习。

  • 7
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 6
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值