【单片机基础知识1】

目录

一、基础知识

1.数在计算机内表示

2.BCD编码

3.ASCII码

4.微型计算机

4.1 中央处理器

​编辑

4.2 存储器

4.3 输入/输出设备及I/O接口电路

4.4 总线。

二、 单片机基本原理

1. 51子系列单片机主要特点

 2. 51系列单片机外部引脚

 3. 片外总线

4.单片机工作方式

4.1 复位方式

4.2 程序执行方式

4.3 单步执行方式

 4.4 掉电和节电方式

4.5 编程和校验方式

5. 51单片机时序

5.1 时钟周期

5.2 机器周期

5.3 指令周期

5.3 访问外部ROM的时序

5.4 访问外部RAM的时序

 三、单片机汇编程序

1.指令标识符

2. 立即寻址(常数寻址)

3. 寄存器寻址

4. 存储器寻址

4.1 直接寻址

4.2 寄存器间接寻址

4.3 变址寻址

5. 位寻址

6. 指令寻址

6.1 绝对寻址

6.2 相对寻址

7. 数据传送指令

7.1 片内RAM传送指令MOV

7.2 片外RAM传送指令MOVX

7.3 ROM传送指令MOVC

8. 数据交换指令

9. 堆栈操作指令

10. 算数运算指令

10.1 加法指令

10.2 减法指令

10.3 乘法指令

10.4 除法指令

10.5 十进制调整指令

11. 逻辑操作指令

11.1 逻辑与指令ANL

11.2 逻辑或指令ORL

11.3 逻辑异或指令XRL

11.4 清零指令CLR

11.5 求反指令CPL

11.6 循环移位指令


一、基础知识

1.数在计算机内表示

假设机器字长8位:

【单片机基础知识1】_第1张图片

符号位  0:正数

             1:负数

原码:二进制数

反码:原码符号位不变,其余位0-1,1-0取反

补码:反码末位+1

2.BCD编码

压缩BCD编码:用四位二进制数表示一位十进制数

如:24: 0010 0100

非压缩BCD码:用八位二进制数表示一位十进制数,高四位任取,低四位同压缩BCD码

如:24:0011 0010 00110100

3.ASCII码

0~9:30~39

a~z:61~7A

A~Z:41~5A

4.微型计算机

运算器、控制器、存储器、输入设备、输出设备五大部分

4.1 中央处理器

将运算器和控制器结合起来叫CPU

    1.运算部件

以算数逻辑运算单元ALU为核心、累加器ACC、B寄存器、暂存器、标志寄存器PSW

  • ALU

8位运算器,完成8位二进制数的加、减、乘、除等算数运算,以及逻辑“与”、“或”、“异或”、循环移位求补、清零等逻辑运算。

  • 累加器ACC

保存运算数据和运算结果。

  • 寄存器B

辅助寄存器 ,完成乘法、除法指令,累加器A中存入被除数和商,寄存器B中存入除数和余数。

  • 标志寄存器

8位寄存器,4位状态标志,2位控制标志

PSW.7(C):进/借位标志位,最高位D7有进位/借位,则C置1,否则清0。

PSW.6(AC):辅助进/借位标志位,低四位向高四位有进位/借位则AC置1.

PSW.5(F0):用户标志位。

PSW.4\PSW.3(RS1\RS0):寄存器组选择位,四组选择。

PSW.2(OV):溢出标志位,运算结果超出8位范围则OV置1.

PSW.1:未定义

PSW.0:偶标志位,记录A中1的个数,奇数置1。

MOV A,#67H   /*把67H送入累加器A中*/
ADD A,#58H   /*把A中的67H与58H相加结果送回A*/

【单片机基础知识1】_第2张图片

 C=1    AC=0   OV=1  P=1

:最高位为1,变成负数,认为溢出

     2. 控制部件

单片机的控制中心,包括定时和控制电路、指令寄存器、指令译码器、程序计数器PC、堆栈指针SP、数据指针DPTR以及信息传送控制部件。控制部件以震荡信号为基准产生CPU工作的时序信号,先从ROM中取出指令到指令寄存器,然后再指令译码器中译码,产生执行指令所需的各种控制信号,指挥各功能部件产生相应操作。

