51单片机应用

目录

​编辑

1.  C51的数据类型

1.1  C51中的基本数据类型

1.2  特殊功能寄存器类型

2.  C51的变量

2.1  存储种类


1.  C51的数据类型

C51是一种基于8051架构的单片机,它支持以下基本数据类型:

  1. 位(Bit):可以表示一个二进制位,只能取0或1。
  2. 无符号字符(unsigned char):占1个字节(8位),取值范围为0~255。
  3. 有符号字符(signed char):占1个字节(8位),取值范围为-128~127。
  4. 无符号整型(unsigned int):占2个字节(16位),取值范围为0~65535。
  5. 有符号整型(signed int):占2个字节(16位),取值范围为-32768~32767。
  6. 单精度浮点型(float):占4个字节(32位),可表示小数位数较多的实数。

        此外,C51还支持其他数据类型,如布尔型(bool)、无符号长整型(unsigned long)、有符号长整型(signed long)、双精度浮点型(double)等。

例如:

C51支持以下数据类型:

  1. char:表示字符类型,占用一个字节。

  2. unsigned char:表示无符号字符类型,占用一个字节。

  3. int:表示整型,通常为16位,可能占用2个字节或4个字节。

  4. unsigned int:表示无符号整型,通常为16位,可能占用2个字节或4个字节。

  5. long:表示长整型,通常为32位,占用4个字节。

  6. unsigned long:表示无符号长整型,通常为32位,占用4个字节。

  7. float:表示单精度浮点类型,通常为32位,占用4个字节。

  8. double:表示双精度浮点类型,通常为64位,占用8个字节。

  9. bit:表示位类型,占用一个位,通常用于表示单个开关状态。

  10. sbit:表示SFR位类型,占用一个位,通常用于访问特殊功能寄存器的位。

        在C51中,数据类型的占用空间可以通过编译器选项进行控制,如使用“--short”选项可将int类型占用空间降低到2个字节。

1.1  C51中的基本数据类型

C51中的基本数据类型和标准C语言中的数据类型基本相同,包括以下几种:

  1. 整型:包括int、short、long等类型,用于表示整数。

  2. 字符型:包括char类型,用于存储字符。

  3. 浮点型:包括float和double类型,用于表示浮点数。

  4. 无符号整型:包括unsigned int、unsigned short、unsigned long等类型,用于表示无符号整数。

  5. 位域:用于表示一个整数中的几位二进制位。

  6. 枚举类型:用于定义一组有限的常量值。

  7. 指针类型:用于存储内存地址。

  8. void类型:用于表示无类型。

        需要注意的是,在C51中,int类型通常是16位的,long类型通常是32位的。此外,C51还支持一些特殊的数据类型,如bit类型(用于表示单个二进制位)、sfr类型(用于访问外设寄存器)等。

1.2  特殊功能寄存器类型

        特殊功能寄存器(Special Function Register, SFR)是用于控制微处理器或微控制器内部各种特殊功能的寄存器。根据其功能和作用不同,特殊功能寄存器可以分为以下几种类型:

  1. 控制寄存器:用于控制微处理器或微控制器的各种操作、模式和状态,例如中断控制寄存器、时钟控制寄存器等。

  2. 状态寄存器:用于存储某些标志位或状态信息,例如标志寄存器、状态字寄存器等。

  3. 数据寄存器:用于存储数据信息,例如通用寄存器、端口寄存器等。

  4. 地址寄存器:用于存储指令或数据的地址信息,例如程序计数器、堆栈指针等。

  5. 偏移寄存器:用于存储某些偏移量或计时信息,例如定时器寄存器、计数器寄存器等。

  6. 存储器映射寄存器:用于存储外部存储器的地址映射信息,例如存储器映射寄存器、DMA控制寄存器等。

        以上是常见的特殊功能寄存器类型,不同的微处理器或微控制器可能会有不同的特殊功能寄存器类型和数量。

        使用sfr或sfr16可以直接对特殊寄存器进行读写操作,而无需关注具体寄存器的地址和操作方式。

例如,使用sfr类型来访问P0口(端口0)的输入状态:

sfr P0 = 0x80; //定义P0特殊功能寄存器地址

unsigned char p0_input = P0; //读取P0口输入状态

使用sfr16类型来访问定时器1的计数值:

sfr16 T1 = 0x8F00; //定义T1特殊功能寄存器地址

unsigned int t1_count = T1; //读取定时器1的计数值

        总之,sfr和sfr16类型为C51编程提供了简化特殊功能寄存器操作的便利性。

2.  C51的变量

        一般情况下,C51变量的定义格式为:数据类型 变量名;其中,数据类型指变量的类型,如整型、浮点型、字符型等;变量名指变量的名称,可自定义,但需符合命名规范,不可与关键字重复。例如,定义一个整型变量count可以写为:int count;

[存储种类] 数据类型说明符 [存储器类型] 变量名1 [= 初值], 变量名2[=初值],...

