Skip to content
This repository has been archived by the owner on Dec 2, 2023. It is now read-only.

Latest commit

 

History

History
751 lines (367 loc) · 27.6 KB

笔记.md

File metadata and controls

751 lines (367 loc) · 27.6 KB

单片机复习

[toc]

1.单片机的结构

1.1单片机的逻辑结构

image-20210606161931681

image-20210606161953777

1.2单片机的硬件结构

1.2.1内部数据存储器RAM(Random Access Memory)

RAM内部单元分配

低128单元区

工作寄存器区

寄存器有四组 每组8个单元 在组中按R0-R7命名

image-20210606151713504

位寻址区

image-20210606152051348

用户RAM区

堆栈操作

image-20210606152151509

高128单元区

专用寄存器

image-20210606152253056

累加器 Acc 8位

image-20210606152643891

寄存器 B 8位

image-20210606152700357

程序计数器 PC 16位

image-20210606154636338

程序状态字 PSW 8位

唯一一个用户不能直接使用的专用寄存器

image-20210606154643836

image-20210606154929713

数据指针 DPTR 16位

image-20210606155242695

堆栈指针 SP 8位

image-20210606155554331

专用寄存器直接地址小结

*可以进行位寻址的寄存器

image-20210606155836145

1.2.2内部程序存储器ROM(Read Only Memory)

每8位 一个字节 作为一个引导区的功能

从 0003H开始 外0 定0 外1 定1 串

image-20210606160638250

1.2.3外部引脚

STC89C52引脚图

P0口

P0口将作为总线的低8位地址线和8位数据线使用

P1口

P1口可以做I/O口使用 连接输入/输出设备

P2口

P2口将作为总线的高8位地址线使用 没有使用的高位地址线 将作为存储器的片选信号

P3口

P3口的P3.6和P3.7将作为片外数据存储器的写信号、读信号 即做控制总线使用 单片机的29引脚 PSEN将作为片外程序存储器的读信号。

P3口其它引脚 可作为专用线使用 如定时计数器的输入、外部中断0和1的输入、串行口的 数据输入、输出线。

P0口:P0口是一个8位漏极开路的双向I/O口。作为输出口,每位能驱动8个TTL逻辑电平。

对P0端口写“1”时,引脚用作高阻抗输入。

**当访问外部程序和数据存储器时,P0口也被作为低8位地址/数据复用。在这种模式下,P0具有==内部==上拉电阻。**在flash编程时,P0口也用来接收指令字节;在程序校验时,输出指令字节。程序校验时,需要外部上拉电阻。

P1口:P1口是一个具有内部上拉电阻的8 位双向I/O 口,p1 输出缓冲器能驱动4个TTL逻辑电平。对P1 端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL)。

  此外,P1.0和P1.2分别作定时器/计数器2的外部计数输入(P1.0/T2)和时器/计数器2 的触发输入(P1.1/T2EX),具体如下表所示。在flash编程和校验时,P1口接收低8位地址字节。

img

RST

RST——复位输入。当振荡器工作时,RST引脚出现两个机器周期以上高电平将是单片机复位。

ALE/PROG

ALE——当访问外部程序存储器或数据存储器时,ALE(地址锁存允许)输出脉冲用于锁存地址的低8位字节。一般情况下,**ALE仍以时钟振荡频率的1/6输出固定的脉冲信号,因此它可对外输出时钟或用于定时目的。**要注意的是:每当访问外部数据存储器时将跳过一个ALE脉冲。

PROG

​ 对FLASH存储器编程期间,该引脚还用于输入编程脉冲(PROG)。 如有必要,可通过对特殊功能寄存器(SFR)区中的8EH单元的D0位置位,可禁止ALE操作。该位置位后,只有一条MOVX和MOVC指令才能将ALE激活。此外,该引脚会被微弱拉高,单片机执行外部程序时,应设置ALE禁止位无效。

ALE为外部存储器低8位地址锁存信号

PSEN

PSEN——程序储存允许(PSEN)输出是外部程序存储器的读选通信号,当STC89C52由外部程序存储器取指令(或数据)时,每个机器周期两次PSEN有效,即输出两个脉冲,在此期间,当访问外部数据存储器,将跳过两次PSEN信号。

是外部程序存储器的读选通信号,CPU从外部存储器读取指令时,从PSEN输出读选通信号(负脉冲)

EA

EA/VPP——外部访问允许,欲使CPU仅访问外部程序存储器(地址为0000H-FFFFH),EA端必须保持低电平(接地)。需注意的是:如果加密位LB1被编程,复位时内部会锁存EA端状态。如EA端为高电平(接Vcc端),CPU则执行内部程序存储器的指令。FLASH存储器编程时,该引脚加上+12V的编程允许电源Vpp,当然这必须是该器件是使用12V编程电压Vpp。

