51基础知识——51单片机小结(一)

本文最后编辑于2020-2-3

概述

51单片机是比较适合新手入门的一款单片机,结构简单,易于学习。本博客为笔者自学完单片机后进行的小总结。
单片机我也是学学放放,中间遇到了很多挫折(当然现在也是),我是自学了C语言之后,在大一下学期开始接触51的,所以,我的51系列blog比较浅显,因为用单片机的时间较少,所以,也并不全面,仅供参考。如有错误,敬请指正。

正文

51单片机的结构(基于MCS-51)

单片机也叫单片微控制器,可以简单的理解为:一种集成在芯片上的微型计算机系统。通用计算机采用冯诺依曼结构(不完全是冯诺依曼结构)而51单片机属于哈佛结构。

为什么51单片机要使用哈佛结构?

(这里之说冯诺依曼结构与哈佛结构的差异)冯诺依曼结构认为程序是特殊的数据,所以将程序与数据一起存储,而哈佛结构将程序与数据分离存储。单片机一般用于控制领域,个人电脑,死机的话可以重启,而单片机一般工作时无人看管,如果跑飞,可能会造成极大的损失。在冯诺依曼结构中,数据与程序一起储存,程序跑飞,可能会对原有的程序片段进行修改,而在哈佛结构中程序片段与数据分离,即使跑飞,程序也不会被修改,(且跑飞后规律很明显,程序区不变,数据区的数据不断变化),相对冯诺依曼结构,哈佛结构的单片机跑飞的几率会变低。

存储器结构

既然讲到了哈佛结构是程序与数据分开来存储的,那就说一说51存储器的结构
ROM:程序存储器
RAM:数据存储器
对于51单片机来说__ROM__是必备的,没有ROM单片机就不能工作,当单片机工作时,指令是从ROM去除来一条一条的执行的。
ROM又有内部ROM和外部ROM之分,内部ROM是在单片机内部的,而外部ROM,是通过地址总线来和单片机通讯的。

单片机是如何来判断该从内部ROM开始读取程序还是从外部RAM开始读取程序?

这里引出单片机的第一个比较重要的引脚EA(EA要加上划线,取反),当EA为高电平(5v)时,单片机从内部存储器开始读取程序,当EA为低电平时,单片机从外部存储器开始读取程序。

高电平与低电平

在数字电路中高电平代表1,低电平代表0,一般规定低电平为00.25V,高电平为3.55V。

为什么单片机有一些引脚要加上划线(如 EA引脚)?

加上划线的引脚代表低电平有效,如EA引脚,加低电平的话,单片机才从外部ROM开始读取指令执行(这样说不严谨,可以简单的这样记)。

引脚

51单片机一共有40个引脚:P0、P1、P2、P3、VCC、GND、RST、EA(反)、ALE、PSEN(反)、XTAL1、XTAL2.
P0到P3为输入输出口。
VCC、GND是主电源引脚。
RST、EA(反)、ALE、PSEN(反)为控制引脚。
XTAL1、XTAL2为震荡电路引脚。

为什么需要震荡电路?

震荡电路一般使用晶振和电容组成、可以产生标准的正弦波信号,相当于单片机的心脏,震荡电路震荡一次,产生一个脉冲信号,单片机执行一次或多次指令。

关于控制引脚

RST就相当于重启
EA(反) 相当于要不要从u盘中启动

其他待补充。。。(目前还没有用到)

I/O口

P1、P2、P3 作为 准双向I/O口 来使用,P0作为 双向I/O口 使用。

准双向I/O口

准双向I/O口在作为输入口使用时,应先写1,再使用。
其中
1.在有外部存储器或拓展I/O口时P0分时复用为低八位地址总线或双向数据总线、P2作为高八位地址总线或双向数据总线。
2.P0口作为I/O口输入时,不需要上拉电阻但需要先置1然后再使用
3.P0口输出时,由于内部没有上拉电阻,故要外接上拉电阻
4.只有P0口没有内接上拉电阻,其他口都有上拉电阻

工作周期和时序

复位方式

在时钟电路工作以后,当外部电路使得RST端出现2个机器周期以上的高电平,系统内部自动复位(重启)。复位方式有两种,手动复位和自动复位。


机器周期和指令周期

机器周期

一个机器周期有六个状态分别为S1-S6.每个状态下有两拍 P1、P2,而一个时钟周期(震荡周期)为一拍

指令周期

计算机取一条指令至执行完该指令需要的时间为指令周期,不同指令,周期不同,大部分指令由一个指令周期或两个指令周期完成,只有乘法、除法指令需要4个指令周期。

以12M的晶振为例,其时钟周期为 1/12M = 1/12us,机器周期为时钟周期X12, 为1us

为何会出现11.0592MHz的晶振?

按照上文所述,12M的晶振应该是比较适合单片机选用的晶振,计算出的机器周期正好为1us方便使用,但为何会出现11.0592M的晶振?,原因是通信时使用的波特率,11.0592可以被较好的分频,而12M每次分频后会产生误差,误差慢慢积累会导致数据越来越不准确,故有11.0592M的晶振。

参考资料
单片机原理及应用
分析单片机晶振大多为11.0592的原因
为什么单片机的晶振会有 11.0592MHz 这个数字?

51基础知识——51单片机小结(一)

全文结束