4.2 存储器

存放程序和数据的记忆装置

  1. RAM:数据存储器(随机存储器):用作工作区及存放数据。
  • 片内RAM

【单片机基础知识1】_第3张图片

 堆栈区和堆栈指针:

先入后出、后入先出,通过堆栈指针SP管理,主要为子程序调用和中断设立的,用于保护断点和现场状态,调用后要返回调用位置,因此先把当前断点地址送入堆栈保存,对于嵌套调用,先调用的后返回。

堆栈有入栈和出栈两种操作,分为向上生长型堆栈和向下生长型堆栈。

入栈:先改变指针SP,再送入数据。

出栈:先送出数据,再改变指针。

向上:

【单片机基础知识1】_第4张图片

 向下:

【单片机基础知识1】_第5张图片

 特殊功能寄存器(SFR):

专门用于控制、管理片内算数逻辑部件、并行I/O接口、串行口、定时\计数器、中断系统等功能模块的工作。

CPU专用寄存器:累加器A、寄存器B、程序状态寄存器PSW、堆栈指针SP、数据指针DPTR。

并行接口:P0~P3。

串行接口:串口控制寄存器SCON、串口数据缓冲器SBUF、电源控制寄存器PCON。

定时/计数器:方式寄存器TMOD、控制寄存器TCON、初值寄存器TH0、TL0/TH1、TL1。

中断系统:中断允许寄存器IE、中断优先级寄存器IP。

  • 片外RAM

通过DPTR指针访问。

      2.ROM:程序存储器(只读存储器):存放程序、固定常数和数据表格。

程序计数器PC存放指令的地址,用于控制程序的执行。

4.3 输入/输出设备及I/O接口电路

输入设备:如键盘、鼠标、光笔、模数转换器、扫描仪、话筒

输出设备:如显示器、打印机、绘图仪、数模转换器、音箱

I/O接口电路:外部设备和微型机之间传送信息的中间设备,主要实现数据缓冲、信号变换、速度匹配、设备选择等功能。输入时具有缓冲功能,输出时具有锁存能力。

  • P0口

三态双向口,可作为地址/数据时分复用接口通用I/O接口。由一个输出锁存器、两个三态缓冲器

输出驱动电路和输出控制电路组成。

P0作为通用I/O接口时:

1)输出数据时必须外接上拉电阻,输出电流不大于800\mu A

2)输入数据时,人为地向P0口写1,方可高阻输入。

  • P1口

准双向口,只能作为通用I/O接口,输出时不必外接上拉电阻。

  • P2口

准双向口,用作通用I/O接口和高8位地址线。

  • P3口

P3口除了作为准双向通用I/O接口外,每根线还有第二种功能:

P3.0:RXD串行口输入端

P3.1:TXD串行口输出端

P3.2:INT0,外部中断0请求输入端,低电平有效

P3.3:INT1,外部中断1请求输入端,低电平有效

P3.4:T0,定时/计数器0外部计数脉冲输入端

P3.5:T1,定时/计数器1外部计数脉冲输入端

P3.6:WR,外部数据存储器写信号,低电平有效

P3.7:RD,外部数据存储器读信号,低电平有效

4.4 总线。

连接多个设备或功能部件的一簇公共信号线,是计算机各部件之间信息交流的通道

二、 单片机基本原理

MCS-51系列单片机是8位单片机,包含51和52两个子系列

1. 51子系列单片机主要特点

  • 8位CPU
  • 片内带1.2MHz~12MHz的振荡器
  • 128B的片内RAM
  • 4KB的片内ROM
  • 128个用户位寻址空间
  • 21字节的特殊功能寄存器
  • 4个8位的并行I/O接口:P0~P3
  • 2个16位定时/计数器
  • 2个优先级别的中断源
  • 1个全双工的串行I/O接口
  • 111条指令
  • 片内单总线结构
  • 位处理能力较强
  • 用+5V电源

【单片机基础知识1】_第6张图片

 2. 51系列单片机外部引脚

40个引脚

  • 输入/输出引脚

1)P0口(39~32)

P0.0~P0.7

不接片外存储器和不扩展I/O接口时作为准双向输入/输出接口,外接时时分复用为低8位地址总线和双向数据总线。

