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.mzph.cn/news/155932.shtml

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

相关文章

超级实用的程序员接单平台,看完少走几年弯路,强推第一个!

”前途光明我看不见,道路曲折我走不完。“ 兜兜转转,心心念念,念念不忘,必有回响。终于找到了....... 网络上好多人都在推荐程序员线上接单,有人说赚得盆满钵满,有的人被坑得破口大骂,还有的人…

STM32踩坑:LAN8720未接网线,上电后再接网线,网络模块无法正常使用

LAN8720未接网线,上电后再接网线,网络模块无法正常使用 一、问题描述 最近因为做的项目出了BUG,STM32 单片机在未接网线的状态下,上电一段时间后,将网线插入网口后,IP地址ping不通,网络模块无…

正则笔记(持续更新)

1. java 正则替换 指定字符及其之前的字符 System.out.println("em_4b6add2cfb415db2".replaceFirst("\\.*._",""));//结果 -> e4b6add2cfb415db22. java 正则替换 指定字符及其之后的字符 String name "name.keyword^1.0" ; St…

怎么使用OpenFeign和配置中心

首先&#xff0c;在您的Spring Boot项目中添加OpenFeign和配置中心的依赖项。您可以通过将以下内容添加到项目的pom.xml文件中来实现&#xff1a; <dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-openfei…

XDAG同步节点部署

系统环境要求 JDK : v17 Maven : v3.9.1-v3.9.5 MySQL : v8.0系列 1、MySQL8.0安装 1&#xff09;docker-compose安装详情 MySQL安装 2&#xff09;配置数据库账号密码及键表 # docker exec -it mysql8 /bin/bash # root0286a1fd60e6:/# mysql -uroot -p Enter password:…

ubuntu 20.04 搭建crash dump问题分析环境

ubuntu 20.04 搭建crash dump问题分析环境 1 安装依赖软件1.1 linux-dump1.2 kexec-tools1.3 安装crash工具1.4 安装gdb调试工具1.5 安装ubuntu内核调试符号1.5.1 GPG 秘钥导入1.5.2 添加仓库配置1.5.3 更新软件包1.5.4 下载和安装内核调试符号1.5.5 验证内核调试符号已经被安装…

SELinux零知识学习二十三、SELinux策略语言之类型强制(8)

接前一篇文章&#xff1a;SELinux零知识学习二十二、SELinux策略语言之类型强制&#xff08;7&#xff09; 二、SELinux策略语言之类型强制 3. 访问向量规则 AV规则就是按照对客体类别的访问许可指定具体含义的规则&#xff0c;SELinux策略语言目前支持四类AV规则&#xff1a…

SpringBoot学习笔记-创建个人中心页面(下)

笔记内容转载自 AcWing 的 SpringBoot 框架课讲义&#xff0c;课程链接&#xff1a;AcWing SpringBoot 框架课。 CONTENTS 1. 实现个人中心页面2. POJO时区修改3. 集成代码编辑器 本节实现个人中心的前端页面&#xff0c;用户能够查看自己的 Bot 信息&#xff0c;并能创建、修改…

【Echart】Echart设置label太长隐藏:

文章目录 第一种&#xff1a;竖排显示第二种&#xff1a;显示部分第三种&#xff1a;强制显示所有标签并旋转 第一种&#xff1a;竖排显示 xAxis: {type: category,data: res.data.data.sz.xAxis,axisLabel:{fontSize:12,formatter: function(value) {return value.split().joi…

线程池有几种创建方式?

程序员的公众号&#xff1a;源1024&#xff0c;获取更多资料&#xff0c;无加密无套路&#xff01; 最近整理了一波电子书籍资料&#xff0c;包含《Effective Java中文版 第2版》《深入JAVA虚拟机》&#xff0c;《重构改善既有代码设计》&#xff0c;《MySQL高性能-第3版》&…

人员定位系统人员聚集风险监测预警功能为企业安全生产保驾护航!

