C51编程中sfr,sbit的用法以及位地址和字节单元地址的区别

这篇具有很好参考价值的文章主要介绍了C51编程中sfr,sbit的用法以及位地址和字节单元地址的区别。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1. sfr用法

特殊功能寄存器定义:以P0为例。
在c51的官方头文件中,P0口是这样定义的
sfr地址,51单片机,数据结构,单片机,嵌入式硬件
可见sfr的定义方式为:sfr 变量名=字节单元地址;
这里的P0也可以换成其他变量名。
在后续的使用中,如:P0=0x00;就是把0x80为地址的字节单元的8位的数据赋值为0000 0000B

2. sbit用法

特殊功能位定义:以P0_0为例。
在c51的官方头文件中,P0_0口是这样定义的
sfr地址,51单片机,数据结构,单片机,嵌入式硬件
可见sbit的定义方式为:sbit 变量名=位地址;
这里的P0_0也可以换成其他变量名。
sbit 还有其他定义方式,如:
sbit P0_0 = P0^0
sbit P0_0 = 0x80^0
可见P0 ^0,0x80 ^0都可以表示位地址;

3. ^的用法

通过上面的例子,我们可以得到 ^的作用: ^用于得到一个可位寻址字节单元的某一位;
^ 的具体用法为:位变量名=(可位寻址字节单元地址/变量名)^(第几位)。(如:sbit VAR1 = P0 ^0)
在后续的使用中,如:VAR1=0;就是把0x80为地址的字节单元的第0位(即P0口的第0位)的数据置0。

4. 可位寻址的字节单元地址

  • 前128B中有可位寻址区:51单片机内RAM中有可进行位寻址的空间,单元地址是20H~ 2FH,共16个单元,每个单元8个位可以位寻址,共128个位,位地址是:00H~7FH。
    sfr地址,51单片机,数据结构,单片机,嵌入式硬件
  • 特殊功能寄存器区可寻址单元:而在特殊功能寄存器区也有可位寻址的寄存器。这些寄存器的单元地址以0和8结尾,如:P0=0x80;TCON= 0x88;P1= 0x90;P2= 0xA0…。这些寄存器都可对单独位进行操作,而其他寄存器只能一次性对一个字节操作。位地址的编址规律为:如果一个单元地址为0x80,那么它的8位的为地址为:0x80~0x87(从当前单元地址往后数8个)。因此单元地址每隔8个才有1个可位寻址的寄存器,为的是位地址不重复。

5. 区分位地址和字节单元地址

如:字节单元地址P0=0x80,位地址P0_0=0x80,两者虽然地址是重叠的,但是使用时不用担心混用,如:指令对位数据进行操作时,0x80代表位地址;指令对字节数据进行操作时,0x80代表单元地址。文章来源地址https://www.toymoban.com/news/detail-712587.html