2)P1口(1~8)

P1.0~P1.7

作为准双向I/O接口使用,P1.0还可用作定时器/计数器2的计数脉冲输出端T2,P1.1还可用作定时器/计数器2的外部控制端T2EX。

3)P2口(21~28)

P2.0~P2.7

一般用作准双向I/O接口使用,在接有片外存储器和扩展I/O接口且寻址范围常256字节时可用作高8位地址总线。

4)P3口

P3.0~P3.7

P3口除了作为准双向通用I/O接口外,每根线还有第二种功能:

P3.0:RXD串行口输入端

P3.1:TXD串行口输出端

P3.2:INT0,外部中断0请求输入端,低电平有效

P3.3:INT1,外部中断1请求输入端,低电平有效

P3.4:T0,定时/计数器0外部计数脉冲输入端

P3.5:T1,定时/计数器1外部计数脉冲输入端

P3.6:WR,外部数据存储器写信号,低电平有效

P3.7:RD,外部数据存储器读信号,低电平有效

  • 控制线

1)ALE/PROG(30)

地址锁存信号输出端,ALE在每个机器周期内输出两个脉冲。

在访问片外ROM期间,下降沿用于控制锁存P0输出的低8位地址;不访问期间可作为对外输出的时钟脉冲或定时目的。

对于片内有EPROM的机型,作为编程脉冲PROG的输入端。

注:EPROM:可擦除可编程只读存储器,断电后仍能保存数据。

2)\overline{PSEN}(29)

片外ROM读选通信号输出端,低电平有效。

从片外ROM读取指令或常数期间,每个机器周期该信号有效两次,通过P0口读取指令或常数。

在访问片外RAM期间,该信号不出现。

3)RST/V_{pd}(9)

V_{pd}为备用电源,该引脚为单片机的上电复位或者掉电保护端。

单片机振荡器工作时,该引脚上出现持续2个机器周期的高电平就可实现复位。上电时,考虑到振荡器的起振时间和其他电路的稳定时间,该引脚上高电平必须持续10ms以上才能保证有效复位。

 也可接备用电源,VCC发送故障掉电时该备用电源为内部RAM供电,保证数据不丢失。

4)EA/V_{pp}(31)

\overline{EA}为片外ROM选用端,低电平时选用片外ROM,高电平或者悬空时选用片内ROM。

对于片内有EPROM的机型,作为21V编程电源V_{pp}的输入端。

  • 主电源引脚

VCC(40):接+5V电源正端

VSS(20):接+5V电源地端

  •  外接晶体引脚

XTAL1\XTAL2(19、18):使用单片机内部震荡电路时,用来外接石英晶体和微调电容,在单片机内部,它是个反相放大器的输入端,这个放大器构成了片内振荡器。

【单片机基础知识1】_第7张图片

 采用外部时钟时,一个XTAL引脚接地,一个接片外振荡脉冲输入(带上拉电阻)。

【单片机基础知识1】_第8张图片

 3. 片外总线

单片机引脚除了电源线、复位线、时钟输入、用户I/O接口外,其余都为了实现系统扩展。

  • 地址总线:线宽16位,P0口经地址锁存器提供低8位,P2口提供高8位。可对片外RAM和ROM寻址。
  • 数据总线:线宽8位,由P0口直接提供。
  • 控制总线:第二功能下的P3口和4根独立控制线RST\EA\ALE\PSEN组成。

4.单片机工作方式

4.1 复位方式

使CPU和内部其他部件处于一个确定的初始状态,从这里开始工作。

复位引脚RST:高电平有效,在时钟电路工作后,,当外部电路使RST端出现两个机器周期(24个时钟周期)以上高电平时,系统内部复位。

  • 上电复位

【单片机基础知识1】_第9张图片

  •  按钮复位

【单片机基础知识1】_第10张图片

 RST由高电平变为低电平后,PC指针变为0000H,使单片机从程序存储器地址为0000H的单元开始执行程序。

4.2 程序执行方式

是单片机的基本工作方式,由于系统复位后,程序总是从0000H开始执行,但0003H到0023H是中断服务程序区,因此用户程序放在中断服务区后面,在0000H处防止一条长转移指令转到用户程序。

