单片机复习Word文档格式.docx
《单片机复习Word文档格式.docx》由会员分享,可在线阅读,更多相关《单片机复习Word文档格式.docx(21页珍藏版)》请在冰豆网上搜索。
![单片机复习Word文档格式.docx](https://file1.bdocx.com/fileroot1/2022-12/14/32f66c86-9bab-4d24-ab3e-eaba1d1b19c9/32f66c86-9bab-4d24-ab3e-eaba1d1b19c91.gif)
很多算术逻辑运算指令执行后都会影响进位标志C。
例如加减运算,若运算结果有进位或借位,则C=1,若无,则C=0。
可用专门的指令或硬件将C置位或清零,在进行位操作时,C又起着位累加器的作用,类似于累加器A。
(2)辅助进位标志AC(PSW.6):
做加减运算时,若低半字节有进位(借位),则AC=1,否则AC=0,辅助进位标志主要用于BCD运算调整时。
(3)软件标志FO(PSW.5):
这是可由用户定义的一个状态标志,可由用户置位或复位。
F1的定义与F0相同。
(4)工作寄存器组选择(PSW.4PSW.3)
5)溢出标志OV(PSW.2):
当运算结果超出机器所能表示的范围时称溢出。
OV是带符号数运算的溢出标志,如发生溢出,则OV=1;
否则OV=0。
(6)奇偶标志P(PSW.0):
P反映执行指令后累加器A中1的个数的奇偶,若A中1的个数为奇数,则P=1,若A中1的个数为偶数,则P=0。
4.1、程序存储器存放程序及各种表格、常数,其寻址范围为64KB,编址范围为0000H至FFFFH。
在既有片内又有片外程序存储器时,通常编址时先片内,后片外,片内片外连续不重叠。
EA有两种接法:
EA=1,此时复位后先执行片内程序存储器的程序;
EA=0,此时将不访问片内程序存储器而直接访问片外程序存储器
程序存储器中有特殊用途的6个单元
0003H部中断0中断服务程序入口地址
000BH定时器/计数器1溢出中断入口地址
0013H外部中断1入口地址
001BH定时器/计数器1溢出中断入口地址
0023H串行口中断入口地址
002BH定时器/计数器2溢出中断入口地址(89C52)
4.2、片内数据存储器:
分为RAM区(工作寄存器区、位寻址区、用户RAM区)和专用寄存器区(SFR区)两个区域
对于51子系列,片内RAM块的地址从00H~7FH,占128个字节,
片内特殊功能寄存器SFR块:
从80H~FFH,合起来共256B
片内RAM块可分为三个区域:
工作寄存器存器区:
00H—1FH位寻址区:
20H—2FH数据缓冲区:
30H—7FH
这三个区域统一编址,从00H~7FH,各区域有自己的特殊功能,也可统一调度使用
(1)工作寄存器区:
分为4个寄存器组(PSW.4PSW.3),RS1RS0工作寄存器组片内RAM地址:
00第0组00H~07H
01第1组08H~0FH
10第2组10H~17H
11第3组18H~1FH
(2)、片内高128字节RAM(特殊功能寄存器块SFR)特殊功能寄存器又称专用寄存器,与片内RAM统一编址(PC除外)用直接寻址方式寻址,其地址从80H~FFH,离散分布
5、片外数据存储器
片外数据存储器最大寻址范围为64KB。
地址编码为:
0000H~FFFFH,也就是说片外数据存储器的地址编码与程序存储器的地址是重叠使用的。
因为有两条不同的读信号线:
RD(P3.7)PSEN,另外还有两个不同的指令:
MOVX,MOVC
复位通常有上电复位和按纽操作复位两种方法。
复位是靠外部电路实现的。
常用的一种上电与按钮复位电路见图
6、时钟电路节拍信号由振荡器产生,51系列单片机的内部有一个用于构成振荡器的高增益反相放大器。
89C51单片机的时钟信号通常由两种方式产生:
1、片外振荡器时钟电路2、外部振荡器时钟电路
1、内部震荡方式2、外部时钟方式
7、CPU时序(周期)
状态周期:
振荡器输出的振荡脉冲作单片机内部各部件协调工作的节拍信号,两个时钟脉冲为1个状态周期。
机器周期:
计算机一条指令,每完成一项规定的操作所需的时间称为一个机器周期。
对89C51系列单片机6个状态周期构成一个机器周期。
若用12MHZ晶振,则机器周期1μs、若用6MHZ晶振,则机器周期2μs,12个时钟周期。
指令周期:
CPU执行一条指令所需的时间。
指令周期以机器周期为单位,指令不同其指令周期分别为1,2,4个机器周期。
MCS—51系列单片机执行指令的指令周期是用时钟周期来描述的,分为单周期指令、双周期指令、四周期指令四种
第三章
1、计算机编写程序时使用的程序设计语言有三种:
机器语言、汇编语言和高级语言。
机器语言:
是唯一CPU能直接识别的语言,机器语言描述的程序我们通常称之为目标程序
。
汇编语言和高级语言编制的程序称之为源程序,都要转换成机器语言程序后才能为计算机直接执行。
2、寻址方式(累加器表达方式:
A、ACC、0E0H)
1)、立即寻址MOVA,#34H
操作数就在指令中,跟在操作码的后面,该操作数被称为立即数(常数)。
立即数前面加“#”符号作为标志。
2)、直接寻址:
MOVA,30H
在指令中直接给出操作数所在的片内数据存储单元的地址00H-FFH。
把直接地址30H单元的内容送给累加器A
1)直接寻址方式是访问专用寄存器的方法(也可以使用名称)2、通常直接寻址方式只能访问片内RAM的低128个单元3、在进行位寻址时也采用直接寻址的方式
例:
JNB7EH,NEXT
3)、寄存器寻址MOVA,Rn;
(n=0,1,2….7)或者:
MOVA,B;
MOVPSW,A
操作数在寄存器中,指令中给出寄存器名式。
把寄存器Rn的内容送给累加器A中。
4)、寄存器间接寻址MOVA,@R0
在指令中用工作寄存器(R0、R1、DPTR)给出存储单元的地址,而操作数在RAM中(片内RAM或片外RAM),把R0里存放的地址的相应内容送给A。
5)、变址寻址(基址寄存器+变址寄存器间接寻址)
MOVCA,@A+DPTR;
A=5DPTR=12013
用于访问程序存储器ROM,它以DPTR或PC计数器作为基址寄存器,以累加器A作为变址寄存器,两者之和为操作数在程序存储器中的地址,把两者之和的地址的内容送给A。
(A=(1218H))此种方式常用于查表操作。
6)、相对寻址JCrelJNZ06H
也用于访问程序存储器,执行指令时将程序计数器PC的当前值与指令中给出的相对偏移量(rel)之和作为转移的目的地址,从此地址处开始执行指令。
PC的当前值称为基地址,偏移量为1个字节的带符号数,用补码表示,转移范围为-128~+127。
7)、位寻址JNBACC.3,STOP;
MOVC,20H
位寻址用于片内20—2FH的某1位,或特殊功能寄存器的某1位。
3、通用数据传送指令MOV
1)以累加器A为目的操作数传送指令2)以工作寄存器Rn为目的操作数传送指令
3)以直接地址为目的操作数4)以间接地址为目的操作数的传送指令(5)十六位数据传送类指令MOVDPTR,#data16。
注意:
以A为目的的操作数传送指令会影响奇偶标志位,其余对标志位均无影响,立即数#data只能做源操作数,寄存器寻址和寄存器间接寻址不能同时出现在操作数中,必须通过A间接传送。
4.交换指令
1)字节交换指令XCH
(1)某工作寄存器内容与累加器A交换指令。
XCHA,Rn;
n=0、1、……、7
(2)某RAM单元内容与累加器交换指令。
XCHA,@Ri;
i=0、1
(3)某片内RAM(低128字节)或专用寄存器内容与累加器交换指令。
XCHA,30H
2)半字节交换指令XCHD
某片内RAM单元内容的低半字节与累加器的低半字节交换指令。
格式:
XCHDA,@Ri;
i=0、1
3)累加器的高低半字节互换指令SWAP格式:
SWAPA
5、堆栈操作指令
单片机堆栈编址采用向上生成方式,即栈底占用较低地址,栈顶占用较高地址,
1、进栈指令PUSHSP←SP+1将direct指定的片内RAM(低128字节)单元或专用寄存器内容压栈
2、出栈指令POPSP←SP-1将栈顶处内容弹到direct指定的RAM(低128字节)某单元或某专用寄存器
6、外部RAM的传送指令(MOVX)
1、片外RAM(8位地址)与累加器A之间的传送指令
MOVXA,@Ri;
i=0.1,读片外RAM
MOVX@Ri,A;
i=0.1,写片外RAM
2、片外RAM(16位地址)与累加器A之间的传送指令
MOVXA,@DPTR;
读片外RAM
MOVX@DPTR,A;
写片外RAM
7、查表指令
指令常用于查表程序:
MOVCA,@DPTR+A;
A←(A+DPTR)该指令中的DPTR常用于存放表格的起始地址。
MOVCA,@A+PC;
A←(A+PC)当前的PC值是有该查表指令所在地址确定
注意:
1、DPTR+A和A+PC均为程序存储器某单元的地址,传送的是该单元的内容
2、在用A+PC计算程序存储器地址时,PC取当前值。
8、加法指令(加法指令共有8条,均以累加器A为一方,运算结果都送回累加器A)
2、带进位加法指令ADDCA,Rn;
A←A+Rn+C,ADDC指令主要用于多字节数相加时,从低字节开始,依次相加,最低字节的相加用ADD指令,而其它高位字节的相加要用ADDC指令(若高8位还有进位位C=1,则MOVA,#00HADDCA,#00HMOV42H,A)
9、加1指令INC,加1指令执行后不影响标志位CY,减1指令DEC,也不影响CY
10、十进制调整指令DAA:
对BCD码加法运算结果进行调整
调整的方法:
当累加器A的低半字节的值>
9或AC=1时,低半字节加6;
当高半字节>
9或CY=1时,高半字节加6进行调整后。
可得到BCD数的加法运算的正确结果。
11、减法指令SUBB:
带借位减法指令,亦以累加器A为一方(被减数),相减的结果均送回累加器A。
为带进(借)位相减指令,在进行减法运算时应先将进位位清零。
SUBBA,Rn;
A←A–(Rn)–C,n=0、2…7
12、1.乘法指令MULAB
该指令实现将累加器A与寄存器B中的两个无符号数相乘,乘积为16位,低8位积在A中,高8位积在B中。
2、除法指令DIVAB
除法指令实现两个8位的无符号数相除,其中被除数在累加器A中,除数在寄存器B中,结果商在A中,余数在B中。
指令执行后,进位标志CY、溢出标志OV均为0,但除数为0时,OV=1。
13、逻辑运算类指令(当目的操作数为累加器A时会影响奇偶标志位P,带进位的移位指令会影响C,除此之外,逻辑运算类指令不影响程序状态PSW)
1、ANL(与指令)常用于使操作数的某些位(与0相与)清零而使另外的一些位(与1相与)保持不变
2、OR或指令用于使操作数的某些位置1(与1相或)而另一些位保持不变(与0相或)。
3、XOR异或指令使操作数的某些位按位取反(与1异或)而使其它位保持不变(与0异或)。
4.累加器A清零与取反指令:
CLRA;
将累加器清零。
CPLA;
累加器内容取反后→A
14、无条件转移指令
1、绝对转移指令:
AJMPNEXT(addr11)指令执行的操作为PC←PC+2(两个字节)转移的范围为211,即2KB地址空间
2、长转移指令:
JMP2400H(addr16)指令执行的操作为PC←PC+3。
转移的范围为216,即64KB地址空间
3、短转移指令SJMPrel执行的操作为:
PC←PC+2+rel
PC+2为执行此指令时PC的当前值,rel是用8位的位移量(补码表示)
转移的范围为当前地址-128~+127必须注意,基地址为PC的当前值,在转移指令进行地址计算时,PC的当前值已指向下一条指令的第一个字节。
4.变址(间接)转移指令JMPA+@DPTR指令执行的操作为:
PC←A+@DPTR
15、条件转移指令
1、累加器内容到零转移指令
JZrel;
A=0转移JNZrel;
A≠0转移转移目的地址PC=PC+2+rel
2、比较不相等转移指令CJNE若目的操作数=源操作数,不转移,向下顺序执行;
否则转移;
转移的目的地址PC=PC+3+rel
3、减1不为0转移指令DJNZ
DJNZRn,rel;
Rn←Rn-1,Rn≠0时转移
16、子程序调用、返回指令
1、长调用指令LCALLaddr16指令执行的操作为:
PC←PC+3
2、绝对调用指令ACALLaddr11指令执行的操作即:
PC←PC+2
3、返回指令(RETRETI)子程序返回RET
4、中断返回指令RETI
17、汇编语言中位地址的表示方法有多种形式,
1)、直接位地址方式:
如20H单元的D7位可表示07H2)、特殊功能寄存器:
如P1.5、PSW.43)、位名称方式:
如直接使用RS1、RS0作位地址
3、位修正(清0、置1、取反)指令
CLRC;
C←0CLRbit;
bit←0
CPLC;
取反CC
CPLbit;
取反bit←bit
SETBC;
C←1
SETBbit;
bit←1
位转移指令:
JCrel;
C=1转移,否则继续执行
JNCrel;
C=0转移,否则继续执行
JB bit,rel;
bit=1转移,否则继续执行
JNBbit,rel;
bit=0转移,否则继续
JBCbit,rel;
bit=1转移,且bit←0,否则继续向下执行
18、汇编语言源程序:
(1)ORG(汇编起始命令)
(2)END(汇编结束伪指令,一个源程序只能有一个END命令)3)EQU(赋值伪指令)(4)DATA(数据地址赋值伪指令)
(5)DB(定义字节伪指令)(6)DW(定义字伪指令)(7)DS(定义存储空间伪指令)
(8)BIT(位地址赋值伪指令)
第四章
1、中断源
(1)外部中断:
外部中断是由外部原因引起的,即INT0——外部中断0请求信号,由P3.2引脚输入低电平或下降沿即向CPU申请中断INT1——外部中断1请求信号,由P3.3引脚输入低电平或下降沿即向CPU申请中断。
(2)定时中断
定时中断是当T0或T1定时器/计数器中发生计数溢出时,即表明定时时间到或计数值已满,这时就以计数溢出信号作为中断请求,
(3)串行口中断
是为串行数据的传送需要而设置的。
当接收或发送完一串行帧数据时,使内部串行口中断请求标志RI或TI=1,并请求中断
中断入口地址:
外部中断0(0003H)定时器T0中断(000BH)外部中断1(0013H)定时器T1中断(001BH)串行口中断(0023H)
2、TCON(定时器控制寄存器)的中断标志
TFl
TR1
TF0
TR0
IE1
IT1
IE0
IT0
TFl——T1溢出中断标志,CPU响应中断后,才由硬件自动清“0”。
也可用软件查询该标志,并由软件清“0”。
TF0——T0溢出中断标志
TR1=1T1启动TR1=0T1停止
TR0=1T0启动TR0=0T0停止
IE1——INT1外部中断1标志。
IE1=1外部中断1申请中断。
IE0——INT0外部中断0标志
ITl=0,外部中断1为电平触发方式,低电平有效。
ITl=1,外部中断1控制为边沿(先高后低的负跳变)触发方式
IT0——外部中断0触发方式控制位。
3、SCON(串行口控制寄存器)的中断标志
SMOD
TI
RI
TI——串行发送中断标志。
CPU将一个字节数据写入发送缓冲器SBUF后启动发送,每发送完一个串行帧,硬件置位TI。
TI标志由软件清除。
RI——串行接收中断标志。
在串行口允许接收时,每接收完一个串行帧,硬件置位RI。
RI标志由软件清除。
4、中断允许寄存器IE
EA
ES
ET1
EX1
ET0
EX0
EA--CPU中断总允许位。
EA=1,CPU开放中断;
ES—串行口中断允许位。
ES=1,允许中断;
ET1一T1中断允许位。
ET1=1,允许T1中断;
EX1—外部中断l允许位。
EX1=1,允许中断;
ET0—T0中断允许位。
ET0=l,允许T0中断;
EX0—外部中断0允许位。
EX0=1,允许中断
5、中断优先级寄存器
PS
PT1
PX1
PX0
PS——串行口中断优先级控制位。
PT1——T1中断优先级控制位。
PX1——外部中断l中断优先级控制位。
PT0——T0中断优先级控制位。
PX0——外部中断0中断优先级控制位。
外部中断0、定时器T0中断、外部中断1、定时器T1中断、串行口中断(高至低)
6、中断处理的基本过程应该包括:
中断请求、中断判优、中断响应、中断处理以及中断返回(中断处理程序从入口地址开始执行,直到返回指令“RETI”为止,包括保护现场、中断处理、恢复现场三部分内容)
CPU响应某中断请求后,在中断返回前,应该撤消该中断请求,否则会引起另一次中断。
(1)硬件清0:
定时器0或1中断,CPU在响应中断后,中断请求位自动情0撤除中断。
边沿触发外部中断,CPU在响应中断后,硬件自动清除有关的中断请求。
(2软件清0:
串行口中断,CPU响应中断后,靠软件来清除相应的位RITI,才能撤消中断标志。
(3)强制清0:
电平触发外部中断,必须由专门电路使INT0、INT1的引角为高电平,才可撤除外部中断。
7、中断初始化程序
1.开中断;
EA=1
2.某一中断源中断请求的允许与禁止(屏蔽);
3.确定各中断源的优先级别;
4.若是外部中断请求,则要设定触发方式是电平触发还是边沿触发。
8、定时器/计数器的方式控制寄存器TMOD
定时器
1
位编号
D7
D6
D5
D4
D3
D2
D1
D0
位功能
GATE
C/T
M1
M0
⑴M1和M0:
方式选择位,定义如表所示:
⑵C/T:
功能选择。
C/T=0定时器方式;
C/T=1计数器方式。
⑶GATE:
门控位。
GATE=0,允许软件控制位TR0或TR1启动定时器。
T0或T1;
GATE=1,且TR0(或TR1)=1,由外部中断引脚电平INT0(P3.2)启动定时器T0,即由INT1(P3..3)引脚控制T1。
M1M0
工作方式
功能说明
00
方式0
13位计数器(8192)
01
方式1
16位计数器
10
方式2
自动再装入8位计数器
11
方式3
定时器0:
分成两个8位计数器
设计定时中断程序:
1.确定工作方式:
对TMOD寄存器赋值;
2.置初值:
对TH0、TL0或TH1、TL1寄存器赋值;
3.根据需要,开放定时器中断:
对IE寄存器赋值;
4.启动定时/计数器
9、89S51的串行通信
并行通信——数据的各位同时传送。
串行通信——数据一位一位顺序传送。
1)异步通信方式
在异步通信中,数据通常是以字符(或字节)为单位组成字符帧传送的。
字符帧由发送端一帧一帧地发送,通过传输线被接收设备一帧一帧地接收。
发送端和接收端可以有各自的时钟来控制数据的发送和接收,这两个时钟源彼此独立。
每当接收端检测到传输线上发送过来的低电平逻辑“0”(字符帧中起始位)时,就知道发送端已开始发送。
起始位:
位于字符帧开头,只占一位,始终为逻辑“0”(低电平),用于向接收设备表示发送端开始发送一帧信息。
停止位:
位于字符帧末尾,为逻辑“1”(高电平),通常可取1位、1.5位或2位,用于向接收端表示一帧字符信息已发送完毕,也为发送下一帧字符作准备
同步通信要求发送端和接收端的时钟严格同步,需要提供单独的时钟信号,而且严格控制传送数据的时间间隔。
波特率:
每秒钟传送二进制数码的位数(亦称比特数),单位是bit/s,即位/秒
字符的实际传输速率是指每秒内所传字符帧的帧数,和字符帧格式有关。
TI:
发送中断标志位:
用于指示一帧信息是否发送完
RI:
接收中断标志位:
用于指示一帧信息是否接收完
1.串行口初始化编程:
1)确定波特率,并设定T1为方式2
2)设定串行口工作方式,并确定SMOD(PCON的最高位)
3)开中断,设置高优先级(也可用查询方式RI,TI)
4)启动T1产生波特率(TR1)
MOVSCON,#
MOVPCON,#80H;
(SMOD=1,波特率提高1倍)
MOVTMOD,#20H
MOVTH1,#
MOVTL1,#
CLRET1
SETBEA
SETBES
SETBPS
SETBTR