单片机知识点概述简化版.docx
《单片机知识点概述简化版.docx》由会员分享,可在线阅读,更多相关《单片机知识点概述简化版.docx(26页珍藏版)》请在冰豆网上搜索。
![单片机知识点概述简化版.docx](https://file1.bdocx.com/fileroot1/2023-2/5/08ea4cbb-f409-4eda-8a85-dfbba998f87a/08ea4cbb-f409-4eda-8a85-dfbba998f87a1.gif)
单片机知识点概述简化版
第1章概述
1、单片机的定义与内部组成
单片机是一种集成电路芯片,一片单片机芯片就具有组成计算机的全部功能。
它采用超大规模技术将具有数据处理能力的微处理器(CPU)、存储器(含程序存储器ROM和数据存储器RAM)、输入、输出接口电路(I/O接口)集成在同一块芯片上,构成一个即小巧又很完善的计算机硬件系统。
2、单片机的特点与发展前景。
从硬件角度看:
单片机具有小型化的特点,它采用超大规模技术将具有数据处理能力的微处理器(CPU)、存储器(含程序存储器ROM和数据存储器RAM)、输入、输出接口电路(I/O接口)集成在同一块芯片上,一片单片机芯片就具有组成计算机的全部功能。
从软件角度看:
单片机指令系统有精单指令的特点,容易学习。
利用单片机指令编写的源程序短小精悍,使单片机应用产品即体积小又具有智能化。
发展前景:
纵观单片机的发展过程,可以预见单片机的发展有着广泛的前景。
尤其在工业控制、智能仪器仪表、计算机网络和通信领域、家用电器、医用设备等领域中将有着广泛的发展前景。
3、单片机的各种主要用途。
(1)在智能仪器仪表上的应用
(2)在工业控制中的应用
(3)在家用电器中的应用
(4)在计算机网络和通信领域中的应用
(5)单片机在医用设备领域中的应用
此外,单片机在工商,金融,科研、教育,国防航空航天等领域都有着十分广泛的用途。
第2章单片机结构及原理
1、80C51单片机的内部组成及外观
(1) 中央处理器:
中央处理器(CPU)是整个单片机的核心部件,是8位数据宽度的处理器
(2)数据存储器(RAM):
8051内部有128字节数据存储器(RAM)和21个专用寄存器单元,它们是统一编址的,专用寄存器有专门的用途,通常用于存放控制指令数据,不能用作用户数据的存放,用户能使用的RAM只有128个字节,可存放读写的数据,运算的中间结果或用户定义的字型表。
89S52供用户使用的数据存储器256个字节。
(3)程序存储器(ROM):
8051共有4K字节闪存,用于存放程序和固定的常数等。
89S52/C52配置了8KB闪存。
(4)定时/计数器(ROM):
8051有两个16位的可编程定时/计数器,以实现定时或计数,当定时/计数器产生溢出时,可用中断方式控制程序转向。
(5)并行输入输出(I/O)口:
8051共有4个8位的并行I/O口(P0、P1、P2、P3),用于对外部数据的传输。
(6)全双工串行口:
8051内置一个全双工异步串行通信口,用于与其它设备间的串行数据传送,该串行口既可以用作异步通信收发器,也可以当同步移位器使用。
(7)中断系统:
8051具备较完善的中断功能,有五个中断源(两个外中断、两个定时/计数器中断和一个串行中断),可基本满足不同的控制要求,并具有2级的优先级别选择。
(8)时钟电路:
8051内置最高频率达12MHz的时钟电路,用于产生整个单片机运行的时序脉冲,但需外接晶体振荡器和振荡电容。
2、按照写入的方式不同,ROM可分为MaskROM(掩膜ROM)、OTPROM、EPROM、E2PROM和FlashROM。
FlashROM:
FlashROM是一种新型的电可擦除、非易失性存储器,使用方便,价格低廉,可多次擦写,近年来应用广泛。
3、51系列单片机的存储器组织结构,采用典型的哈佛结构,即程序存储器、数据存储器完全独立。
片内RAM又按功能分为几个区,每个区都有自己独特的功能。
4、51单片机的四个并行I/O口,其中P0口可作I/O口,也可以分时实现地址数据总线功能。
P3口除了可作I/O口外,还具有第二功能,P2口除了可作I/O口外,还能作高位地址总线。
5、51单片机的复位电路有上电复位、手动复位电路两种。
复位后,一些特殊功能寄存器的内容会恢复为初始值。
特殊功能寄存器
初始态
特殊功能寄存器
初始态
ACC
00H
B
00H
PSW
00H
SP
07H
DPH
00H
TH0
00H
DPL
00H
TL0
00H
IP
xxx00000B
TH1
00H
IE
0xx00000B
TL1
00H
TMOD
00H
TCON
00H
SCON
xxxxxxxxB
SBUF
00H
P0-P3
1111111B
PCON
0xxxxxxxB
第3章指令系统
1、指令寻址方式
直接寻址、立即寻址、寄存器寻址、间接寻址、变址寻址、相对寻址、位寻址。
2、指令系统
对指令功能的理解以及常用与不常用指令
(1)数据传送指令
数据传送指令中大部份指令的功能较为简单容易理解,难点是对查表指令MOVCA,@A+DPTR和MOVCA,@A+PC的理解。
(2)算术运算指令
算术运送指令大多是常用指令,功能简明确,大多数指令以累加A为第一操作数,运算结果保存在累加A中,同一种运算的指令,第二操作数的来源于以来自不同的存储空间,也可以是相同的存储空间,但采用不同的寻址方式,例如将累加器A中的内容与片内RAM中50H单元的内容相加。
第二操作数采用直接寻址:
ADD A,50H
第二操作数采用寄存器间接寻址:
MOVR0,#50H
ADDA,@R0
51单片机指令系统中有带进位的减法指令,应用时要根据实际情况确定是否对进位标志清零。
使用乘除法指令时,应注意每次操作(被乘数或被除数)与第二操作数(乘数或除数)的存储位置以及运算结果的存储位置。
(3)逻辑运算指令
逻辑运算指令大多也是功能简单常用指令,移位指令的作有征收数字电子技术中移位寄存器的作用类似,每次将累加器A中的内容左移(或右移)一位,数值上相当于将原数乘以2(或除以2)。
(4)转移指令
控制转移指令是系统学习的难点之一,它难在条件转移指令中对转移条件的理解,它即要判断条件是否满足,又要确定程序是否转移。
其实掌握这类指令并不难,简言之“满足条件则转移,不满足条件则执行下一条指令”。
无条件转移指令容易理解,但要注意转移范围分别是-127B~+128B(短转移)或±2KB范围(相对转移)或64KB范围(长转移)。
子程序调用与返回指令操作与堆拽操作有一定关系,要注意出入拽顺序。
(5)位指令
位操作指令是51单片机的特色,由于可以按位操作,方便了程序设计。
位操作指令中的条件转移指令是短转移指令(-127~+128B范围),而且都是以条件位的状态作转移条件的。
第4章汇编语言程序设计
1、单片机程序设计中常用伪指令
伪指令不是真正的指令,它只向编译程序提供编译信息,而不产生机器代码。
常用伪指令有:
(1)标号等值伪指令——EQU
格式:
〈标号:
〉EQU〈表达式〉
指令的含义为本语句的标号等值于表达式,亦即将表达式值赋予标号。
这里的标号和表达式是必不可少的。
(2)数据存储说明伪指令
数据存储说明伪指令的作用是将数据存储在程序存储器单元中。
①定义字节数据伪指令——DB
格式:
〈标号:
〉DB〈表达式或表达式串〉
② 定义字数据伪指令——DW
格式:
〈标号:
〉DW〈表达式或表达式串〉
(3)程序起始地址伪指令——ORG
格式:
ORG〈表达式〉
(4)汇编结束伪指令——END
格式1:
〈标号:
〉END〈表达式〉
格式2:
〈标号:
〉END
或者 END
2、程序设计
(1)顺序程序设计
一种最简单、最基本的程序(也称为简单程序)。
特点是按程序编写的顺序依次执行,程序流向不便。
需要正确地选择指令,以达到提高程序执行效率、减少程序长度、最大限度地优化程序的目的。
(2)循环程序
任何计算机程序都不可能是无限长的顺序程序,程序总是根据不同的条件不断循环的转移执行的。
将循环程序从结构上分成循环初始化,循环体,循环修改和循环结构四个部分,是为了便于理解。
实际应用时应视具体问题灵活应用。
(3)分支程序
条件转移指令是指分支程序产生的原因,条件转移指令执行时,如果转移条件(yes)程序转向一个分支,如果不转移条件(no)程序转向是一个分支。
(4)散转程序设计
用间接转移指令,也称为散转指令,即“JMP@A+DPTR”。
把16位数据指针DPTR的内容与累加器A中的8位无符号数相加,形成散转的目的地址,装入程序计数器PC,使程序转入响应的分支程序中去。
通常方法是固定DPTR的内容,然后根据A中的内容进行散转。
(5)查表程序
数学变量与函数之间的关系是一种确定的关系,可以用数学表达式表示,计算机编程时,可根据变量及与函数的关系式计算出函数值。
但有的变量与函数之间的关系不能用数学表达式表示,如七段数码显示代码(函数)与显示字符(变量)就是这样。
它们之间只能用表格形式建立函数关系,单片机程序设计中的查表程序就是解决这类问题。
当然有确定数学关系的数学变量也可以用查表程序求函数值。
(3)子程序
采用子程序结构的程序设计最大的好处是优化了程序设计,将可局部独立处理的问题编写成子程序,可供主程序反复多次调用,它将复杂的运标或检制问题,细分成许多小的事件进行处理,这种主程序调用子程序的结构形式被称为模块式的结构形式。
第5章定时/计数器
1、定时/计数器内部结构
51单片机内部设有两个16位可编程的定时器\计数器,简称定时器0、定时器1。
2、定时器的工作原理
(1)定时功能
定时功能是通过计数的计数来实现的,不过此时的计数脉冲来自单片机的内部,每个机器周期产生一个计数脉冲,计数器加1,直到计数器溢出。
由于1个机器周期等于12个时钟振荡周期。
因此计数频率为振荡周期的1/12。
(2)计数功能
所谓计数是对外部事件进行计数,计数脉冲来自相应的外部输入引脚T0、T1。
当外部输入脉冲信号产生由1至0的跳变时,计数器的值加1。
计数方式下,单片机在每个机器周期的S5P2期间对外部计数脉冲进行采样。
如果前一个机器周期采样为高电平,后一个机器周期采样为低电平,则在紧跟着的再下一个(第三个)机器周期的S3P1期间计数器加1。
由于确认一次由1至0的跳变要花两个机器周期,即24个振荡周期,故计数脉冲的频率不能高于振荡频率的1/24。
3、定时/计数器的控制
51单片机对内部定时器\计数器的控制主要是通过模式控制寄存器—TMOD、控制寄存器---TCON两个特殊功能寄存器实现的。
(1)工作方式寄存器—TMOD
工作方式寄存器—TMOD为8位寄存器,各位定义如图所示:
D7D6D5D4D3D2D1D0
GATE
C\T
M1
M0
GATE
C\T
M1
M0
控制定时器T1
控制定时器T0
GATE:
门控位。
GATE=0时,定时器由软件控制位TR0或TR1来控制启停。
TRi位为1时,定时器启动开始工作;为0时定时器停止工作。
GATE=1时,定时器的启停由外部中断引脚和TRi位共同控制。
只有当外部中断引脚INT0或INT1为高时,TR0或TR1置1才能启动定时器工作。
C\T:
功能选择位。
当C\T=0时设置为定时器工作模式;当C\T=1时设置为计数器工作模式。
M1、M0:
工作方式选择位。
定时器\计数器有4种工作方式,由M0、M1来定义:
M0
M1
操作方式
功能说明
0
0
方式0
13位定时器\计数器,TLi只用低5位
0
1
方式1
16位定时器\计数器
1
0
方式2
自动重装初值的8位定时器\计数器,Thi的值在保持不变,TLi溢出时,THi的值自动装入TLi中。
1
1
方式3
仅适用于T0,T0分成2个独立的8位计数器,T1停止计数。
TMOD寄存器不能进行位寻址,只能用字节传送指令设置定时器的工作模式及工作方式。
系统复位时TMOD所有位均为零。
(2)定时/计数器控制寄存器---TCON
(位地址)
8FH8EH8DH8CH8BH8AH89H88H
TF1
TR1
TF0
TR0
IE1
IT1
IE0
IT0
TF1和TF0:
分别为定时器1和定时器0溢出标志。
当计数器计满产生溢出时,由硬件自动置“1”,并可申请中断。
进入中断服务程序后,由硬件自动清零。
TR1和TR0:
定时器1和定时器0启动控制位。
IE1和IE0:
外部中断引脚INT0或INT1中断请求标志位。
当外部中断源有请求时其对应的中断标志位置“1”。
其复位方式由触发方式来设置。
IT1和IT0:
为外部中断1和外部中断0的触发方式选择位。
ITi设置为“0”时为电平触发;设置为“1”时为边沿触发方式。
TCON可以位寻址,可以位操作。
当系统复位时所有位均为0。
3、定时器的工作方式
通过对定时器的TMOD中M1、M2位的设置,可选择四种工作方式。
(1)工作方式0
工作方式0是一个13位的定时/计数器,16位计数器只用了高8位THi和低5位(TLi的D4~D0位),TLi的高3信未用。
(2)工作方式1
16位的定时/计数器,原理同工作方式0
(3)工作方式2
自动重装计数器。
16位计数器拆成两个8位计数器,低8位作计数器用,高8位用于保存计数初值。
当低8位计数产生溢出时,将TFi位置1,同时又将保存在高8位中的计数初值重新装入低8位计数器中,又继续计数,循环重复不止。
(4)工作方式3
方式3只适用定时器T0,T0在该模式下被拆成两个独立的8位计数器TH0和TL0。
其中TL0使用原来T0的一些控制位和引脚,它们是:
C/T,GATE,TR0,TF0和T0(P3.4)引脚INT0((P3.2)引脚。
此方式下的TL0除作8位计数器外,其功能和操作与方式0,方式1完全相同,可作计数也可作定时用。
该方式下的TH0,此时只可作简单的内部定时器功能。
它借用原定时器1的控制位和溢出标志位TR1和TF1,同时占用了T1的中断源。
TH0的启动和关闭幕式仅受TR1的控制,TR1=1,TH0启动定时;TR1=0,TH0停止定时工作。
此方式下的T1仍可设置为方式0、方式1、方式2,用于任何不需要中断的场合。
4、典型例题分析
【例题5.1】若fOSC=6MHZ,要求T1定时10ms,选择方式0,装入时间初值后T1计数器自启动。
计算时间初值X=?
并填入TMOD、TCON和TH1、TL1的值?
答案:
X=3192=C78H,TH1=63H,TL1=18H,TMOD=00h,TCON=40H
【例题5.2】已知51单片机,fosc=6MHz,试编写程序,利用T0和P1.7产生如下图所示的连续矩形脉冲。
参考程序如下:
ORG0000H
LJMPmain
ORG000BH
LJMPint_t0
ORG0030H
main:
MOVTMOD,#00000010B
MOVIE,#10000010B
MOVTH0,#0ECH
MOVTL0,#4CH
CLRP1.7
SETBTR0
SJMP$
int_t0:
JBP1.7,loop
MOVTH0,#4CH
SETBP1.7
RETI
loop:
CLRP1.7
MOVTH0,#0ECH
RETI
END
第7章中断系统
1、中断概述
(1) 中断源
中断源指引起正在执行的程序中断,转而执行中断服务程序的设备或事件。
可分为硬中断、软中断。
51单片机的5个中断源:
①外部中断2个,中断请求信号分别由P3.2、P3.1输入,低电平有效、脉冲下降沿有效可选。
入口地址:
0003H,0013H。
②定时/计数溢出中断3个:
T0、T1,计数溢出时置“1”TF0、TF1位,从而发出内部中断请求。
入口地址:
000BH,001BH。
③串行中断1个:
串行接收或发送完一帧数据时就产生一个内部中断请求RI或TI。
入口地址:
0023H。
(2)中断处理过程
包含:
中断请求、中断响应、中断服务、中断返回四个阶段.
①中断请求:
中断源将相应请求中断的标志位置“1”,表示发出请求,并由CPU查询。
②中断响应:
在一条指令的最后一个周期按优先级顺序查询中断标志,为“1”并满足响应条件时响应。
响应操作:
断点压栈→撤除中断标志→关闭低同级中断允许→中断入口地址送PC。
实际上响应中断的主要操作是有硬件自动产生一条长调用指令LCALL。
③中断服务:
根据入口地址转中断服务程序,保护现场、执行中断主体、恢复现场。
④中断返回:
断点出栈→开放中断允许→返回原程序。
(3)中断优先级及其嵌套
高优先级、低优先级,可通过SFR寄存器IP设置。
中断嵌套原则为高优先级的中断不能被低优先的中断所中断,同级中断不能相互中断。
(4)中断控制的特点
①中断是随机发生的,并且是可编程的。
②通过执行特定功能的程序段而获得预定目的。
2、中断控制
通过对特殊功能寄存器TCON、SCON、IE、IP等四个寄存器的设定而实现。
(1)中断请求控制TCON
定时中断、外中断请求控制寄存器TCON字节地址88H,位地址8FH~88H,与中断请求有关的各位表示如下:
串行中断请求控制寄存器SCON
串行中断请求由TI、RI的逻辑“或”得到。
即不论是发送标志还是接收标志,都将发生串行中断请求。
字节地址98H,位地址9FH~98H,与中断请求有关的各位表示如下:
TI为发送中断,RI为接收中断,为“1”时,请求中断,响应后必须由用户软件清零。
中断请求的撤销
中断响应后,必须及时清除TCON、SCON中的已响应中断请求标志,否则,会引起中断的重复查询和响应。
a外中断请求的撤销:
对于边沿触发方式:
由于触发信号过后就消失,撤销自然也就是自动的。
对于电平触发方式:
需通过软硬件结合的方法来实现撤销。
b定时中断请求的撤销:
定时中断后,硬件自动清“0”。
c串行中断请求的撤销:
不能自动清“0”,须用软件的方法在中断服务子程序中进行清“0”。
(2)中断允许控制IE
由SFR寄存器IE设置,分二级允许控制。
以EA位作为总控,以各中断源的允许位作为分控。
中断允许控制寄存器IE,字节地址A8H,位地址AFH~A8H,与中断允许有关的各位表示如下:
单片机复位后,(IE)=00H,因此,整个中断系统为禁止状态。
(3)中断优先级控制IP
由SFR寄存器IP设置,有2个优先级,相应位置“1”,为高优先级。
相应位置“0”,为低优先级。
中断优先级寄存器IP,字节地址B8H,位地址BFH~B8H,与中断允许有关的各位表示如下:
注意:
5个中断允许位全部置“1”时,和全部清0效果一样,为同优先级中断,按自然优先级处理,即为
→T0→
→T1→串行口→PT2,优先级依次从高到低。
2、中断响应
(1)、中断响应的条件
CPU响应中断的基本条件有以下几种:
有中断源提出中断请求;
中断总允许位EA=1,即CPU开中断;
申请中断的中断源的中断允许位为1,即没有被屏蔽。
51系列单片机的CPU在每个机器周期的S5P2期间顺序采样各中断请求标志位,如有置位,只要以上条件满足,且下列三种情况都不存在,那么,在下一周期的S1期间CPU响应中断。
否则,采样的结果被取消。
这三种情况是:
CPU正在处理同级或高级优先级的中断。
现行的机器周期不是所执行指令的最后一个机器周期。
正在执行的指令是RETI或访问IE、IP指令。
CPU在执行RETI或访问IE、IP的指令后,至少需要再执行一条其他指令后才会响应中断请求。
(2)中断响应过程
单片机在每个机器周期的S5P2期间,顺序采样每个中断源,CPU在下一个机器周期S6期间按优先级顺序查询中断标志,如查询到某个中断标志为1,将在再下一个机器周期S1期间按优先级进行中断处理。
中断得到响应后自动清除中断标志,由硬件将程序计数器PC内容压入堆栈保护,然后将对应的中断矢量装入程序计数器PC,使程序转向中断矢量地址单元中去执行相应的中断服务程序。
下列任何一种情况存在中断申请将被封锁:
CPU正在执行一个同级或高一级的中断服务程序。
当前正在执行的那条指令还未执行完。
当前正在执行的指令是RETI或对IE,IP寄存器进行读/写指令,执行这些指令后至少再执行一条指令才会响应中断。
(3)复位状态
CPU响应中断请求后,在中断返回(执行RETI)前,必须撤除请求,将中断标志位清除,回复到原始的状态,否则会错误地再一次引起中断响应。
如前所述,对于定时器/计数器0、1的中断请求及边沿触发方式的外部中断0、1,CPU在响应中断后用硬件清除了相应的中断请求标志TF0、TF1、IE0、IE1,即自动撤除了中断请求。
对于串行接口中断及定时器/计数器2中断,CPU响应中断后没有用硬件清除中断标志位,必须由用户编制的中断服务程序来清除相应的中断标志。
如用指令CLRTF2清除TF2,用指令CLREXF2清除EXF2等。
4、程序的初始化及中断服务程序
(1)程序初始化的概念及步骤
所谓程序中断系统初始化,就是指用户对中断控制的相关特殊寄存器中的各有关控制位进行赋值。
其步骤如下:
置位相应中断的中断允许标志及EA。
设定所用中断源的中断优先级。
对外部中断应设定中断请求信号形式(电平触发/边沿触发)。
对于定时/计数中断应设置工作方式(定时/计数)。
【例7-1】通过P1.0~P1.7控制发光二极管,输出两种节日灯,并利用外中断P3.2,在两种状态之间切换。
分析:
主程序中状态:
亮1灯左移循环,中断程序中的状态:
以1秒间隔8灯依次亮起,
再依次熄灭,循环3次后返回。
主流程图(略),程序如下:
ORG0000H
LJMPMAIN
ORG0003H;中断入口
LJMP0100H
ORG0030H
START:
MOVSP,#60H
SETBIT0;设定下跳有效
SETBEX0;开中
SETBEA
MOVIP,#01HMOVA,#01H
LOOP:
MOVP1,A
RLA
LCALLDELAY
AJMPLOOP
中断服务程序:
ORG0100H
PUSHACC
CLRA
MOVR0,#00H
LOOP1:
SETBC
RLCA
MOVP1,A
LCALLDELAY
JNBACC.7,LOOP1
LOOP2:
CLRC
RLCA
MOVP1,A
LCALLDELAY
JBACC.7,LOOP2
INCR0
CJNER0,#03H,LOOP1
POPACC
RET
DELAY:
(略);1秒延时
第8章单片机的系统扩展
1、概念:
系统扩展是指单片机内部各功能部件不能满足应用系统的要求时,在片外连接相应的外围芯片,对单片机的功能进行扩展以满足应均要求。
单片机的系统扩展主要有程序存储器扩数据存储器扩展、并行I/O口扩展、串行口扩展以及串行总线扩展等。
2、并行扩展及外部并行扩展总线
总线:
地址总线、数据总线、控制总线
单片机与其他微型计算机