危化企业生产区域由于装置设施开停工、设备检维修或其它原因&#xff0c;会导致在局部作业区域出现作业操作人员、指挥管理人员不定时、不定点的聚集情况&#xff0c;一旦发生泄漏中毒、火灾爆炸、高温高热物质喷溅等事故&#xff0c;人员聚集将会在一定程度上加重事故后果的严…

【测试开发】学习测试前的基础知识

文章目录 目录 前言 一、什么是软件测试 二、软件测试的发展史 三、软件测试和研发的区别 四、测试人员应该具备的能力 五、测试所需要知道的基本概念 1.需求 六、软件错误&#xff08;BUG&#xff09;的概念 前言 本篇文章主要讲解在学习测试前一些需要了解的知识。 一、什…

2023年【A特种设备相关管理(锅炉压力容器压力管道)】模拟考试题及A特种设备相关管理(锅炉压力容器压力管道)作业考试题库

题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 A特种设备相关管理&#xff08;锅炉压力容器压力管道&#xff09;模拟考试题参考答案及A特种设备相关管理&#xff08;锅炉压力容器压力管道&#xff09;考试试题解析是安全生产模拟考试一点通题库老师及A特种设备相关…

【优秀毕设】基于vue+ssm+springboot的网上购物商城系统设计

摘 要 随着科学技术的飞速发展&#xff0c;社会的方方面面、各行各业都在努力与现代的先进技术接轨&#xff0c;通过科技手段来提高自身的优势&#xff0c;网上商城购物系统当然也不能排除在外。网上商城购物系统是以实际运用为开发背景&#xff0c;运用软件工程原理和开发方…

物联网AI MicroPython学习之语法 PWM脉宽调制模块

学物联网&#xff0c;来万物简单IoT物联网&#xff01;&#xff01; PWM 介绍 模块功能: PWM脉宽调制驱动模块 接口说明 PWM - 构建PWM对象 函数原型&#xff1a;PWM(ch, freq, duty)参数说明&#xff1a; 参数类型必选参数&#xff1f;说明chobjectYPin对象例如&#xf…

3、LeetCode之无重复字符的最长子串

给定一个字符串 s &#xff0c;请你找出其中不含有重复字符的 最长子串 的长度 输入: s "abcabcbb" 输出: 3 解释: 因为无重复字符的最长子串是 "abc"&#xff0c;所以其长度为 3。转载&#xff1a; C常用语法——unordered_set 题目主要思想&#xff…

jmeter 主从配置

配置 主从需要在同一子网。 可以修改从机的端口&#xff0c;主要是防火墙的原因&#xff0c;这样就可以在防火墙只配置一个端口&#xff0c;如果没有防火墙&#xff0c;可以不用配置 server_port1099 server.rmi.localport1099 centos防火墙开端口 sudo firewall-cmd --zonep…

直播间弹幕直播游戏开发教程

随着直播技术的不断发展&#xff0c;交互式弹幕直播游戏成为吸引用户参与的新兴方式。这种游戏融合了实时弹幕互动和直播视频&#xff0c;为观众和主播提供了更加丰富的互动体验。在这篇文章中&#xff0c;我们将探讨从概念到实现的步骤&#xff0c;帮助你打造一款引人入胜的交…

20天拿下华为OD笔试之【DP/贪心】2023B-观看文艺汇演【欧弟算法】全网注释最详细分类最全的华为OD真题题解

文章目录 【DP/贪心】2023B-观看文艺汇演题目描述与示例输入输出示例一输入输出说明 示例二输入输出说明 示例三输入输出 解题思路原始数据处理贪心思想求解问题动态规划求解问题 代码解法一&#xff1a;贪心时空复杂度 解法二&#xff1a;DP时空复杂度 华为OD算法冲刺训练 【D…

Frida hook android 应用程序

Frida hook android 应用程序 之前已经讲过了frida的安装和使用&#xff0c;本篇文章主要讲下怎么hook android 的应用程序。 1&#xff1a;编写hook脚本 如下test.js Java.perform(function () {var WelcomeActivity Java.use(com.tencent.mm.plugin.account.ui.WelcomeA…