单片机复习资料1.docx
- 文档编号:10437290
- 上传时间:2023-05-25
- 格式:DOCX
- 页数:37
- 大小:2.02MB
单片机复习资料1.docx
《单片机复习资料1.docx》由会员分享,可在线阅读,更多相关《单片机复习资料1.docx(37页珍藏版)》请在冰点文库上搜索。
单片机复习资料1
单片机复习资料
第1章微机基础知识
微处理器(Microprocessor)是小型计算机或微型计算机的控制和处理部分。
又称中央处理单元CPU(CentralProcessingUnit)。
微型计算机(Microcomputer,简称微机MC)是具有完整运算及控制功能的计算机。
包括:
微处理器(CPU),存储器,接口适配器(输入输出接口电路),输入/输出(I/O)设备。
微处理器由控制器、运算器和若干个寄存器组成;
I/O设备与微处理器的连接需要通过接口适配器(即I/O接口);
存储器是指微机内部的存储器(RAM、ROM和EPROM等芯片)。
单片机(Single-ChipMicrocomputer)
是将微处理器、一定容量RAM和ROM以及I/O口、定时器等电路集成在一块芯片上,构成单片微型计算机。
微处理器由:
运算器、控制器、CPU中的主要寄存器组成。
ALU、计数器、寄存器和控制部分除在微处理器内通过内部总线相互联系以外,还通过外部总线和外部的存储器和输入/输出接口电路联系。
外部总线一般分为数据总线、地址总线和控制总线,统称为系统总线。
存储器包括RAM和ROM。
微计算机通过输入/输出接口电路可与各种外围设备联接。
1)运算器
作用:
1.把传送到微处理器的数据进行运算或逻辑运算
2.ALU可对两个操作数进行加、减、与、或、比较大小等操作,最后将结果存入累加器
3.ALU执行不同的运算操作是由不同控制线上的信息所确定的。
ALU的两个主要输入来源:
累加器和数据寄存器
2)控制器
作用:
它是发布命令的“决策机构”,即协调和指挥整个计算机系统的操作
主要功能:
1.从内存中取出一条指令,并指出下一条指令在内存中的位置。
2.对指令进行译码或测试,并产生相应的操作控制信号,以便启动规定的动作
3.指挥并控制CPU、内存和输入/输出设备之间数据流动的方向。
3)CPU中的主要寄存器(见上图)
1.累加器(A):
在算术和逻辑运算时,它具有双重功能:
(1)运算前,用于保存一个操作数;
(2)运算后,用于保存所得的和、差或逻辑运算结果。
2.数据寄存器(DR)
数据(缓冲)寄存器(DR)是通过数据总线(DBUS)向存储器(M)和输入/输出设备I/O送(写)或取(读)数据的暂存单元。
3.指令寄存器(IR)
指令寄存器用来保存当前正在执行的一条指令。
当执行一条指令时先把它从内存取到数据寄存器中,然后再传送到指令译码器中。
4.指令译码器(ID)
指令分为操作码和地址码字段,由二进制数字组成。
当执行任何给定的指令,必须对操作码进行译码,以便确定所要求的操作。
指令寄存器中操作码字段的输出就是指令译码器的输入。
5.程序计数器(PC),通常称为指令地址计数器
在程序开始执行前,必须将其起始地址,即程序的第一条指令所在的内存单元地址送到PC,当执行指令时,CPU将自动修改PC的内容,使之总是保存将要执行的下一条指令的地址。
由于大多数指令都是按顺序执行的,所以修改的过程通常是简单的加1操作。
6.地址寄存器(AR)
地址寄存器用来保存当前CPU所要访问的内存单元或I/O设备的地址。
存储器
地址总线、数据总线和若干控制线把存储器和微处理器连接起来。
存储器从CPU接收控制信号,以确定存储器执行读/写操作。
地址总线将8位地址信息送入地址译码器,地址译码器的输出可以确定唯一的存储单元。
数据总线用来传送存储器到CPU或CPU到存储器的数据信息。
二……………………………………………………
1.程序存储器
在程序存储器中有6个单元具有特殊功能:
1)0000H~0002H:
是所有执行程序的入口地址,89C51复位后,CPU总是从0000H单元开始执行程序。
2)0003H:
外部中断0入口。
3)000BH:
定时器0溢出中断入口。
4)0013H:
外部中断1入口。
5)001BH:
定时器1溢出中断入口。
6)0023H:
串行口中断入口。
数据指针DPTR:
16位,由高位字节DPH和低位字节DPL组成,用于存放16位存储器的地址,对外部数据存储器RAM数据进行读写。
并行I/O口
1.P0口结构。
P0口有两个用途,第一是作为普通I/O口使用;第二作为地址/数据总线使用。
当用作第二个用途时,在这个口上分时送出低8位地址和传送数据。
2.P1口结构。
P1口只用作普通I/O口
3.P2口结构。
有两种用途,一是作为普通I/O口,二是作为高8位地址线。
4.P3口。
P3口除了有准双向I/O功能外,还具有第二功能。
振荡器和时钟电路
3.4算术运算类指令
算术运算类指令可以完成加、减、乘、除等各种操作,全部指令都是8位数运算指令。
算术运算类指令大多数要影响到程序状态字寄存器PSW中的溢出标志OV、进位(借位)标志CY、辅助进位标志AC和奇偶标志位P。
3.4.1加法指令
ADDA,#data;A←(A)+data
ADDA,direct;A←(A)+(direct)
ADDA,Rn;A←(A)+(Rn)
ADDA,@Ri;A←(A)+((Ri))
这组指令的功能是把源操作数所指出的内容与累加器A的内容相加,其结果存放在A中。
该组指令对PSW中各标志位的影响情况如下:
进位标志CY:
如D7位向上有进位,则CY=1;否则CY=0。
半进位标志AC:
如D3位向上有进位,AC=1;否则AC=0。
溢出标志OV:
若D7、D6位只有一个向上有进位,OV=1;若D7、D6同时有进位或同时无进位时,OV=0。
奇偶标志P:
当A中“1”的个数为奇数时,P=1;为偶数时,P=0。
3.4.2带进位加法指令
ADDCA,#data;A←(A)+data+(CY)
ADDCA,direct;A←(A)+(direct)+(CY)
ADDCA,Rn;A←(A)+(Rn)+(CY)
ADDCA,@Ri;A←(A)+((Ri))+(CY)
这组指令的功能是把源操作数所指出的内容与累加器A的内容相加、再加上进位标志CY的值,其结果存放在A中。
运算结果对PSW标志位的影响与ADD指令相同。
需要说明的是,这里所加的进位标志CY的值是在该指令执行之前已经存在的进位标志值,而不是执行该指令过程中产生的进位标志值。
例3-10设有两个无符号16位二进制数,分别存放在30H、31H单元和40H、41H单元中(低8位先存),写出两个16位数的加法程序,将和存入50H、51H单元。
(设和不超过16位)
解:
由于不存在16位数的加法指令,所以只能先加低8位,后加高8位,而在加高8位时要连低8位相加的进位一起相加,编程如下:
MOVA,30H;取一个加数的低字节送A中
ADDA,40H;两个低字节数相加
MOV50H,A;结果送50H单元
MOVA,31H;取一个加数的高字节送A中
ADDCA,41H;高字节数相加,同时加低字节产生的进位
MOV51H,A;结果送51H单元
例3-14试编写程序,实现95+59的BCD码加法,并将结果存入30H、31H单元。
MOVA,#95H;95的BCD码数送A中
ADDA,#59H;两个BCD码相加,结果在A中
DAA;对相加结果进行十进制调整
MOV30H,A;十位个位的BCD码之和送30H
MOVA,#00H;A清0
ADDCA,#00H;加进位(百位的BCD码)
DAA;BCD码相加后,用调整指令
MOV31H,A;存进位
第一次执行DAA指令的结果:
A=54H,CY=1,最终结果:
(31H)=01H,(30H)=54H。
例3-16将累加器A的低4位送到P1口的低4位输出,而P1的高4位保持不变。
解:
这种操作不能简单地用MOV指令实现,而可以借助与、或逻辑运算。
编程如下:
ANLA,#0FH;屏蔽A的高4位,保留低4位
ANLP1,#0F0H;屏蔽P1的低4位,保留高4位
ORLP1,A;通过或运算,完成所需操作
3.5.3逻辑异或运算指令
XRLA,#data;A←(A)data
XRLA,direct;A←(A)(direct)
XRLA,Rn;A←(A)(Rn)
XRLA,@Ri;A←(A)((Ri))
XRLdirect,A;direct←(direct)(A)
XRLdirect,#data;direct←(direct)data
指令应用:
用于将某些位取反。
方法是:
将需求反的位同“1”相异或,要保留的位同“0”相异或。
例3-17试编程,使内部RAM30H单元中的低2位清0,高2位置1,其余4位取反。
解:
ANL30H,#0FCH;30H单元中低2位清0
ORL30H,#0C0H;30H单元中高2位置1
XRL30H,#3CH;30H单元中间4位变反
3.5.4.累加器清零、取反指令
累加器清零指令:
CLRA;A←0
累加器按位取反指令:
CPLA
清零和取反指令只有累加器A才有,它们都是一字节指令,如果用其他方式来达到清零或取反的目的,则都为二字节的指令。
89C51系列单片机只有对A的取反指令,没有求补指令。
若要进行求补操作,可按“求反加1”来进行。
以上所有的逻辑运算指令,对CY、AC和OV标志都没有影响,只在涉及到累加器A时,才会影响奇偶标志P。
例3-19分析下面绝对转移指令的执行情况。
1234H:
AJMP0781H
分析:
指令执行前,(PC)=1234H;取出该指令后,(PC)+2形成PC当前值,它等于1236H,即0001001000110110B,指令执行过程:
用指令给出的11位地址11110000001B替换PC当前值的低11位,即新的PC值为1781H,所以指令执行结果就是转移到1781H处执行程序。
应注意:
只有转移的目的地址与PC当前值在2K范围之内时,才可使用AJMP指令,超出2K范围,应使用长转移指令LJMP。
3.短转移指令
SJMPrel;PC←(PC)+2,PC←(PC)+rel
SJMP是无条件相对转移指令,该指令为双字节,rel是相对转移偏移量。
目的地址=(PC)+2+rel。
rel范围为-128~+127
这条指令的优点是:
指令给出的是相对转移地址,不具体指出地址值。
当程序地址发生变化时,只要相对地址不发生变化,该指令就不需要作任何改动。
3.减1条件转移指令
DJNZRn,rel
DJNZdirect,rel
第一条为二字节指令,第二条为三字节指令。
这两条指令对于构成循环程序十分有用,使用中可以指定任何一个工作寄存器或者内部RAM单元为计数器。
对计数器赋以初值以后,就可以利用上述指令对计数器进行减1,不为零就进入循环操作,为零就结束循环,从而构成循环程序。
1.子程序调用指令
LCALLaddr16
ACALLaddr11
LCALL指令称为长调用指令,三字节;addr16是子程序的16位入口地址。
长调用指令调用范围为64KB。
ACALL指令称为绝对调用指令。
其指令格式为:
a10a9a810001
a7a6a5a4a3a2a1a0
该指令的功能是:
先将PC加2,指向下条指令地址(即断点地址),然后将断点地址压入堆栈,再把指令中给出的子程序低11位入口地址装入PC的低11位上,PC的高5位保持不变。
使程序转移到对应的子程序入口处。
绝对调用指令调用范围为2KB。
2.返回指令RET
功能:
从堆栈中自动取出断点地址送入程序计数器PC。
使程序返回到主程序断点处继续执行。
RETI指令是中断返回指令,放在中断服务子程序的末尾。
其功能也是从堆栈中自动取出断点地址送入程序计数器PC,使程序返回到主程序断点处继续往下执行,同时还清除中断响应时被置位的优先级状态触发器。
注意:
①RET和RETI不能互换使用。
②在子程序或中断服务子程序中,PUSH指令和POP指令必须成对使用,否则,不能正确返回主程序断点位置。
空操作指令:
NOP。
这是一条单字节指令。
该指令不产生任何操作,只是使PC的内容加1,指向下一条指令,它又是一条单周期指令,执行时在时间上消耗一个机器周期。
因此,NOP指令常用来实现等待或延时。
三…………………………………………………………………………………………………………
定义字数据伪指令DW
格式:
[标号:
]DW16位字数据表。
应注意:
16位数据存入时,先存高8位,后存低8位。
ORG1400H
DATA:
DW324AH,3CH
……
汇编后:
(1400H)=32H,(1401H)=4AH,(1402H)=00H,(1403H)=3CH
编写16位二进制数求补程序。
设16位二进制数存放在R1R0中,求补以后的结果则存放于R3R2中。
解:
二进制数的求补可归结为“求反加1”的过程。
求反可用CPL指令实现;加1时应注意,加1只能加在低8位的最低位上。
因为现在是16位数,有两个字节,因此要考虑进位问题,即低8位取反加1,高8位取反后应加上低8位加1时可能产生的进位。
ORG0200H
MOVA,R0;低8位送A
CPLA;取反
ADDA,#01H;加1
MOVR2,A;存结果
MOVA,R1;高8位送A
CPLA;取反
ADDCA,#00H;加进位
MOVR3,A;存结果
END
四,中断……………………………………………………………………
CPU暂时中止自身的事物,转去处理事件的过程,称为CPU的中断响应过程。
对事件的整个处理过程,称为中断服务(或中断处理)。
89C51中断系统的五个中断源
1、INT0——外部中断0请求,低电平有效。
通过P3.2引脚输入。
2、INT1——外部中断1请求,低电平有效。
通过P3.3引脚输入。
3、T0——定时器/计数器0溢出中断请求。
4、T1——定时器/计数器1溢出中断请求。
5、TX/RX——串行口中断请求。
当串行口完成一帧数据的发送或接收时,便请求中断。
1、TCON中的中断标志位
TCON为定时器/计数器T0和T1的控制器,同时也锁存T0和T1的溢出中断标志及外部中断0和1的中断标志等。
与中断有关的位如图所示。
1、TF1:
定时器/计数器T1溢出中断请求标志位。
当启动T1计数后,T1从初值开始加1计数,计数器最高位产生溢出时,由硬件使TF1置1,并向CPU发出中断请求。
当CPU响应中断时,硬件将自动对TF1清0。
2、TF0:
定时器/计数器T0溢出中断请求标志位。
含义与TF1类同。
3、IE1:
外部中断1的中断请求标志。
INT1(P3.3)。
当检测到外部中断引脚1上存在有效的中断请求信号时,由硬件使IE1置1。
4、IE0:
外部中断0的中断请求标志。
INT0(P3.2)。
其含义与IE1类同。
5、IT1:
外部中断1的中断触发方式控制位。
IT1=0时,外部中断1程控为电平触发方式。
CPU在每一个机器周期S5P2期间采样外部中断请求引脚的输入电平。
若外部中断1请求为低电平,则使IE1置1;若为高电平,则使IE1清0。
IT1=1时,外部中断1程控为边沿触发方式。
CPU在每一个机器周期S5P2期间采样外部中断请求引脚的输入电平。
如果在相继的两个机器周期采样过程中,一个机器周期采样到外部中断1请求引脚为高电平,接着的下一个机器周期采样到为低电平,则使IE1置1。
直到CPU响应该中断时,才由硬件使IE1清0。
6、IT0:
外部中断0的中断触发方式控制位。
其含义与IT1类同。
2、串行口控制寄存器SCON中的中断标志位
SCON为串行口控制寄存器,其低2位锁存串行口的接收中断和发送中断标志RI和TI。
SCON中TI和RI的格式如图所示。
1、TI:
串行口发送中断请求标志。
CPU将一个数据写入发送缓冲器SBUF时,就启动发送。
每发送完一帧串行数据后,硬件置位TI。
但CPU响应中断时,并不清除TI,必须在中断服务程序中由软件对TI清0。
2、RI:
串行口接收中断请求标志。
在串行口允许接收时,每接收完一个串行帧,硬件置位RI。
同样,CPU响应中断时不会清除RI,必须在中断服务程序中由软件对RI清0。
二、中断允许控制
①EA—中断允许总控制位。
EA=0,屏蔽所有的中断请求;
EA=1,CPU开放中断。
对各中断源的中断请求是否允许,还要取决于各中断源的中断允许控制位的状态。
这就是所谓的两级控制。
②ES—串行口中断允许位。
ES=0,禁止串行口中断;ES=1,允许串行口中断。
③ET1—定时器/计数器T1的溢出中断允许位。
ET1=0,禁止T1中断;ET1=1,允许T1中断。
④EX1—外部中断1的溢出中断允许位。
EX1=0,禁止外部中断1中断;EX1=1,允许外部中断1中断。
⑤ET0—定时器/计数器T0的溢出中断允许位。
ET0=0,禁止T0中断;ET0=1,允许T0中断。
⑥EX0—外部中断0的溢出中断允许位。
EX0=0,禁止外部中断0中断;EX0=1,允许外部中断0中断。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 复习资料