【单片机基础】初始51单片机

news2024/9/28 5:29:04

文章目录

  • 学习单片机需要掌握的基础知识
  • 1、用一句话说透什么是单片机:
  • 2、单片机上集成了什么?
  • 3、STC89C51/52单片机过时了吗?
  • 4、STC89C51和STC89C52有什么区别?
  • 5、单片机时序的概念(基础知识很重要)
  • 6、单片机复位作用以及复位方式
  • 7、单片机复位后各特殊功能寄存器状态
  • 8、单片机最小系统构成
  • 9、单片机RAM和ROM的特点
  • 10、单片机的寄存器

学习单片机需要掌握的基础知识

学习单片机应该熟练掌握C语言基础(学到C语言的结构体)、数字电路、模拟电路、电路基础。

学习单片机要养成翻看datasheet的习惯,因为datasheet可以提供最权威的信息。单片机的datasheet可以到http://www.stcmcudata.com/ 查看下载。

1、用一句话说透什么是单片机:

单片机到全称是单片微型计算机,是将计算机到主要部分集成在一颗芯片上到微控制器。


扩展知识
微处理器是由一片或少数几片规模集成电路组成到中央处理器(CPU)


2、单片机上集成了什么?

以STC89C52系列单片机为例

  • 中央处理器(CPU)
  • 程序存储器(ROM所以的代码烧录都在这里)
  • 数据存储器(RAM)
  • 定时/计数器
  • UART串口
  • I/O接口
  • EEPROM
  • 看门狗模块

STC89C52系列单片机几乎包含了数据采集和控制中所需的所有单元模块,可以称得上一个片上系统。
请添加图片描述

扩展
CPU:执行用户程序指令,MCU的大脑
总线:MCU内部数据的“桥梁”

3、STC89C51/52单片机过时了吗?

查阅网络资料,在1980年Intel公司推出MCS-51单片机。至今为至,现在大学电子信息专业必开的一门专业课便是51单片机。
我个人认为51单片机并没有过时,有如下原因:
1、51单片机因为发行到时间长,用的人多资料是比较全的,遇到问题我们到网上都能找到解决到方案。因为51单片机用的人多,现在在网上购买一些传感器模块,商家提供的例程一般都有STC89C52的。
2、 学习51单片机是入门嵌入式的基础,51单片机的知识学扎实了,之后学习更加高级到单片机会非常的容易。学习编程的会有这么一种感受,当学精了一门编程语言的时候,再去接触其他编程语言就非常到容易。

4、STC89C51和STC89C52有什么区别?

请添加图片描述

从上图我们可以看出STC98C51和STC89C52在工作电压和工作频率是相同的,不同的是它的程序空间和RAM空间不一样,还有STC89C52多出了一个定时器同时也增加了一个定时器中断源

5、单片机时序的概念(基础知识很重要)

https://blog.csdn.net/lzxiaotu/article/details/118424623

6、单片机复位作用以及复位方式

  • 复位的作用:复位操作可以完成单片机的初始化,也可以使处于死机状态下的单片机程序重新开始运行
  • STC89C52系列单片机复位方式有4种:外部RST引脚复位、软件复位、掉电/上电复位、看门狗复位
    我们做单片机开发掌握外部RST引脚复位和掉电/上电复位基本够用。

本篇文章只介绍常用的两种复位方式,其他方式可查看datasheet

  • 外部RST引脚复位:外部RST引脚复位就是从外部向RST引脚施加一定宽度的复位脉冲,从而实现单片机的复位。将RST复位管脚拉高并维持至少24个时钟加10us后,单片机会进入复位状态,将RST复位管脚拉回低电平后,单片机结束复位状态并从用户程序区的0000H处开始正常工作。通俗的说,单片机的RST引脚复位和电脑的重启按键功能是一样的,当电脑死机的时候,我们可以不关闭电脑的电压,直接按下电脑的重启键,电脑便可以复位重启
  • 掉电/上电复位:当电源电压VCC低于.上电复位/掉电复位电路的检测门槛电压时,所有的逻辑电路都会复位。当VCC重新恢复正常电压时,单片机延迟32768个时钟后,上电复位/掉电复位结束。进入掉电模式时,上电复位/掉电复位功能被关闭。通俗的说,单片机上电的一瞬间会进行复位一次,和电脑开机一样

7、单片机复位后各特殊功能寄存器状态

单片机复位操作使单片机进入初始化状态,其中包括使程序计数器PC=0x0000H,这表明程序从0000H地址单元开始执行。有区别的是单片机冷启动后,RAM为随机值,运行中的复位操作不改变RAM区中的内容。而特殊功能寄存器复位后的状态都为确定值,具体可查看芯片手册。

8、单片机最小系统构成

单片机最小系统是由芯片外部接上时钟电路、复位电路和电源构成的一个基本应用系统。主要包含的部分,单片机、时钟电路、复位电路、电源电路、程序加载口(程序下载电路)。单片机芯片是一个微处理器,所编写的程序加载到单片机里才能够正常运行。如下图,STC89C52最小系统构成。
请添加图片描述

