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不通,网络模块无…

XDAG同步节点部署

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

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

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

线程池有几种创建方式?

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

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

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

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

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

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

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

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

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

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

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

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

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

五年程序员兼职接单的肺腑之言

不知不觉我已经参加工作,当一个程序员五年了,从一个职场菜鸟逐渐变成老油条,个中辛酸只有自己知道。这五年做过各种兼职接单,踩过不少坑,今天就把我在程序员接单上的一些心得体会分享给大家,希望能对兼职接…

Redis--字符串

基础概念 字符串、数字,都会转化为字符串来进行存储 以二进制的方式存储在内存中 key的命名规范 key不宜过长,消耗内存,且在数据查找的这类键值的计算成本高(通过hash计算来查找)不宜过短,可读性查值一…

设计模式-命令模式-笔记

“行为变化”模式 在组件的构建过程中,组件行为的变化经常导致组件本身剧烈的变化。“行为变化”模式组件的行为和组件本身进行解耦,从而支持组件行为的变化,实现两者之间的松耦合。 经典模式:Command、Visitor 动机&#xff0…

C# - Opencv应用(2) 之矩阵Mat使用[矩阵创建、图像显示、像素读取与赋值]

C# - Opencv应用(2) 之矩阵Mat使用[矩阵创建、图像显示、像素读取与赋值] 矩阵创建图像显示与保存像素读取与赋值新建sample02项目,配置opencv4相关包,新建.cs进行测试 1.矩阵创建 //创建空白矩阵 var dst new Mat()//创建并赋…

Continuity” of stochastic integral wrt Brownian motion

See https://imathworks.com/math/math-continuity-of-stochastic-integral-wrt-brownian-motion/

【开源】基于Vue.js的教学过程管理系统

项目编号: S 054 ,文末获取源码。 \color{red}{项目编号:S054,文末获取源码。} 项目编号:S054,文末获取源码。 目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 教师端2.2 学生端2.3 微信小程序端2…

基于Vue+SpringBoot的桃花峪滑雪场租赁系统

项目编号: S 036 ,文末获取源码。 \color{red}{项目编号:S036,文末获取源码。} 项目编号:S036,文末获取源码。 目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 游客服务2.2 雪场管理 三、数据库设…

什么是Jmeter ?Jmeter使用的原理步骤是什么?

1.1 什么是 JMeter Apache JMeter 是 Apache 组织开发的基于 Java 的压力测试工具。用于对软件做压力测试,它最初被设计用于 Web 应用测试,但后来扩展到其他测试领域。 它可以用于测试静态和动态资源,例如静态文件、Java 小服务程序、CGI 脚本…

力扣1038. 从二叉搜索树到更大和树(java,树的中序遍历解法)

Problem: 1038. 从二叉搜索树到更大和树 文章目录 题目描述思路解题方法复杂度Code 题目描述 给定一个二叉搜索树 root (BST),请将它的每个节点的值替换成树中大于或者等于该节点值的所有节点值之和。 提醒一下, 二叉搜索树 满足下列约束条件&#xff…