4.3 单步执行方式

在外部单部脉冲的作用下,使单片机一个单步脉冲执行一条指令后停下来,再一个单步脉冲执行一条指令后又暂停下来,常用于调试程序、跟踪和了解程序执行过程。51单片机的单步执行要利用中断系统完成。

从中断服务程序中返回后至少要再执行一条指令才能重新进入中断。

将外部脉冲加到\overline{INT0}引脚,平时让它为低电平,编程规定\overline{INT0}为电平触发,那么不来脉冲时\overline{INT0}一直为低电平处于响应中断状态,执行中断服务程序。

在中断服务程序中,第一条指令在\overline{INT0}为低电平时是死循环,不返回主程序执行。通过按钮送来一个正脉冲时中断服务程序的第一条指令结束死循环开始执行第二条指令,在高电平期间第二条开始死循环,高电平结束\overline{INT0}回到低电平,第二条结束循环执行第三条,中断返回返回到主程序,由于这时\overline{INT0}为低电平,请求中断。但中断系统规定,从中断服务程序中返回后至少要再执行一条指令才能重新进入中断。

 4.4 掉电和节电方式

  • HMOS(高密度、高速度MOS)单片机的掉电方式
  • CHMOS(互补高密度金属氧化物半导体工艺)单片机的掉电方式

4.5 编程和校验方式

  •  EPROM编程
  • EPROM校验
  • EPROM加密

5. 51单片机时序

时序就是在执行指令过程中,CPU产生的各种控制信号在时间上的相互关系。

CPU发出的控制信号:一是用于计算机内部,二是通过控制总线送到片外的。

5.1 时钟周期

单片机内部时钟电路产生(或外部时钟电路送入)的信号周期,单片机的时序信号以时钟周期信号为基础而形成的。

5.2 机器周期

单片机的基本操作周期,每个机器周期包含S1~S6六种状态,每个状态包括P1、P2两个节拍,每一拍为一个时钟周期,因此,一个机器周期包括12个时钟周期,依次为S1P1、S1P2、S2P1、S2P2......

5.3 指令周期

计算机从取一条指令开始到执行完该指令所需要的时间。指令周期以机器周期为单位。

51单片机指令根据指令长度和执行周期分为:单字节单周期指令、单字节双周期指令、双字节单周期指令、双字节双周期指令、三字节双周期指令、一字节四周期指令。

每个机器周期出现2次ALE信号:S1P2和S4P2,每出现一次ALE信号,CPU就进行一次取指令的操作。

5.3 访问外部ROM的时序

如果指令从外部ROM中读取,有ALE信号和\overline{PSEN}控制信号,还要P0口作为低8位地址总线和数据总线,P2口作为高8位地址总线。

  • S1P2时刻ALE信号有效
  • P0口送出ROM地址低8位,P2口送出ROM地址高8位。A0~A7只持续到S2P2故在外部用ALE作锁存信号加以锁存,到S2P2前ALE失效。
  • S3P1时刻\overline{PSEN}开始低电平有效,用它选外部ROM使能端,选中ROM单元得内容即指令,从P0口读入CPU后失效。
  • S4P2后第二次读入。

5.4 访问外部RAM的时序

需要的控制信号有ALE、\overline{PSEN}\overline{RD}\setminus \overline{WR}(读/写),还要P0口和P2口在取指时用来传输ROM地址和指令,在执行阶段传送RAM地址和读写的数据。

 三、单片机汇编程序

MSC51系列单片机共111条指令,功能强、指令短、执行快,功能上分为:数据传送指令、算数运算指令、逻辑操作指令、控制转移指令、位操作指令。

1.指令标识符

  • Ri和Rn,i取0或1,n取0~7
  • #data:指令中的8位立即数
  • #data16:指令中的16位立即数
  • rel:以补码形式表示的8位相对偏移量,主要用在相对寻址
  • addr16和addr11:16位直接地址和11位直接地址
  • direct:直接寻址的地址
  • bit:可按位寻址的直接位地址
  • (X)单元中的内容
  • /:对该位操作数取反,但不影响原值
  • \rightarrow:将箭尾一方的内容送入箭头所指的一方去。