EA为程序存储器选择信号,接低电平CPU总是从外部存储器取指令,接高电平可以从内部或外部取指令

  

2.单片机的时钟与复位

2.1单片机时钟电路

①内部振荡方式

振荡频率越高,单片机的运行速度就越快

image-20210606161624381

②外部振荡

联合多个单片机

image-20210606162220117

③时序

image-20210606162350675image-20210607111435089

振荡周期 如果为内部时钟方式,振荡周期即为石英晶体的振荡周期

时钟周期是振荡源信号 二分频之后形成的时钟脉冲信号,即一个时钟周期是振荡周期的2倍

机器周期是时钟周期的 六分频,即一机器周期是时钟周期的6倍,是振荡周期的12倍

指令周期是机器周期的 二分频, 单片机执行一条指令所需要的时间一个指令周期通常含有1~4个机器周期

image-20210606163141308

2.2单片机的复位

复位就是单片机的初始化操作,使各个部件处在一个确定的初始状态

image-20210606163514917

按键电平复位和按键脉冲复位的区别?

复位后寄存器和引脚初始化状态

image-20210606164304675

SP栈顶指针一般指向0030H 用户RAM区

3.单片机的指令系统

3.1汇编

3.1.1指令分类

①指令执行时间

image-20210606172823016

②指令所占字节

image-20210606172829826

③指令功能

image-20210606172902217

3.1.2指令格式

image-20210606173246283

描述符

image-20210606174514886

image-20210606174548869

3.1.3伪指令

ORG

image-20210606174645692

END

image-20210606174656926

EQU

image-20210606174753310

EQU 相当于C语言中的Define

DB

image-20210606174912899

DW

不够可以补,但不能多

image-20210606175525504

DB和DW定义的数据表,数的个数不得超过80,若数据的数目较多,可使用多个定义命令。 在80C51程序设计应用中,常以DB来定义数据,以DW来定义地址。

3.2指令寻址方式

指令的寻址方式即取得操作数的方式。80C51单片机指令系统共有7种寻址方式。

3.2.1直接寻址类

①寄存器寻址

操作数是寄存器

image-20210606180219976

image-20210606180412582

②直接寻址

操作数是数据的地址

image-20210606180600908

所以A累加器到底是什么寻址方式

③立即寻址

直接利用数据

image-20210606182610424

④位寻址

针对位操作

image-20210607203415892

3.2.2 间接寻址类

⑤寄存器间接寻址 MOVX

X就是eXternal,外部的意思 MOVX就是读写外部存储器,即外部RAM

image-20210607203211385image-20210607203245739image-20210607203916047

⑥变址寻址

变址寻址的方式只有3条

MOVC A,@A+DPTR MOVC A, @A+PC JMP @A+DPTR

image-20210607204335308image-20210607204528746image-20210607204549979

⑦相对寻址

image-20210607204923015

3.3指令分类介绍

3.3.1功能指令介绍

数据传送类指令

1.以A为目的操作数的指令(4条)

image-20210607205118788

2.以Rn为目的操作数的指令(3条)

image-20210607205129683

3.以直接地址为目的操作数的指令(5条) direct

image-20210607205244379

4.以间接地址为目的操作数的指令(3条) Ri

image-20210607205352252

5.十六位数据传送指令(1条) DPTR

image-20210607205456767

image-20210607205657048

6.程序存储器数据传送指令(查表指令) (2条) MOVC

MOV就是移动的意思,C就是Code 程序存储器 MOVC就是读代码存储器

image-20210607210545186

7.累加器A与片外RAM的数据传送指令 MOVX

X就是eXternal,外部的意思 MOVX就是读写外部存储器,即外部RAM

image-20210607211304946

借助A放数据 从外部 所以用到了MOVX A,@R0

image-20210607211509552

8.交换指令 XCHD SWAP

①XCHD低半字节交换指令

image-20210607212036317

②累加器A高,低半字节交换指令

image-20210607212101997

9.堆栈操作指令 PUSH POP

POP出来的时候是栈顶的元素赋给POP后面跟的操作数

image-20210607212439167

image-20210607213325450

image-20210607213739753

算术运算类指令 影响PSW

image-20210607214421953

CY:进位标志位。该位在加减法中存放进位和借位,在移位操作中可能会用到。

AC:半进位标志位,表示低4位对高4位有进位或借位时的标志位。

FO:用户标志位,由用户进行定义和使用。

OV:溢出标志位。加减运算中,OV=1时,表示运算结果超过A的表示范围; 在乘法运算中,OV=1表示乘积存放在A和B中;除法运算中,OV=1表示除数为0,无法进行计算。

P:奇偶标志位,表示累加器A中1的个数,若1的个数为偶数,则P=0。

1.不带进位加法指令(4条) ADD

image-20210607214719081

2.带进位加法指令(4条) ADDC

看CY是否为1 为1的话就是等同于ADD两者相加还要多加一个1 否则等价于ADD指令