9、单片机RAM和ROM的特点

RAM:随机存取存储器(Random Access Memory,缩写:RAM),也叫主存,是与CPU直接交换数据的内部存储器。它可以随时读写(刷新时除外),而且速度很快,通常作为操作系统或其他正在运行中的程序的临时数据存储介质。

ROM(Flash):只读存储器(Read-Only Memory,ROM)以非破坏性读出方式工作,只能读出无法写入信息。信息一旦写入后就固定下来,即使切断电源,信息也不会丢失,所以又称为固定存储器。

如何区分RAM和ROM呢?我们买手机会有8GB+256GB的容量选择,这里就是我们所的存储器RAM和ROM的存储容量,无论手机还是电脑,容量小的一定是RAM,而容量大的一定是ROM。

问题:当我们在keil创建char c,的变量时,这个变量储存到哪里去了?
储存在内部RAM的低128个字节里,默认从0x08开始

其实,我们平时定义变量类型一般都是默认加了data修饰,此方法定义的变量是存储到单片机内部RAM低128字节,响应速度快,采用直接寻址方式。
那么为什么从0x08开始呢?
因为单片机有一个8位的堆栈指针(SP),用于指向堆在区。单片机复位后,堆栈指针SP为07H,指向了RAM低128为的工作寄存器组中的07H。
SP的作用是用于保护在程序运行过程中的一些零时数据,例如在进入中断前会把程序计数器(PC)的地址存入堆栈中,这叫入栈。在退出中断的时候,又会把进中断前的存入的地址重新放到PC,这叫出栈。
请添加图片描述

10、单片机的寄存器

什么是寄存器呢?
我们学习过数字电路应该知道,寄存器是用来存放二进制信息的,这些信息通常是代运算的数据、代码或运算中间的结果。因此,寄存器是电子计算机的主要部件电路。

明白了寄存器,我们思考一个问题,我们做单片机编程就是使用MCU控制单片机外设来完成我们想要实现的功能。
然而,CPU只有读和写这个操作,不能直接控制单片机的硬件,硬件一般是由其对应的控制器来控制的。当我们控制外设进行工作的时候,我们可以找到特殊功能寄存器(SFRs)的地址,然后通过C51指令“sfr”赋予特殊功能寄存器一个变量,这样后面的程序就可以通过这个变量指引该地址,通过改变这些地址的变量来达到控制外设的目的。通俗的说就是,通过读和写寄存器的变量来实现单片机控制外设目的
如果每次都是以这种方式访问,不仅不好记忆还容易出错,这时我们可以给这些地址变量写一个“别名”,这个“别名”就是我们所说的寄存器了。

寄存器映射:存储器本身不具有地址信息,它的地址是由芯片厂商或用户分配,给存储器分配地址的过程就称为存储器映射。
地址映射表:CPU读写操作都会有对应的地址,每一个模块都有自己的地址。

由于本人水平有限,本文章涉及理论知识较多,文中难免会存在疏漏和不足,敬请大家批评指正。

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

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

相关文章

基于功能安全的车载计算平台开发:系统层面

相对于功能安全概念阶段,系统阶段更专注于产品的详细设计,涉及系统工程、安全工程和架构设计等不同技术领域。同时,系统阶段也经常扮演着供应链上、下游功能安全的DIA交互阶段,是功能安全中非常重要且考验技术水平的阶段。 01 应…

微服务框架 SpringCloud微服务架构 8 Gateway 网关 8.6 过滤器链执行顺序

微服务框架 【SpringCloudRabbitMQDockerRedis搜索分布式,系统详解springcloud微服务技术栈课程|黑马程序员Java微服务】 SpringCloud微服务架构 文章目录微服务框架SpringCloud微服务架构8 Gateway 网关8.6 过滤器链执行顺序8.6.1 过滤器执行顺序8.6.2 总结8 Gat…

【毕业设计】大数据房价数据分析可视化 - python

文章目录0 前言1 课题背景2 数据爬取2.1 爬虫简介2.2 房价爬取3 数据可视化分析3.1 ECharts3.2 相关可视化图表4 最后0 前言 🔥 Hi,大家好,这里是丹成学长的毕设系列文章! 🔥 对毕设有任何疑问都可以问学长哦! 这两…

深度讲解风险策略的调优|附实操案例

量化风控审核过程中的通过率在贷前策略中是一大重要的内容,另外一个是逾期率。二者之间的因果关系就是通过率高低变化决定了逾期率风险的走势,通过率决定了逾期率的结果,而逾期率又对通过率起到了一个制衡的作用。 我们在本周早前详细谈过这个…

先验 后验 似然估计

一、完备事件组 设E是随机试验,Ω是相应的样本空间,A1,A2,...An为Ω的一个事件组,若 (1)AiAj(ij) (2)A1A2...AnΩ 则称A1A2...An为样本空间的…

web安全之MySQL手工注入的原理讲解和实验分析

目录 前提知识 靶场搭建 手工注入 高权限注入 sql注入之文件读写 基础防御 前提知识 数据库及sql语句知识,web相关知识。union合并查询的两个特征:前后查询互不干扰,前后查询的字段可以不同但是数量必须一致。order by 通过测试来猜解表…

