单片机原理及应用 复习资料.docx
- 文档编号:28151467
- 上传时间:2023-07-08
- 格式:DOCX
- 页数:24
- 大小:95.55KB
单片机原理及应用 复习资料.docx
《单片机原理及应用 复习资料.docx》由会员分享,可在线阅读,更多相关《单片机原理及应用 复习资料.docx(24页珍藏版)》请在冰豆网上搜索。
单片机原理及应用复习资料
《单片机原理及应用》复习参考
一、前言
《单片机原理及应用》属于基础性课程,其目的在于培养大家对包含CPU的简单控制系统的了解,初步掌握单片机平台实现相关的汇编语言和C语言相关知识。
整个学期所学习的知识可以分为三部分:
(1)MCS51单片机结构和工作原理
这部分知识中,大家需要熟悉和掌握:
1)单片机CPU的外部引脚,P0,P1,P2,P3四个I/O口的作用,以及P3口各管脚的含义
2)单片机CPU外围单元和基本功能单元
3)主要存储器类型,和上电复位后主要寄存器的初始值
(2)指令系统、汇编语言和C语言
指令系统是指操作单片机内部资源,完成指定任务的相关指令。
所有指令基于汇编语言实现,需要对硬件电路有着清晰地了解。
诸如变量定义等操作,需要操作具体地址。
虽然汇编语言可读性较差,但在学习阶段,借助汇编语言学习指令系统,有助于硬件结构的学习和熟悉。
相比较而言,C语言对指令系统的依赖较小,编程实现更加灵活,可以在熟悉单片机设计之后作为程序实现的主要工具。
但是在学习阶段,汇编应该更适合。
指令系统主要包括下面几个部分:
(列出了主要的指令)
1)MOV类指令:
MOV、MOVX、MOVC
2)加减乘除指令:
ADD/ADDC、SUBB、MUL、DIV
3)逻辑操作指令:
ANL、ORL、XRL、CPL
4)控制转移指令:
DJNZ、CJNE、JB、JC、AJMP、RET、RETI
5)位操作指令:
CLR、SETB、CPL、ANL、ORL、
(3)CPU主要功能单元
这部分知识是在熟悉指令系统的基础上,对CPU内部其他的功能单元进行学习。
主要包含设置方式、初始参数、连接电路、中断响应等等内容。
主要包括:
1)定时器和计数器T0/T1
2)外部中断INT0和INT1
3)串行通讯RXD和TXD
综上所述,单片机的学习要兼顾硬件电路设计和匹配的软件编程实现两部分,在基于单片机平台实现预期功能时,必须对单片机相关知识有着较深的理解。
因此,下面分别从上述的3方面内容对单片机知识进行概括和描述。
二、MCS51单片机结构和工作原理
2.1CPU外部引脚
如图1所示,MCS51单片机包含40个引脚,下面对各个管脚的含义和作用进行介绍。
图1单片机外部管脚示意图
80C51单片机共有40个引脚,其中具有I/O功能的引脚有32个,分别为P0,P1,P2,P3四个8位的端口。
(1)P0口一般作为8位数据总线使用,以及低8位地址总线使用,P0.0~P0.7分别对应着CPU的第39~32引脚。
(2)P1口大多用于外部控制信号输出,P1.0~P1.7分别对应着CPU的第1~8引脚。
(3)P2口一般用于高8位地址总线使用,与P0口一起组成16位的地址总线,可以寻址64K的扩展RAM和64K的扩展ROM。
(4)P3.0~P3.7分别对应CPU的第10~17引脚。
P3口除了作为普通的I/O口使用,还具有第二功能:
P3.0RXD串行通讯数据接收
P3.1TXD串行通讯数据发送
P3.2INT0外部中断0信号输入,低电平或下降沿有效
P3.3INT1外部中断1信号输入,低电平或下降沿有效
P3.4T0计数器T0计数外部脉冲信号输入
P3.5T1计数器T1计数外部脉冲信号输入
P3.6WR外部扩展存储器,写使能控制线,低电平有效
P3.7RD外部扩展存储器,读使能控制线,低电平有效
除此之外,还有8个引脚,下面逐一进行介绍:
XTAL2/XTAL1外部晶振引入第18和19引脚
RSTCPU上电复位信号输入第9引脚
VCC/GND电源和地第40和第20引脚
EA接高电平使用片内ROM第31引脚
ALE数据总线复用管理第30引脚
PSEN外部ROM读写控制第29引脚
2.2CPU外围单元和基本功能单元
80C51系列单片机具有典型的单片机结构,其基本结构如图2所示。
它由CPU系统、CPU外围单元、基本功能单元和外部扩展单元组成,各部分通过内部总线相连。
图2单片机基本结构示意图
CPU系统和CPU外围单元组成了单片机的最小系统;最小系统与基本功能单元构成了一个单片机的基本结构;在单片机基本结构的基础上,根据不同的嵌入式应用要求可扩展各种外部功能单元电路。
2.2.1CPU系统
80C51的CPU系统包括CPU、时钟系统和总线控制逻辑。
1)中央处理器CPU
CPU是专门为面向测控对象、嵌入式应用等特点而设计的,具有突出控制功能的指令系统。
它是单片机的核心,由运算器和控制器组成。
运算器用于实现数据算术逻辑运算,控制器在时钟信号作用下对指令进行译码,使单片机系统各部件按时序协调有序地工作。
2)时钟系统
时钟系统主要产生时钟信号,为CPU及片内各单元电路提供工作的时钟。
80C51单片机时序单位有4个:
振荡周期、状态周期、机器周期、指令周期。
(I)振荡周期(节拍):
为单片机提供定时信号的振荡源的周期,又称节拍,是最小的时序单位。
(II)状态周期:
又称时钟周期,是振荡周期的2倍。
每个状态周期被分为两个节拍P1和P2。
(III)机器周期:
一个机器周期由6个状态周期组成,用S1、S2、…、S6表示。
一个状态周期有2个节拍,所以一个机器周期有12个节拍。
(IV)指令周期:
执行一条指令所需的时间。
一个指令周期由1~4个机器周期组成,依据指令不同而不同。
例如:
单片机外接晶振频率为fosc=12MHz,则其各种时序单位的大小为:
节拍=1/fosc=1/12μs
状态=2/fosc=1/6μs
机器周期=12/fosc=1μs
指令周期=(1~4)机器周期=1~4μs
3)总线控制逻辑
总线控制逻辑主要用于管理外部并行总线的时序以及系统复位控制,外部控制总线有RST、ALE、EA和PSEN等。
2.2.2CPU外围单元
CPU外围单元是与CPU运行直接相关的单元电路,与CPU系统构成单片机的最小系统。
它包括程序存储器ROM、数据存储器RAM、输入输出(I/O)口和特殊功能寄存器SFR。
1)程序存储器ROM
80C51片内有4KB掩膜ROM,主要用于存放程序、原始数据和表格内容,被称之为程序存储器,有时也被称为片内ROM。
可以操作程序存储器的指令为MOVC指令,常用于查表操作。
2)数据存储器RAM
80C51内部共有256个字节的RAM单元,其中低128个单元是数据RAM区,包括通用寄存器区、位寻址区和用户RAM区,这些单元主要用于存放随机存取的数据及运算的中间结果。
高128个单元是特殊功能寄存器(SFR)区。
片内RAM使用MOV指令进行操作,片外RAM使用MOVX指令。
3)并行I/O端口
80C51有4个8位并行I/O端口,即P0、P1、P2、和P3口。
这些端口可以用作一般输入或输出口,而且具有复用功能。
通常P0口作为8位数据总线/低8位地址总线复用口,P1口作为通用I/O口,P2口常用作高8位地址总线,而P3口的各个管脚多以第二功能输入或输出形式出现。
4)特殊功能寄存器SFR
SFR是80C51单片机工作的重要控制单元,CPU对所有片内功能单元的操作、控制都是通过对SFR的访问实现的。
2.2.3基本功能单元
基本功能单元是用来完善和扩大单片机功能、以满足单片机测控功能要求的基本外围电路。
80C51的基本功能单元包括定时器/计数器、中断系统和串行接口等。
1)定时器/计数器
80C51内部有2个16位的定时器/计数器T0和T1,作为内部定时器或外部脉冲计数器,实现定时/计数的自动处理。
2)串行接口
80C51有一个全双工的串行通信接口,用以实现单片机和其他设备之间的串行数据传送。
该串行口是一个带有移位寄存器工作方式的通用异步收发器UART(UniversalAsynchronousReceiverTransmitter),既可以作为全双工异步通信收发器进行串行通信,也可以作为移位寄存器用于串行外围扩展。
3)中断控制系统
80C51的中断系统共有5个中断源,即2个外部中断源、2个定时器/计数器中断源和1个串行通信中断源。
全部中断源可设定为高级和低级2个优先级。
2.2.4复位操作
复位操作对单片机的片内电路初始化,使单片机从一种确定的初始状态开始运行。
除了系统的正常开机(上电)复位外,当程序运行出错或操作错误使系统处于死循环状态时,为摆脱困境,也要通过复位使其恢复正常工作状态。
复位后,程序计数器PC初始化为0000H,即单片机从0000H单元开始执行程序。
复位操作影响单片机的特殊功能寄存器,不改变片内RAM区中的内容。
21个特殊功能寄存器复位后的状态见表1。
表1寄存器复位后的状态
寄存器
复位状态
寄存器
复位状态
PC
0000H
TMOD
00H
ACC
00H
TCON
00H
B
00H
TH0
00H
PSW
00H
TL0
00H
SP
07H
TH1
00H
DPTR
0000H
TL1
00H
P0~P3
FFH
SCON
00H
IP
XXX00000B
SBUF
XXXXXXXX
IE
0XX00000B
PCON
0XXX0000B
注:
表中符号X为随机状态
(1)A=00H表明累加器已被清零。
(2)PSW=00H表明选寄存器0组为工作寄存器组。
(3)SP=07H表明堆栈指针指向片内RAM07H字节单元,根据堆栈操作的“先加后压”法则,第一个被压入的数据被写入08H单元中。
(4)P0~P3=FFH表明已向各端口线写入1,此时各端口既可用于输入又可用于输出。
(5)IP=XXX00000B表明各个中断源处于低优先级。
(6)IE=0XX00000B表明各个中断均被关断。
(7)TMOD=00H表明T0,T1均为工作方式0,且运行于定时器状态。
(8)TCON=00H表明T0,T1均被关断。
(9)SCON=00H表明串行口处于工作方式0,允许发送,不允许接收。
(10)PCON=00H表明SMOD=0,波特率不加倍。
三、指令系统、汇编语言和C语言
3.1指令系统
指令分类
指令格式
功能和含义
字节
机器周期
算术运算
ADDA,#data
累加器加立即数
2
1
算术运算
ADDA,@Ri
累加器加内部RAM单元
1
1
算术运算
ADDA,direct
累加器加直接寻址单元
2
1
算术运算
ADDA,Rn
累加器加寄存器
1
1
算术运算
ADDCA,#data
累加器加立即数和进位标志
2
1
算术运算
ADDCA,@Ri
累加器加内部RAM单元和进位标志
1
1
算术运算
ADDCA,direct
累加器加直接寻址单元和进位标志
2
1
算术运算
ADDCA,Rn
累加器加寄存器和进位标志
1
1
算术运算
DAA
十进制调整
1
1
算术运算
DEC@Ri
内部RAM单元减1
1
1
算术运算
DECA
累加器减1
1
1
算术运算
DECdirect
直接寻址单元减1
2
1
算术运算
DECRn
寄存器减1
1
1
算术运算
DIVAB
累加器除以寄存器B
1
4
算术运算
INC@Ri
内部RAM单元加1
1
1
算术运算
INCA
累加器加1
1
1
算术运算
INCdirect
直接寻址单元加1
2
1
算术运算
INCDPTR
数据指针加1
1
2
算术运算
INCRn
寄存器加1
1
1
算术运算
MULAB
累加器乘寄存器B
1
4
算术运算
SUBBA,#data
累加器减立即数和进位标志
2
1
算术运算
SUBBA,@Ri
累加器减内部RAM单元和进位标志
1
1
算术运算
SUBBA,direct
累加器减直接寻址单元和进位标志
2
1
算术运算
SUBBA,Rn
累加器减寄存器和进位标志
1
1
数据传送
MOV@Ri,#data
立即数送内部RAM单元
2
1
数据传送
MOV@Ri,A
累加器送内部RAM单元
1
1
数据传送
MOV@Ri,direct
直接寻址单元送内部RAM单元
2
2
数据传送
MOVA,#data
立即数送累加器
2
1
数据传送
MOVA,@Ri
内部RAM单元送累加器
1
1
数据传送
MOVA,direct
直接寻址单元送累加器
2
1
数据传送
MOVA,Rn
寄存器送累加器
1
1
数据传送
MOVdirect,#data
立即数送直接寻址单元
3
2
数据传送
MOVdirect,@Ri
内部RAM单元送直接寻址单元
2
2
数据传送
MOVdirect,A
累加器送直接寻址单元
2
1
数据传送
MOVdirect,Rn
寄存器送直接寻址单元
2
2
数据传送
MOVdirect2,direct1
直接寻址单元送直接寻址单元
3
2
数据传送
MOVDPTR,#data16
16位立即数送数据指针
3
2
数据传送
MOVRn,#data
立即数送寄存器
2
1
数据传送
MOVRn,A
累加器送寄存器
1
1
数据传送
MOVRn,direct
直接寻址单元送寄存器
2
2
数据传送
MOVCA,@A+DPTR
查表数据送累加器(DPTR为基址)
1
2
数据传送
MOVCA,@A+PC
查表数据送累加器(PC为基址)
1
2
数据传送
MOVX@DPTR,A
累加器送外部RAM单元(16位地址)
1
2
数据传送
MOVX@Ri,A
累加器送外部RAM单元(8位地址)
1
2
数据传送
MOVXA,@DPTR
外部RAM单元送累加器(16位地址)
1
2
数据传送
MOVXA,@Ri
外部RAM单元送累加器(8位地址)
1
2
数据传送
POPdirect
栈顶弹出指令直接寻址单元
2
2
数据传送
PUSHdirect
直接寻址单元压入栈顶
2
2
数据传送
SWAPA
累加器高4位与低4位交换
1
1
数据传送
XCHA,@Ri
累加器与内部RAM单元交换
1
1
数据传送
XCHA,Rn
累加器与寄存器交换
1
1
数据传送
XCHDA,@Ri
累加器与内部RAM单元低4位交换
1
1
数据传送
XCHDA,direct
累加器与直接寻址单元交换
2
1
逻辑运算
ANLA,#data
累加器与立即数
2
1
逻辑运算
ANLA,@Ri
累加器与内部RAM单元
1
1
逻辑运算
ANLA,direct
累加器与直接寻址单元
2
1
逻辑运算
ANLA,Rn
累加器与寄存器
1
1
逻辑运算
ANLdirect,#data
直接寻址单元与立即数
3
1
逻辑运算
ANLdirect,A
直接寻址单元与累加器
2
1
逻辑运算
CLRA
累加器清零
1
1
逻辑运算
CPLA
累加器取反
1
1
逻辑运算
ORLA,#data
累加器或立即数
2
1
逻辑运算
ORLA,@Ri
累加器或内部RAM单元
1
1
逻辑运算
ORLA,direct
累加器或直接寻址单元
2
1
逻辑运算
ORLA,Rn
累加器或寄存器
1
1
逻辑运算
ORLdirect,#data
直接寻址单元或立即数
3
1
逻辑运算
ORLdirect,A
直接寻址单元或累加器
2
1
逻辑运算
RLA
累加器左循环移位
1
1
逻辑运算
RLCA
累加器连进位标志左循环移位
1
1
逻辑运算
RRA
累加器右循环移位
1
1
逻辑运算
RRCA
累加器连进位标志右循环移位
1
1
逻辑运算
XRLA,#data
累加器异或立即数
2
1
逻辑运算
XRLA,@Ri
累加器异或内部RAM单元
1
1
逻辑运算
XRLA,direct
累加器异或直接寻址单元
2
1
逻辑运算
XRLA,Rn
累加器异或寄存器
1
1
逻辑运算
XRLdirect,#data
直接寻址单元异或立即数
3
2
逻辑运算
XRLdirect,A
直接寻址单元异或累加器
2
1
控制转移
ACALLaddr11
2KB范围内绝对调用
2
2
控制转移
AJMPaddr11
2KB范围内绝对转移
2
2
控制转移
CJNE@Ri,#data,rel
RAM单元与立即数不等转移
3
2
控制转移
CJNEA,#data,rel
累加器与立即数不等转移
3
2
控制转移
CJNEA,direct,rel
累加器与直接寻址单元不等转移
3
2
控制转移
CJNERn,#data,rel
寄存器与立即数不等转移
3
2
控制转移
DJNZdirect,rel
直接寻址单元减1不为零转移
3
2
控制转移
DJNZRn,rel
寄存器减1不为零转移
2
2
控制转移
JMP@A+DPTR
相对长转移
1
2
控制转移
JNZrel
累加器非零转移
2
2
控制转移
JZrel
累加器为零转移
2
2
控制转移
LCALLaddr16
2KB范围内长调用
3
2
控制转移
LJMPaddr16
2KB范围内长转移
3
2
控制转移
NOP
空操作
1
1
控制转移
RET
子程序返回
1
2
控制转移
RETI
中断返回
1
2
控制转移
SJMPrel
相对短转移
2
2
布尔操作
ANLC,/bit
C逻辑与直接寻址位的反
2
2
布尔操作
ANLC,bit
C逻辑与直接寻址位
2
2
布尔操作
CLRbit
直接寻址位清零
2
1
布尔操作
CLRC
C清零
1
1
布尔操作
CPLbit
直接寻址位取反
2
1
布尔操作
CPLC
C取反
1
1
布尔操作
JBbit,rel
直接寻址位为1则转移
3
2
布尔操作
JBCbit,rel
直接寻址位为1则转移并清除该为
3
2
布尔操作
JCrel
C为1转移
2
2
布尔操作
JNBbit,rel
直接寻址位为0则转移
3
2
布尔操作
JNCrel
C为零转移
2
2
布尔操作
MOVbit,C
C送直接寻址位
2
1
布尔操作
MOVC,bit
直接寻址位送C
2
1
布尔操作
ORLC,/bit
C逻辑或直接寻址位的反
2
2
布尔操作
ORLC,bit
C逻辑或直接寻址位
2
2
布尔操作
SETBbit
直接寻址位置位
2
1
布尔操作
SETBC
C置位
1
1
表1中列出了所有的指令的格式、含义、语句在ROM中的字节数,以及执行这条语句所使用的机器周期数。
除了这些指令,还有一些伪指令,这些伪指令通常提供附属功能或预定义,其功能相对固定,语句较为简单。
伪指令:
(1)ORGnn设置起始地址命令,后续指令放在nn开始的ROM地址中
例句:
汇编语言文件头
ORG0000H
AJMPMAIN;此条指令从ROM地址0000H开始存放
ORG0003H
AJMPT0INT;此条指令从ROM地址0003H开始存放
……
(2)DB定义字节命令
例句:
定义表格
TAB:
DB22H,23H,24H,25H
(3)DW定义字命令(包含两个字节,高位放高地址,低位放低地址)
例句:
定义表格
TAB:
DW1234H,2222H,3333H
(4)BIT位地址符号命令
例句:
为P3.7重新命名
LABABITP3.7
(5)END源程序结束
3.2汇编语言
虽然表1中给出了所有指令的格式和具体含义,但常用的语句并不是很多,实际编程实现时,通常具有相对固定的几种语句结构:
3.2.1循环结构
通常使用指令DJNZCJNE完成判断跳转
循环次数通常由工作寄存器Rn存放
示例:
将30H开始的10个地址清零
解法一:
使用DJNZ指令
MOVR2,#10;循环数
MOVR0,#30H;间接寻址,只能是R0或R1
MOVA,#00H
QING:
MOV@R0,A;也可直接#00H,如不确定有A肯定对
INCR0
DJNZR2,QING
解法二:
使用CJNE指令
MOVR2,#00;循环变量
MOVR0,#30H;间接寻址,只能是R0或R1
MOVA,#00H
QING:
MOV@R0,A;也可直接#00H,如不确定有A肯定对
INCR0
INCR2
CJNER2,#10,QING
示例:
从3000H开始的外部RAM中连续读取10个字节的数据,
保存到以30H开始的内部RAM中
MOVDPTR,#3000H
MOVR0,#30H
MOVR2,#10
LOOP:
MOVXA,@DPTR;从外部RAM中读取数据
MOV@R0,A;保存到内部RAM中
INCDPTR;增一
INCR0;增一
DJNZR2,LOOP;R2先减1,若非零则跳转到LOOP
3.2.2判断结构(大于>小于<等于==)
(1)利用“SUBB被减数,减数”指令对标志位C的影响
i若够减(被减数大于减数)则C=0,
ii若不够减(被减数小于减数)则C=1,
iii若结果为0,则被减数相等减数
示例:
比较内部RAM中30H和31H的数值的大小关系
I若[30H]〉[31H],则32H=#01H;
II若[30H]<[31H],则32H=#02H
III若[30H]=[31H],则32H=#03H
BIJIAO:
MOVA,30H
CLRC;因为SUBB为带借位的减法,故先清借位位
SUBBA,31H;用30H中数值减31H中数值
JCXIAOYU;若[30H]<[
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机原理及应用 复习资料 单片机 原理 应用