image-20210607215023491image-20210608192908777

3.带借位减法指令(4条)SUBB

image-20210608193146062image-20210608201514782

4.加1指令(5条)INC

image-20210610134122484

5.减1指令(4条)DEC

image-20210610134148054

6.进制数调整指令(1条)DA

image-20210610140608316

7.乘除法指令(2条)MUL DIV

image-20210610141053648

逻辑运算指令及移位类指令

image-20210610141408784

1.逻辑“与”指令 (6条)
2.逻辑“或”指令(6条)
3.逻辑“异或”指令(6条)

image-20210610141957561image-20210610142044964

4.累加器A清0与取反指令(2条)

image-20210610142200181

5.移位指令(4条)

image-20210610143150559image-20210610143119532

控制转移类指令

控制转移类指令包括无条件转移、条件转移、子程序调用和返回指令等,共17条。

其中,只有比较转移指令影响标志。

1.无条件转移指令(4条)
LJMP AJMP

image-20210610144101871

SJMP JMP

image-20210610144325414

2.条件转移指令(8条)

隐去了固定对累加器A进行判断

JZ JNZ

image-20210610144603286image-20210611133121183

CJNE

image-20210611133454082image-20210611133553076

DJNZ

image-20210611133927815image-20210611134331890

3.子程序调用和返回指令(4条)
ACALL LCALL

image-20210611134504606image-20210611134526584

RET RETI

image-20210611134718516image-20210611140401607

4.空操作指令(1条)
NOP

image-20210611141709318image-20210611142146876

位操作类指令

image-20210611142805363

1.位数据传送指令(2条)

image-20210611142931978

2.位修正指令(6条)

image-20210611142943467

3.位逻辑运算指令(4条)

image-20210611143436724

4.位条件转移类指令(5条)

image-20210611143613661image-20210611143628992

例题

image-20210612200615347

4.程序结构

4.1顺序程序结构

顺序程序结构

image-20210612201256717

顺序程序设计

别忘了最后要写END结束指令

image-20210612202337610

4.2分支程序结构

单分支程序结构

image-20210612202454135image-20210612202952238

多分支程序结构

image-20210612203541854image-20210612203758359

image-20210612203859670image-20210612204130812

image-20210612204429738

4.3循环程序结构

5.单片机的中断系统

5.1中断概念

image-20210612204845248

5.2中断源

外0 定0 外1 定1 串

image-20210612205012016

主程序从0030H开始就是为了避开中断向量

①外中断

image-20210612205302920

②定时器/计数器中断

③串行中断

image-20210612205437140

5.3中断控制

image-20210612205601769

中断控制相关寄存器

image-20210612210721481

中断允许控制寄存器 IE

image-20210612205752227image-20210612205937006

结论: (1) 80C51通过中断允许控制寄存器对中断的允许实行两级控制。 以EA位作为总控制位,以各中断源的中断允许位作为分控制位。 (2) 80C51单片机复位后(IE) = 00H,因此中断系统处于禁止状态。 (3) 单片机在中断响应后不会自动关闭中断。因此在转中断服务程序后, 应使用有关指令禁止中断,即以软件方式关闭中断。

定时器控制寄存器 TCON

image-20210612210423419image-20210612210617658

串行口控制寄存器 SCON

image-20210612210808831

中断优先级控制寄存器 IP

image-20210612211127755image-20210612211235005

image-20210612211430763

5.4中断响应

中断响应:在满足CPU中断响应条件后,对CPU中断源中断请求的回答

image-20210612221150192

中断响应过程

image-20210612221536382

中断响应时间

image-20210612221748343

5.5中断服务

image-20210612222108326

image-20210614125939592image-20210614132329132

6.单片机的定时计数器

6.1定时/计数器原理

定时

image-20210614130552617

计数

image-20210614130711311

控制定时/计数器

定时器控制寄存器 TCON

image-20210614131035477

定时器方式选择控制寄存器 TMOD

不能进行位寻址,没有位地址

image-20210614131259918image-20210614131316761

6.2定时/计数器应用

定时/计数器工作方式

M1 M0来选择工作方式

方式0 13位

image-20210614131748777

方式1 18位

image-20210614131833787

方式2 8位 自动重载

image-20210614131929995

方式3 波特率的发生器

image-20210614132137336

应用例题

image-20210614133215120image-20210614133311861

image-20210614133927369

溢出标志位会有中断自动置0 中断的信号就是溢出标志位置1

image-20210614134629591

image-20210614135138999

7.单片机的IO拓展

8.单片机的串行通信

8.1单片机通信基础知识

数据通信方式

并行通信适合打印机

image-20210614135908660

image-20210614140055556

串行通信

同步串行通信 异步串行通信

image-20210614140304951

image-20210614140237843image-20210614140249375

波特率

image-20210614140418368

8.2串行通信的控制