2. 立即寻址(常数寻址)

操作数是常数直接出现在指令中,紧跟操作码后面一起放在ROM中,可以立即得到并执行,立即数前面以#作前缀。

MOV A,#20H

把立即数20H送给累加器A

3. 寄存器寻址

操作数在寄存器里,使用时在指令中直接提供寄存器的名字。只针对R0~R7这8个通用寄存器和部分特殊功能寄存器(如累加器A、寄存器B、数据指针寄存器DPTR)。

把R0寄存器中的数送给累加器A

MOV A,R0

4. 存储器寻址

4.1 直接寻址

指令中直接提供存储器单元的地址,针对片内RAM和特殊功能寄存器。

特殊功能寄存器名称实际上是特殊功能寄存器单元的符号地址。

把片内RAM20H单元里的内容送给累加器A

MOV A,20H

把P0口的内容送给累加器A

MOV A,P0

4.2 寄存器间接寻址

存储器单元的地址放在寄存器中,通过提供寄存器来使用对应的存储单元。

将以工作寄存器R1中的内容为地址的片内RAM单元的数据传到累加器A中去。

MOV A。@R1

4.3 变址寻址

操作数的地址由基址寄存器中存放的地址加上变址寄存器中的地址,基址寄存器可以说数据指针寄存器DPTR或程序计数器PC,变址寄存器只能是累加器A,访问的存储器为ROM。

将DPTR的内容与A中的内容相加作为ROM的地址,从对应的单元中取出内容送入A中

MOVC A,@ A+DPTR

5. 位寻址

  • 直接位地址:00H~0FFH
  • 字节地址带位号:20H.3:20H单元从低位开始的4位
  • 特殊功能寄存器名带位号:P0.0:P0口从低位开始的2位
  • 位符号地址:TR0:计数/定时器T0的启动位

6. 指令寻址

操作数用于提供目的位置的地址

6.1 绝对寻址

在指令的操作数中直接提供目的位置的地址或地址的一部分

6.2 相对寻址

当前PC值加指令中偏移量rel得到的目的位置的地址,rel为负数时向前转移,当为正数时向后转移。

目的地址=当前PC+rel=转移指令地址+转移指令字节数+rel

7. 数据传送指令

7.1 片内RAM传送指令MOV

MOV 目的操作数,源操作数

目的操作数:A、Rn、@Ri、direct、DPTR

源操作数:A、Rn、@Ri、direct、#data[16]

7.2 片外RAM传送指令MOVX

MCS51系列中只能通过累加器A与片外RAM进行数据传送

7.3 ROM传送指令MOVC

只有两条:一是DPTR变址寻址、二是PC变址寻址,常用作查表指令。

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

注:没有操作两个寄存器的做法。


8. 数据交换指令

源操作数不变,将源操作数的数据传送到目的操作数,要求第一个操作数必须为累加器A。

XCH A,Rn
XCH A,direct
XCH A,@Ri
XCHD A,@Ri
SWAP A

9. 堆栈操作指令

片内RAM中先进后出,后进先出,由堆栈指针SP统一管理,PUSH指令入栈,POP指令出栈,一字节为单位操作。

入栈:

PUSH A
PUSH B

出栈:

POP B
POP A

10. 算数运算指令

10.1 加法指令

一般加法:ADD

带进位加法:ADDC

加1指令:INC

10.2 减法指令

带借位减法:SUBB

减1:DEC

10.3 乘法指令

MUL AB

将存在A中的无符号数和B中存放的无符号数相乘,结果的低字节放在A中,高字节放在B中。

10.4 除法指令

DIV AB

将存在A中的无符号数除以B中存放的无符号数,商放在A中,余数放在B中。

10.5 十进制调整指令

DA A

只能放在ADD、ADDC指令后面。

11. 逻辑操作指令

11.1 逻辑与指令ANL

11.2 逻辑或指令ORL

11.3 逻辑异或指令XRL

11.4 清零指令CLR

11.5 求反指令CPL

11.6 循环移位指令

  • 循环左移RL
  • 循环右移RR
  • 带进位循环左移RLC
  • 带进位循环右移RRC

你可能感兴趣的:(单片机,单片机,嵌入式硬件)