解决SpringBoot整合Mybatis和Mybatis-Plus不能公用(版本兼容性问题)

1 前言 虽然Mybatis-Plus很好使,可以帮助我们生成CRUD的接口,但是有的情况下我们需要联合其他表进行多表查询,这时候Mybatis可以手写SQL的优势就体现出来了,一般在开发中,很多项目都是Mybatis和Mybatis-Plus公用的&am…

Markdowm使用手册

Markdown使用手册 目录Markdown使用手册一、基础语法1.1 书写各级标题1.2 字体加粗/斜体1.2.1 字体加粗1.2.2 字体倾斜1.3 线条使用1.3.1 删除线1.3.2 高亮线1.3.3 下划线二、插入工具2.1 插入代码2.1.1 插入某一行的代码2.1.2 插入整块的代码2.2 插入链接2.3 插入数学公式2.4 …

1546_AURIX_TC275_CPU子系统_指令耗时以及程序存储接口

全部学习汇总: GreyZhang/g_TC275: happy hacking for TC275! (github.com) 这里接触到了几种测试的方式。其中一个是反复执行同一个命令,看看执行之间的间隔。执行的时候,命令是有一定顺序的。这样,有时候流水线等特性会导致效率…

【Java并发入门】03 互斥锁(上):解决原子性问题

原子性问题的源头是线程切换 Q:如果禁用 CPU 线程切换是不是就解决这个问题了? A:单核 CPU 可行,但到了多核 CPU 的时候,有可能是不同的核在处理同一个变量,即便不切换线程,也有问题。 所以&a…

C++代码基本内存操作及原理

文章目录前言操作系统内存地址空间基本数据类型sizeof运算符指针运算内存分配与回收堆与栈malloc/new与free/delete基本类型的指针操作类定义中的内存使用前言 ​ C凭借其指针变量可以直接操作内存而得到了非常高的效率和程序性能,在一种编程语言里独树一帜。当然&…

网络变压器工厂:了解POE POE+ 网络变压器(网络隔离滤波器)

Hqst盈盛(华强盛)电子导读:这一节给大家分享:POE POE POE 网络变压器(网络滤波器,网络隔离变压器)的相关知识--poe poe 与POE简介及相关标准; 一、网络变压器 POE、 POE 与POE简介 POE 是Power …

Day17-购物车页面-收货地址-把address信息存储到vuex中

1.将address信息存储到vuex中: 我的操作: 1》在 store 目录中,创建用户相关的 vuex 模块,命名为 user.js: ①:新建user.js文件 ②:为user.js编写内容 2》在 store/store.js 模块中&#xff0c…

typora安装和配置PicGo图床

typora安装和配置PicGo图床typora安装和配置PicGo图床typora安装安装picgo图床配置picgo图床图床服务器picgo配置七牛云typora安装和配置PicGo图床 typora安装 windows安装typora 参考:https://www.bilibili.com/read/cv19476097/ m1 mac安装typora比较简单&…

数据结构-栈ArrayDeque的实现

优雅,实在是太优雅了 能把复杂的东西简单化就是功底。 我为何有如此感慨,了解ArrayDeque的实现你就知道,今天我们要讲的是以栈为思想而实现的ArrayDeque,我们都知道栈是先进后出,和队列相反,如下图&#x…

二叉树的中序遍历三种解法(递归+迭代+线索化)

文章目录递归迭代线索二叉树解法传送门: 添加链接描述 给你一颗二叉树,让你实现中序的遍历 递归 递归没什么好说的,直接无脑递归即可,时间复杂度:O(n),空间复杂度:O&am…

搭建环境AI画图stable-diffusion

目录简介环境准备安装conda(方式1)安装conda(方式2,推荐)验证conda安装成功安装stable-diffusion的环境简介 本文旨在记录过程,偶然看见一个AI画图的,体验看看。 stable-diffusion是一个输入简单图片,输出…

【Java难点攻克】「Guava RateLimiter」针对于限流器的入门到实战和源码原理分析

限流器的思路和算法 如果让你来造一个限流器,有啥想法? 漏桶算法 用一个固定大小的队列。比如设置限流为5qps,1s可以接受5个请求;那我们就造一个大小为5的队列,如果队列为满了,就拒绝请求;如…

JRebelXRebel的配置和使用(进阶篇)

JRebel&XRebel的配置和使用嘚吧嘚设置JRebel快捷键XRebel使用嘚吧嘚 之前简单介绍了JRebel&XRebel的安装和使用,不了解的朋友可以补补课😆。 JRebel&XRebel这款插件不仅仅可以用来热部署,所以继续分享一下这款插件的相关使用&a…

12月2日(第四天)

使用myabtis自动生成的时候&#xff0c;发现xml文件只会merge不会覆盖&#xff0c;这时候需要使用插件&#xff1a; <plugin type"org.mybatis.generator.plugins.UnmergeableXmlMappersPlugin" />MyBatis Generator配置文件context元素的defaultModelType属性…