2.1  存储种类

C51(或基于C51核心的单片机)的存储种类主要包括:

  1. ROM(只读存储器) - 存储程序代码和常量数据。可以是内部ROM或外部ROM。

  2. RAM(随机访问存储器) - 存储变量数据和运行时堆栈。可以是内部RAM或外部RAM。

  3. EEPROM(可擦写可编程只读存储器) - 存储需要频繁修改的数据,如配置信息和状态变量。可以是内部EEPROM或外部EEPROM。

  4. Flash(快闪存储器) - 用于储存程序代码或数据,可进行快速擦除和编程操作。可以是内部Flash或外部Flash。

  5. XDATA(外部数据存储器) - 用于访问较大的数据块,如大型数组和结构体。可以是外部SRAM或外部Flash。

以上是C51的主要存储种类,其具体配置及大小取决于具体的芯片型号和应用需求。

        51系列单片机片内有许多特殊功能寄存器,包括IO口寄存器、定时器寄存器、中断寄存器、串口寄存器、ADC/DAC寄存器等。这些寄存器一般都是用于控制器的各种外设和模块,例如控制IO口的输入输出状态、设置定时器的计时条件和模式、配置中断的触发方式和优先级、设置串口的波特率和工作模式、控制ADC/DAC的输入输出等。掌握这些特殊功能寄存器的使用方法,可以帮助程序员更加灵活地控制单片机的各项功能。

51单片机应用从零开始(六)·逻辑运算-CSDN博客

更多推荐:

时光の尘_千题千解·Java面试宝典,Linux学习,C++学习-CSDN博客

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/198384.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

WSL 2 更改默认安装的 Linux 发行版

目录 什么是 WSL 2?更改默认安装的 Linux 发行版更改发行版的 WSL 版本 什么是 WSL 2? WSL 2 是适用于 Linux 的 Windows 子系统体系结构的一个新版本,它支持适用于 Linux 的 Windows 子系统在 Windows 上运行 ELF64 Linux 二进制文件。 它的…

单元测试实战(四)MyBatis-Plus 的测试

为鼓励单元测试,特分门别类示例各种组件的测试代码并进行解说,供开发人员参考。 本文中的测试均基于JUnit5。 单元测试实战(一)Controller 的测试 单元测试实战(二)Service 的测试 单元测试实战&am…

Flutter 使用 device_info_plus 遇到的问题

问题:引用device_info_plus 插件出现了异常,不知道为啥打开项目的时候就不能用了。 解决:改了版本解决 Target of URI doesnt exist: package:device_info_plus/device_info_plus.dart. (Documentation) Try creating the file reference…

react antd下拉选择框选项内容换行

下拉框选项字太多,默认样式是超出就省略号,需求要换行全展示,选完在选择框里还是要省略的 .less: .aaaDropdown {:global {.ant-select-dropdown-menu-item {white-space: pre-line !important;word-break: break-all !important;}} } html…

uniapp 手动调用form表单submit事件

背景&#xff1a; UI把提交的按钮弄成了图片&#xff0c;之前的button不能用了。 <button form-type"submit">搜索</button> 实现&#xff1a; html&#xff1a; 通过 this.$refs.fd 获取到form的vue对象。手动调用里面的_onSubmit()方法。 methods:…

STM32CubeMX学习笔记-CAN接口使用

STM32CubeMX学习笔记-CAN接口使用 CAN总线传输协议1.CAN 总线传输特点2.位时序和波特率3.帧的种类4.标准格式数据帧和遥控帧从STM32F407参考手册中可以看出主要特性如下CAN模块基本控制函数CAN模块消息发送CAN模块消息接收标识符筛选发送中断的事件源和回调函数 CubeMX项目设置…

OpenAI 地震!首席执行官被解雇,背后的原因是?

11月17日&#xff0c;ChatGPT的制造商OpenAI表示&#xff0c;经过审查后发现联合创始人兼首席执行官 Sam Altman与董事会“沟通时并不一贯坦诚”&#xff0c;因此公司已经决定解雇他。这家人工智能&#xff08;AI&#xff09;公司在一份声明中表示&#xff1a;“董事会不再相信…

基于深度学习的单帧图像超分辨率重建综述

论文标题&#xff1a;基于深度学习的单帧图像超分辨率重建综述作者&#xff1a; 吴 靖&#xff0c;叶晓晶&#xff0c;黄 峰&#xff0c;陈丽琼&#xff0c;王志锋&#xff0c;刘文犀发表日期&#xff1a;2022 年9 月阅读日期 &#xff1a;2023.11.18研究背景&#xff1a; 图像…

一款实用的.NET Core加密解密工具类库

前言 在我们日常开发工作中&#xff0c;为了数据安全问题对数据加密、解密是必不可少的。加密方式有很多种如常见的AES&#xff0c;RSA&#xff0c;MD5&#xff0c;SAH1&#xff0c;SAH256&#xff0c;DES等&#xff0c;这时候假如我们有一个封装的对应加密解密工具类可以直接…