到了这里,关于C51编程中sfr,sbit的用法以及位地址和字节单元地址的区别的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 基于C51的DHT11(温湿度传感器)编程(详解)

    前言 当你点进看这篇博客时,相信对DHT11产品的概述与特性没有任何兴趣,所以跳过那部分,直接上技术活。 1、温湿度如何采集 根据产品说明文档:用户MCU发送一次开始信号后,DHT11从低功耗模式转换到高速模式,等待主机开始信号结束后,DHT11发送响应信号,送出40bit的数据,并

    2024年02月09日
    浏览(30)
  • 一周学完C51单片机(1)点亮LED灯以及按键控制

    首先找到单片机的原理图,找到LED模块。我这里是P2口是连接了LED灯,通过此原理图我们可以看到 我们只需将单片机的IO口置为低电平,就可以点亮LED灯。 因为代码比较简单,我就分别展示一下代码,一颗LED灯的亮灭,流水灯 延时函数可以通过小工具来实现,选择好系统的频

    2024年02月08日
    浏览(48)
  • C51单片机按键控制流水灯模式(定时器版本)以及定时器时钟

      上篇文章我们学了关于定时器的三大组成部分及许多寄存器的概念问题,这篇文章我们就要开始讲解实操部分。 首先,我们先来看看本文最后写成的代码:      以上三张是代码的主函数,此外,代码中还需用到的独立按键检测代码在下面:  注意:头文件中#ifndef和#def

    2023年04月17日
    浏览(49)
  • 51单片机的特殊功能寄存器(SFR)

    阅读前提醒: 文中提到的8051指的是8051微控制器,即51单片机 在上一篇文章51单片机的存储结构中,提到8051微控制器的RAM被划分为通用寄存器、按位寻址寄存器、寄存器组、以及特殊功能寄存器。 这里讲一下特殊功能寄存器(SFR)。 8051的特殊功能寄存器用于控制各种外围硬

    2023年04月13日
    浏览(80)
  • MDK与 C51安装共存、安装pack、添加STC单片机型号和头文件到Keil中以及keil界面美化

    进入 keil官网产品下载界面 **MDK安装 ** 双击”MDK“安装包,然后按着提示,一步一步安装。 这里我们安装在“D:keil5keil5_MDK”路径 **C51安装 ** 双击**“ C51 ”**安装包,然后按着提示,一步一步安装。 这里我们安装在“D:keil5keil5_C51”路径 ** 此时已完成C51与MDK的环境共存**

    2024年02月07日
    浏览(55)
  • 【Linux】socket 编程(socket套接字介绍、字节序、socket地址、IP地址转换函数、套接字函数、TCP通信实现)

    橙色 所谓套接字,就是对网络中不同主机上的应用进程之间进行双向通信的端点的抽象。 一个套接字就是网络上进程通信的一端,提供了应用层进程利用网络协议交换数据的机制。从所处的地位来讲,套接字上联应用进程,下联网络协议栈,是应用程序通过网络协议进程通

    2024年02月09日
    浏览(56)
  • 【C51】10-基础51单片机的小车项目(51完结)

    10.1小车的安装 10.2电机模块的开发(L9110S) 接通 VCC , GND 模块电源指示灯亮, 以下资料来源官方,但是不对,根据下节课实际调试 IA1 输入高电平, IA1 输入低电平,【 OA1 OB1 】电机正转; IA1 输入低电平, IA1 输入高电平,【 OA1 OB1 】电机反转; IA2 输入高电平, IA2 输入低

    2024年02月08日
    浏览(56)
  • C51实现流水灯

    1、 先八盏灯从左至右依次点亮,同一时刻仅有一盏灯处于被点亮状态,每盏灯亮0.5s,然后八盏灯从右至左依次点亮,同一时刻仅有一盏灯处于被点亮状态,每盏灯亮0.5s,循环两遍; 2、 八盏灯同时闪烁,亮1s,灭0.5s;,实现4次; 3、 上述过程周而复始的循环运行; 代码如

    2024年02月07日
    浏览(42)
  • 基于C51控制蜂鸣器

    🐋 前言:本实验基于STC89C52RC单片机,根据电路原理图编程控制蜂鸣器。由于51系列单片机结构大同小异,读者可根据此博客举一反三,实现所需完成的功能。 🐬 目录: 一、蜂鸣器介绍 二、电路原理图分析 三、实现蜂鸣器鸣叫 🐇 实验所选单片机及结构展示(以普中C51为例,

    2024年02月05日
    浏览(41)
  • 初识C51单片机(详解)

    前言: 单片机是一种我们常见的开发板,我们经常会在一些项目中使用到它。而今天我们要介绍的是C51单片机,下面来介绍一下今天的”主角“:STC89C52RC40I-LQFP44单片机(后面将用到它做一些项目)。 1.了解命名规则一张图搞定: 2.学会看单片机电路原理图 只是一些初中的电

    2024年02月10日
    浏览(66)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包