单片机考试知识.docx
- 文档编号:14460018
- 上传时间:2023-06-23
- 格式:DOCX
- 页数:26
- 大小:331KB
单片机考试知识.docx
《单片机考试知识.docx》由会员分享,可在线阅读,更多相关《单片机考试知识.docx(26页珍藏版)》请在冰点文库上搜索。
单片机考试知识
知识结构
图2-1典型单片机的基本组成结构
P3——8位、准双向I/O口,具有内部上拉电阻。
P3还提供各种替代功能。
在提供这些功能时,其输出锁存器应由程序置1。
P3口可以驱动4个LSTTL负载。
·串行口:
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,低电平有效,输出,片外数据存储器读选通。
(3)控制线:
共4根。
①输入:
RST——复位输入信号,高电平有效。
在振荡器工作时,在RST上作用两个机器周期以上的高电平,将器件复位。
EA/VPP——片外程序存储器访问允许信号,低电平有效。
在编程时,其上施加21V或12V的编程电压。
②输入、输出:
ALE/PROG——地址锁存允许信号,输出。
用做片外存储器访问时,低字节地址锁存。
ALE以1/6的振荡频率稳定速率输出,可用做对外输出的时钟或用于定时。
在EPROM编程期间,作输入。
输入编程脉冲(PROG)。
ALE可以驱动8个LSTTL负载。
③输出控制线:
PSEN——片外程序存储器选通信号,低电平有效。
在从片外程序存储器取指期间,在每个机器周期中,当PSEN有效时,程序存储器的内容被送上P0口(数据总线)。
PSEN可以驱动8个LSTTL负载。
2)数据指针DPTR
数据指针是80C51中一个功能比较特殊的寄存器。
从结构上说,DPTR是一个16位的特殊功能寄存器,主要功能是作为片外数据存储器寻址用的地址寄存器(间接寻址),故称为数据指针。
访问片外数据存储器的指令为:
MOVXA,@DPTR读
MOVX@DPTR,A写
此时,DPTR的输出,即片外数据存储器的地址,与P0、P2口之间的关系如图2--5所示。
图2—5DPTR的输出与P0、P2口之间的关系
DPTR寄存器也可以作为访问程序存储器时的基址寄存器。
MOVCA,@A+DPTR
JMP@A+DPTR
DPTR寄存器既可以作为一个16位寄存器处理如,
MOVDPTR,#16位地址
INCDPTR
也可以作为两个8位寄存器处理,其高8位用DPH表示,低8位用DPL表示。
如:
CJNEA,DPL,$
CJNEA,DPH,$
在80C51中,两个地址寄存器,即程序计数器PC与数据指针DPTR,有相同之处,也有差别:
①两者都是与地址有关的、16位的寄存器。
其中,PC与程序存储器的地址有关,而DPTR与数据存储器的地址有关。
作为地址寄存器使用时,PC与DPTR都是通过P0和P2口输出的。
但是,PC的输出与ALE及PSEN有关;
DPTR的输出,则与ALE、WR、RD相联系。
DPTR寄存器也可以作为访问程序存储器时的基址寄存器。
MOVCA,@A+DPTR
JMP@A+DPTR
DPTR寄存器既可以作为一个16位寄存器处理如,
MOVDPTR,#16位地址
INCDPTR
也可以作为两个8位寄存器处理,其高8位用DPH表示,低8位用DPL表示。
如:
CJNEA,DPL,$
CJNEA,DPH,$
在80C51中,两个地址寄存器,即程序计数器PC与数据指针DPTR,有相同之处,也有差别:
①两者都是与地址有关的、16位的寄存器。
其中,PC与程序存储器的地址有关,而DPTR与数据存储器的地址有关。
作为地址寄存器使用时,PC与DPTR都是通过P0和P2口输出的。
但是,PC的输出与ALE及PSEN有关;
DPTR的输出,则与ALE、WR、RD相联系
②PC只能作为16位寄存器对待;
由于有自动加1的功能,故又称为计数器;PC是不可以访问的;有自己独特的变化方式;它的变化轨迹决定了程序执行的流程。
DPTR可以作为16位寄存器对待,也可以作为两个8位寄存器对待;DPTR是可以访问的。
4程序状态字PSW
程序状态字PSW(ProgramStatusWord)是一个逐位定义的8位的寄存器,其内容的主要部分是算术逻辑运算单元(ALU)的输出。
它是一个程序可访问的寄存器,而且可以按位访问。
格式如下:
MSBLSB
CY
AC
F0
RS1
RS0
OV
—
P
其中,除PSW.1(保留位)、
RS1和RS0(工作寄存器选择控制位)
及F0之外,其他四位:
PSW.0(P,奇偶校验位),
PSW.2(OV,溢出标志位),
PSW.6(AC,辅助进位标志位)及
PSW.7(CY,进位标志位)都是ALU运算结果的直接输出。
(1)PSW.0——P,奇偶标志位。
每个指令周期都由硬件来置位或清除。
用以表示累加器中值为1的位数是奇数还是偶数:
若累加器值为1的位数是奇数,P=1置位;
否则,P=0清除。
在串行通信中,常以传送奇偶校验位来检验传输数据的可靠性。
通常将P置入串行帧中的奇偶校验位。
(2)PSW.2——OV,溢出标志位。
当执行运算指令时,由硬件置位或清除,以指示运算是否产生溢出;OV置位表示运算结果超出了目的寄存器A所能表示的带符号数的范围(-128~+127)。
①对于ADD加法:
若Ci’表示位i向位i+1有进位,则OV=C6’C7’;当位6向位7有进位而位7不向CY进位时,或当位7向C进位而位6不向位7进位时,OV标志置位;否则,清除。
②对于SUBB减法:
若Ci’表示位i向位i+1有借位,则OV=C6’C7’;当位6向位7有借位而位7无借位时,或当位7向CY有借位而位6不向位7借位时,OV标志置位。
③对于MUL乘法:
当A、B两个乘数的积超过255时,OV置位;否则,OV=0。
因此,若OV=0时,只需从A寄存器中取积;若OV=1时,则需从B、A寄存器对中取积。
④对于DIV除法:
若除数为0时,OV=1;否则,OV=0。
(3)PSW.6——AC,辅助进位标志位。
当进行加法或减法运算时,若低4位向高4位数发生进位或借位时,AC将被硬件置位;否则,被清除。
在十进制调整指令DA中有用。
(4)PSW.7——CY,进位标志位。
在进行算术运算时,可以被硬件置位或清除,以表示运算结果中高位是否有进位或借位的状态。
在布尔处理机中,CY被认为是位累加器。
(5)PSW.5——F0,用户可使用的通用标志位。
开机时该位为“0”。
用户可根据需要,通过位操作指令置“l”或者清“0”。
当CPU执行F0测试转移指令时,根据F0的状态实现分支转移。
(3)ALE信号
一般地说,状态时钟经过3分频之后,产生ALE引脚上的信号输出
2时序定时单位
时序是用定时单位来说明的。
80C51的时序定时单位共有4个,从小到大依次是:
节拍、状态、机器周期和指令周期。
(1)节拍与状态:
一个状态包含两个节拍,其前半周期对应的节拍叫P1,后半周期对应的节拍叫P2
(2)
(2)机器周期:
80C51采用定时控制方式,因此它有固定的机器周期。
规定一个机器周期的宽度为6个状态,并依次表示为S1~S6。
由于一个状态又包括两个节拍,因此一个机器周期总共有12个节拍,分别记作S1P1,S1P2,…,S6P2。
由于一个机器周期共有12个振荡脉冲周期,因此机器周期就是振荡脉冲的12分频。
当振荡脉冲频率为l2MHz时,一个机器周期为1μs;当振荡脉冲频率为6MHz时,一个机器周期为2μs。
(3)指令周期:
执行一条指令所需要的时间称为指令周期。
它是最大的时序定时单位。
80C51的指令周期根据指令的不同,可包含有一、二、四个机器周期。
380C51指令时序
80C51共有111条指令,全部指令按其长度可分为单字节指令、双字节指令和三字节指令。
执行这些指令所需要的机器周期数目是不同的,概括起来共有以下几种情况:
单字节单机器周期指令、单字节双机器周期指令、双字节单机器周期指令和双字节双机器周期指令,三字节指令都是双机器周期的,而单字节乘除指令则均为四机器周期的。
图2--10所表示的是几种典型单机器周期和双机器周期指令的时序.
图21080C51的取指/执行时序
①单机器周期指令,如图2--10(a)、(b)所示。
双字节时,执行在S1P2开始,操作码被读入指令寄存器;在S4P2时,再读入第二个字节。
单字节时,执行在S1P2开始,操作码被读入指令寄存器;在S4P2时仍有读操作,但被读入的字节(即下一操作码)被忽略,且此时PC并不增量。
以上两种情况均在S6P2时结束操作。
②双机器周期指令,如图2--10(c)、(d)所示。
双字节时,执行在S1P2开始,操作码被读入指令寄存器;在S4P2时,再读入的字节被忽略。
由S5开始送出外部数据存储器的地址,随后是读或写的操作。
在读、写期间,ALE不输出有效信号。
在第二个机器周期,片外数据存储器也寻址和选通,但不产生取指操作。
单字节时,执行在S1P2开始,在整个两个机器周期中,共发生四次读操作,但是后三次操作都无效。
一般地,算术/逻辑操作发生在节拍1期间,内部寄存器之间的传送发生在节拍2期间。
图中的ALE信号是为地址锁存而定义的,该信号每有效一次对应单片机进行的一次读指令操作。
ALE信号以振荡脉冲六分之一的频率出现,因此在一个机器周期中,ALE信号两次有效,第一次在S1P2和S2P1期间,第二次在S4P2和S5P1期间,有效宽度为一个状态。
现对几个典型指令的时序作如下说明:
✶单字节单周期指令(例如INCA)由于是单字节指令,因此只需进行一次读指令操作。
当第二个ALE有效时,由于PC没有加1,所以读出的还是原指令,属于一次无效的操作。
✶双字节单周期指令(例如ADDA,#data)这种情况下对应于ALE的两次读操作都是有效的,第一次是读指令操作码,第二次是读指令第二字节(本例中是立即数)。
✶单字节双周期指令(例如INCDPTR)两个机器周期共进行四次读指令的操作,但其中后三次的读操作全是无效的。
(4)单字节双周期指令(MOVX类指令)如前述每个机器周期内有两次读指令操作,但MOVX类指令情况有所不同。
因为执行这类指令时,先在ROM读取指令,然后对外部RAM进行读/写操作。
第一机器周期时,与其它指令一样,第一次读指令(操作码)有效,第二次读指令操作无效。
第二机器周期时,进行外部RAM访问,此时与ALE信号无关,因此不产生读指令操作。
此外还应说明,时序图中只表现了取指令操作的有关时序,而没有表现指令执行的内容。
存储器结构和地址空间
①在物理上设有4个存储器空间
·程序存储器:
片内程序存储器;
片外程序存储器;
·数据存储器:
片内数据存储器;
片外数据存储器。
②在逻辑上设有3个存储器地址空间
·片内、片外统一的64KB程序存储器地址空间;
·片内256(或384)B数据存储器地址空间;
·片外64KB的数据存储器地址空间。
总括起来,80C51系列单片机设有三种基本的寻址空间:
·64KB的片内、外程序存储器寻址空间;
·64KB的片外数据存储器寻址空间;
·256(或384)B的片内数据存储器寻址空间,其中包括特殊功能寄存器寻址空间。
由上可见,80C51系列单片机具有相当容量的存储器寻址空间,大大开拓了它的应用范围。
图2--12为片内数据存储器各部分地址空间分布图。
2.680C51单片机的工作方式
80C51单片机共有复位、程序执行、低功耗以及编程和校验四种工作方式。
2.6.1复位方式
1复位操作
复位是单片机的初始化操作,其主要功能是把PC初始化为0000H,使单片机从0000H单元开始执行程序。
除了进入系统的正常初始化之外,当由于程序运行出错或操作错误使系统处于死锁状态时,为摆脱困境,也需按复位键以重新启动。
除PC之外,复位操作还对其它一些特殊功能寄存器有影响,它们的复位状态见表2--7。
复位操作还对单片机的个别引脚信号有影响。
例如在复位期间,ALE和PSEN信号变为无效状态,即ALE=l,PSEN=1。
2复位信号及其产生
(1)复位信号
图2--13复位电路结构图
RST引脚是复位信号的输入端。
复位信号是高电平有效,其有效时间应持续24个振荡脉冲周期(即两个机器周期)以上。
若使用频率为6MHz的晶振,则复位信号持续时间应超过4μs才能完成复位操作。
产生复位信号的电路逻辑图如图2--13所示。
整个复位电路包括芯片内、外两部分。
外部电路产生的复位信号(RST)送斯密特触发器,再由片内复位电路在每个机器周期的S5P2时刻对斯密特触发器的输出进行采样,然后才得到内部复位操作所需要的信号。
(2)复位方式
复位操作有上电自动复位、按键电平复位和外部脉冲复位三种方式,示于图2--14
图2--14复位电路
上电自动复位是通过外部复位电路的电容充电来实现的,其电路如图2--14(a)所示。
只要电源Vcc的上升时间不超过1ms,就可以实现自动上电复位,即接通电源就完成了系统的复位初始化。
按键电平复位是通过使复位端经电阻与Vcc电源接通而实现的,其电路如图2--14(b)所示。
而按键上述电路图中的电阻、电容参数适宜于6MHz晶振,能保证复位信号高电平持续时间大于2个机器周期。
外部脉冲复位是由外部提供一个复位脉冲。
此复位脉冲应保持宽度大于2个机器周期,如图2--14(c)所示。
复位脉冲过后,由内部下拉电阻保证RST端的低电平。
寄存器
复位时内容
寄存器
复位时内容
PC
0000H
IE
0**0000B
ACC
00H
TL0
00H
B
00H
TH0
00H
PSW
00H
TL1
00H
SP
07H
TH1
00H
DPTR
0000H
SCON
00H
P0—P3
FFH
SBUF
不定
TMOD
00H
PCON
0***0000B
TCON
00H
IP
(****00000B)
表2-6特殊功能寄存器的复位状态
第3章
1一般传送指令
一般传送指令共有15条,这类传送指令的格式为:
MOV<目的字节>,<源字节>
它的功能是把源字节的内容送到目的字节,而源字节的内容不变。
操作属于拷贝性质,不属于搬家性质。
(1)以累加器A为目的操作数的指令组,共有4条指令:
MOVA,Rn;(A)←(Rn)
MOVA,direct;(A)←(direct)
MOVA,@Ri;(A)←((Ri))
MOVA,#data;(A)←#data
(2)以寄存器Rn为目的操作数的指令组,共有3条指令:
MOVRn,A;(Rn)←(A)
MOVRn,direct;(Rn)←(direct)
MOVRn,#data;(Rn)←#data
这组指令的功能是把源操作数的内容送入当前工作寄存器区的R0~R7中的某一个寄存器。
源操作数有寄存器寻址、直接寻址和立即寻址等寻址方式。
(3)A与片外数据存储器的传送指令MOVX组,共有4条指令:
MOVXA,@Ri
MOVXA,@DPTR
MOVX@Ri,A
MOVX@DPTR,A
这组的功能是实现累加器A与外部数据存储器或I/O口之间传送一个字节数据的指令。
采用间接寻址方式访问外部数据存储器,有Ri和DPTR两种间接寻址方式。
例如:
设工作寄存器R0的内容为12H,R1的内容为34H,片外RAM34H单元的内容为56H。
执行指令为
MOVXA,@R1;(34H)=56H→(A)
MOVX@R0,A;(A)=56H→12H单元中
执行结果为(34H)=56H,(12H)=56H。
3.3.2算术运算类指令
3.3.2算术运算类指令
1加法指令
加法类指令共14条,包括加法、带进位的加法、加1以及二—十进制调整4组指令。
(1)加法指令这组指令的助记符为ADD,共有4条指令:
ADDA,Rn;(A)+(Rn)→(A)
ADDA,direct;(A)+(direct)→(A)
ADDA,@Ri;(A)+((Rn))→(A)
ADDA,#data;(A)+#data→(A)
(2)加1指令这组指令的助记符为INC,共有5条指令:
INCRn;(Rn)←(Rn)+1
INCdirect;(direct)←(direct)+1
INC@Ri;((Ri))←((Ri))+1
INCA;(A)←(A)+1
INCDPTR;(DPTR)←(DPTR)+1
这组指令的功能是将工作寄存器Rn、片内RAM单元中的内容、间接地址存储器中的8位无符号二进制数、累加器A和数据指针DPTR的内容加1,相加的结果仍存放在原单元中。
这类指令不影响各个标志位。
例如:
设(R0)=7EH,(7EH)=0FFH,(7FH)=40H。
执行指令为
INC@R0;0FFH+1=00H→(7EH)
INCR0;7EH+1=7FH→(R0)
INC@R0;40H+1=41H→(7FH)
执行结果为(R0)=7FH,(7EH)=00H,(7FH)=41H。
2减法指令
减法类指令共8条,包括带借位的减法、减1两组指令。
(1)带借位减法指令
这类指令的助记符为SUBB,共有4条指令:
SUBBA,Rn;(A)-(Rn)-(CY)→(A)
SUBBA,direct;(A)-(direct)-(CY)→(A)
SUBBA,@Ri;(A)-((Rn))-(CY)→(A)
SUBBA,#data;(A)-#data-(CY)→(A)
3循环左移指令:
RLA
它是将累加器的内容逐位循环左移一位,并且a7的内容移到a0,见图3--8(c)所示。
此操作不影响标志位。
例如:
设(A)=3AH(00111010B),执行RLA指令,
执行结果为(A)=74H(01110100B)。
4双操作数逻辑运算指令
双操作数逻辑运算指令包括:
ANL(逻辑“与”)、ORL(逻辑“或”)及XOR(逻辑“异或”)三类操作,共18条指令。
在指令中包含有两个操作数:
第一操作数A,direct
第二操作数A,Rn,direct,#data,@Ri
(1)逻辑“与”运算指令
这组指令的助记符为ANL,共有6条指令:
ANLA,Rn;(A)←(A)∧(Rn)
ANLA,direct;(A)←(A)∧(direct)
ANLA,@Ri;(A)←(A)∧((Ri))
ANLA,#data;(A)←(A)∧#data
ANLdirect,A;(direct)←(direct)∧(A)
ANLdirect,#data;(direct)←(direct)∧#data
(2)逻辑“或”运算指令
这组指令的助记符为ORL,共有6条指令:
ORLA,Rn;(A)←(A)∨(Rn)
ORLA,direct;(A)←(A)∨(direct)
ORLA,@Ri;(A)←(A)∨((Ri))
ORLA,#data;(A)←(A)∨#data
ORLdirect,A;(direct)←(direct)∨(A)
ORLdirect,#data;(direct)←(direct)∨#data
(3)逻辑“异或”运算指令这组指令的助记符为XRL,共有6条指令:
XRLA,Rn;(A)←(A)(Rn)
XRLA,direct;(A)←(A)(direct)
XRLA,@Ri;(A)←(A)((Ri))
XRLA,#data;(A)←(A)#data
XRLdirect,A;(direct)←(direct)(A)
XRLdirect,#data(direct)←(direct)#data
第4章
图4--7方式1时,定时器/计数器T0、T1的结构简图
中断系统
(1)中断源:
能产生中断的外部和内部事件。
中断源
80C51中有五个中断源;80C52中增多了一个中断源——定时器/计数器T2,即有六个中断源。
80C51的五个中断源是:
①INT0(P3.2)——外部中断0。
当IT0(TCON.0)=0时,低电平有效;当IT0(TCON.0)=1时,下降沿有效。
②INT1(P3.3)——外部中断1。
当IT1(TCON.2)=0时,低电平有效;当IT1(TCON.2)=1时,下降沿有效。
3TF0(P3.4)——定时器/计数器T0溢出中断。
④TF1(P3.5)——定时器/计数器T1溢出中断。
5RX,TX——串行中断。
(2)外部中断触发方式
INT0、INT1的中断触发方式有两种:
电平触发方式,低电平有效;跳变触发方式,电平发生由高到低的跳变时触发。
这两种触发方式可由设置TCON寄存器中的IT1((TCON.2)、IT0((TCON.0)中断申请触发方式控制位来选择:
设置IT1、IT0=0,选择电平触发方式;设置IT1、IT0=1,选择跳变触发方式,即当INT0、INT1引脚检测到前一个机器周期为高电平、后一个机器周期为低电平时,则置位IE0、IE1且向CPU申请中断。
由于CPU每个机器周期采样INT0、INT1引脚信号一次,为确保中断请求被采样到,外部中断源送INT0、INT1引脚的中断请求信号应至少保持一个机器周期。
如果是跳变触发方式,外部中断源送INT0、INT1引脚的中断请求信号高、低电平应至少各保持一个机器周期,才能确保CPU采集到电平的跳变;如果是电平触发方式,则外部中断源送INT0、INT1引脚请求中断的低电平有效信号,应一直保持到CPU响应中断为止。
6中断请求的撤除
CPU响应中断请求,转向中断服务程序执行,在其执行中断返回指令(RETI)之前,中断请求信号必须撤除,否则将会再一次引起中断而出错。
中断请求撤除的方式有三种。
①由单片机内部硬件自动复位的:
对于定时器/计数器T0、T1的溢出中断和采用跳变触发方式的外部中断请求,在CPU响应中断后,由内部硬件自动复位中断标志TF0和TF1、IE0和IE1,而自动撤除中断请求。
②需用软件清除相应标志的:
对于串行接收/发送中断请求和80C52中的定时器/计数器T2的溢出和捕获中断请求,在CPU响应中断后,内部无硬件自动复位中断标志RI、TI、TF2和EXF2,必须在中断服务程序中清除这些中断标志,才能撤除中断。
③既无硬件也无软件措施的:
对于采用电平触发方式的外部中断请求,CPU对INT0、INT1引脚上的中断请求信号既无控制能力,也无应答信号。
为保证在CPU响应中断后、执行返回指令前,撤除中断请求,必须考虑另外的措施。
4.4.3中断的响应过程和中断矢量地址
(1)
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 考试 知识