美创科技与南京大数据安全技术有限公司达成战略合作

近日&#xff0c;美创科技与南京大数据安全技术有限公司正式签署战略合作协议&#xff0c;优势力量共享、共拓共创共赢。 美创科技CEO柳遵梁、副总裁罗亮亮、副总裁王利强&#xff0c;南京大数据安全技术有限公司总经理潘杰、市场总监刘莉莎、销售总监王皓月、技术总监薛松等出…

上海亚商投顾:三大指数小幅上涨 HBM概念股全天强势

上海亚商投顾前言&#xff1a;无惧大盘涨跌&#xff0c;解密龙虎榜资金&#xff0c;跟踪一线游资和机构资金动向&#xff0c;识别短期热点和强势个股。 一.市场情绪 三大指数早盘窄幅震荡&#xff0c;午后集体拉升翻红&#xff0c;黄白二线走势分化&#xff0c;题材热点快速轮…

面向未来的自动化:拥抱机器人即服务(RaaS)

01. RaaS是什么&#xff1f; 对于希望实现业务流程自动化的公司来说&#xff0c;机器人通常是一笔巨大的资本支出。由于机器人非常昂贵&#xff0c;公司可能需要等待数年才能看到投资回报。正是由于这一现实&#xff0c;许多较小的组织无法投资机器人。 但一些机器人公司正在采…

Python武器库开发-flask篇之session与cookie(二十六)

flask篇之session与cookie(二十六) 在 Flask 中&#xff0c;可以使用 session 来在不同请求之间存储和传递数据。Session 在客户端和服务器端之间交换&#xff0c;但是数据存储在服务器端。 Session 与 Cookie 的区别 session 和 cookie 都可以用来在不同请求之间存储和传递…

青岛数字孪生赋能工业制造,加速推进制造业数字化转型

随着企业数字化进程的推进&#xff0c;数字孪生技术逐渐在汽车行业得到广泛应用。5G与数字孪生、工业互联网的融合将加速数字中国、智慧社会建设&#xff0c;加速中国新型工业化进程&#xff0c;为中国经济发展注入新动能。数字孪生、工业物联网、工业互联网等新一代信息通信技…

Spring IOC/DI和MVC及若依对应介绍

文章目录 一、Spring IOC、DI注解1.介绍2.使用 二、Spring MVC注解1.介绍2.使用 一、Spring IOC、DI注解 1.介绍 什么是Spring IOC/DI&#xff1f; IOC(Inversion of Control&#xff1a;控制反转)是面向对象编程中的一种设计原则。其中最常见的方式叫做依赖注入&#xff08;…

物联网AI MicroPython学习之语法 TIMER硬件定时器

学物联网&#xff0c;来万物简单IoT物联网&#xff01;&#xff01; TIMER 介绍 模块功能: 硬件定时器模块 接口说明 Timer - 构建Timer对象 函数原型&#xff1a;Timer(id)参数说明&#xff1a; 参数类型必选参数&#xff1f;说明idintY硬件定时器外设模块id&#xff1a…

Ubuntu20.0中安装Gradle

下载Gradle到temp文件夹 wget https://services.gradle.org/distributions/gradle-8.3-bin.zip -P /tmp 然后解压文件到/opt/gradle目录 sudo unzip -d /opt/gradle /tmp/gradle-8.3.zip 配置Gradle环境变量 接下来我们会创建一个gradle.sh文件来保存Gradle的环境变量 sudo…

斯坦福机器学习 Lecture2 (假设函数、参数、样本等等术语,还有批量梯度下降法、随机梯度下降法 SGD 以及它们的相关推导,还有正态方程)

假设函数定义 假设函数&#xff0c;猜一个 x->y 的类型&#xff0c;比如 y ax b&#xff0c;随后监督学习的任务就是找到误差最低的 a 和 b 参数 有时候我们可以定义 x0 1&#xff0c;来让假设函数的整个表达式一致统一 如上图是机器学习中的一些术语 额外的符号&#xf…

22. 深度学习 - 自动求导

Hi&#xff0c;你好。我是茶桁。 咱们接着上节课内容继续讲&#xff0c;我们上节课已经了解了拓朴排序的原理&#xff0c;并且简单的模拟实现了。我们这节课就来开始将其中的内容变成具体的计算过程。 linear, sigmoid和loss这三个函数的值具体该如何计算呢&#xff1f; 我们…

第14届蓝桥杯青少组python试题解析:23年5月省赛

选择题 T1. 执行以下代码&#xff0c;输出结果是&#xff08;&#xff09;。 lst "abc" print(lstlst)abcabc abc lstlst abcabc T2. 执行以下代码&#xff0c;输出的结果是&#xff08;&#xff09;。 age {16,18,17} print(type(sorted(age)))<class set&…