《微机原理总复习-2011.ppt》由会员分享,可在线阅读,更多相关《微机原理总复习-2011.ppt(77页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第第 1 1 章章 复复 习习1.18051单片机的特点与基本结构单片机的特点与基本结构8051系列系列无片内无片内ROM型型带片内带片内ROM型型片内片内EPROM型型:87C51,4k片内片内EEROM型型:89C51,4k,flash片内掩膜片内掩膜ROM型型:8051,4k一次编程一次编程:80318051单片机的基本组成包括:单片机的基本组成包括:中央处理器中央处理器CPU,它是单片机的核心,用于产生各种控制信号,它是单片机的核心,用于产生各种控制信号,并完成对数据的算术逻辑运算和传送;并完成对数据的算术逻辑运算和传送;内部数据存储器内部数据存储器RAM,用以存放可以读写的数据;,用
2、以存放可以读写的数据;内部程序存储器内部程序存储器ROM,用以存放程序指令或某些常数表格;,用以存放程序指令或某些常数表格;4个个8位的并行位的并行I/O接口接口P0,P1,P2和和P3,每个口都可以用做输入,每个口都可以用做输入或者输出;或者输出;内部时钟,但晶体和微调电容需要外接,振荡频率可以高达内部时钟,但晶体和微调电容需要外接,振荡频率可以高达40MHZ.234中中央处理器中中央处理器CPU包含运算器和控制器两大部分。包含运算器和控制器两大部分。1运算器运算器运算器以算术逻辑单元运算器以算术逻辑单元ALU为核心,加上累加器为核心,加上累加器ACC、寄存器、寄存器B、暂存寄存器、暂存寄存
3、器TMP和程序状态字寄存器和程序状态字寄存器PSW等所组成。等所组成。ALU主要用于完成二进制数据的算术和逻辑运算。主要用于完成二进制数据的算术和逻辑运算。累加器累加器ACC工作最为繁忙工作最为繁忙,因为在进行算术逻辑运算时,因为在进行算术逻辑运算时,ALU的输入多为的输入多为ACC的输出,而大多数运算结果也需要送到的输出,而大多数运算结果也需要送到ACC中。中。B寄存器,在作乘除运算时用来存放一个操作数,它也用来存放寄存器,在作乘除运算时用来存放一个操作数,它也用来存放乘除运算后的一部分结果乘除运算后的一部分结果。程序状态字寄存器程序状态字寄存器PSW,用于存放运算结果的一些特征,用于存放运
4、算结果的一些特征进位标志进位标志辅助进位标志辅助进位标志用户标志用户标志工作寄存器组选择工作寄存器组选择溢出标志溢出标志奇偶校验标志奇偶校验标志52控制器控制器控制器包括定时控制逻辑、指令寄存器、指令译码器、程序计控制器包括定时控制逻辑、指令寄存器、指令译码器、程序计数器数器PC、数据指针、数据指针DPTR、堆栈指针、堆栈指针SP、地址寄存器和地址缓冲、地址寄存器和地址缓冲器等。器等。它的功能是对逐条指令进行译码,并通过定时和控制电路在规定它的功能是对逐条指令进行译码,并通过定时和控制电路在规定的时刻发出各种操作所需的内部和外部控制信号,协调各部分的工的时刻发出各种操作所需的内部和外部控制信号
5、,协调各部分的工作。作。程序计数器程序计数器PC:用于存放下一条将要执行指令的地址。当一条指用于存放下一条将要执行指令的地址。当一条指令按令按PC所指向的地址从程序存储器中取出之后,所指向的地址从程序存储器中取出之后,PC的值会自动增的值会自动增加,即指向下一条指令加,即指向下一条指令。PC不属于特殊功能寄存器,不能被访问。不属于特殊功能寄存器,不能被访问。堆栈指针堆栈指针SP:用来指示堆栈的起始地址。:用来指示堆栈的起始地址。指令译码器:当指令送入指令译码器后,由译码器对该指令进行译指令译码器:当指令送入指令译码器后,由译码器对该指令进行译码,即把指令转变成为所需要的电平信号,码,即把指令转
6、变成为所需要的电平信号,CPU根据译码器输出的根据译码器输出的电平信号使定时控制电路产生执行该指令所需要的各种控制信号。电平信号使定时控制电路产生执行该指令所需要的各种控制信号。61.28051单片机的存储器结构单片机的存储器结构8051单片机在物理上它有单片机在物理上它有4个存储器空间:片内程序存储器(个存储器空间:片内程序存储器(4k)和片外程序存储器;片内数据存储器和片外数据存储器。和片外程序存储器;片内数据存储器和片外数据存储器。图图1.58051单片机存储器结构单片机存储器结构78051单片机通过不同的信号来选通单片机通过不同的信号来选通ROM或或RAM。当从外部。当从外部ROM中取
7、指令时,中取指令时,用选通信号用选通信号PSEN,而从外部,而从外部RAM中读写中读写数据时则采用读写信号数据时则采用读写信号RD或或WR来选通,来选通,因此不会因地址重叠而发生混乱。因此不会因地址重叠而发生混乱。8051系列单片机的系列单片机的片内数据存储器片内数据存储器RAM有有256个字节,其中个字节,其中00H-7FH地址空间是直地址空间是直接寻址区,该区域内接寻址区,该区域内00H-1FH地址为工作寄地址为工作寄存器区,安排了存器区,安排了4组工作寄存器,每组占用组工作寄存器,每组占用8个地址单元,记为个地址单元,记为R0-R7,在某一时刻,在某一时刻,CPU只能使用其中任意一组工作
8、寄存器,究只能使用其中任意一组工作寄存器,究竟选择哪一组工作寄存器由程序状态字寄存竟选择哪一组工作寄存器由程序状态字寄存器器PSW中中RS0和和RS1的状态决定。的状态决定。片内片内RAM的的20H-2FH地址单元为位寻址地址单元为位寻址区区,共,共16个字节,每个字节的每一位都规定个字节,每个字节的每一位都规定了位地址,该区域内每个地址单元除了可以了位地址,该区域内每个地址单元除了可以进行字节操作之外,还可进行位操作,右图进行字节操作之外,还可进行位操作,右图所示为片内所示为片内RAM的位地址分配。的位地址分配。8P0.0-P0.7(39-32):双向双向I/O口口P0。其第二功能是在访问外
9、部存储器。其第二功能是在访问外部存储器时,时,可分时用做低可分时用做低8位地址和位地址和8位数据线位数据线。P0口能以口能以吸收电流吸收电流的方式的方式驱动驱动8个个LS型型TTL负载负载。P1.0-P1.7(1-8):双向双向I/O口口P1。P1口能驱动(吸收或输出电流)口能驱动(吸收或输出电流)4个个LS型型TTL负载负载。P2.0-P2.7(21-28):双向双向I/O口口P2。P2口可以驱动(吸收或输出电流)口可以驱动(吸收或输出电流)4个个LS型型TTL负载负载。其第二功能是在访问外部存储器时,。其第二功能是在访问外部存储器时,输出高输出高8位位地址。地址。P3.0-P3.7(10-
10、17):双向:双向I/O口口P3。P3口能驱动(吸收或输出电流)口能驱动(吸收或输出电流)4个个LS型型TTL负载负载。P3口的每条引脚都有各自的第二功能口的每条引脚都有各自的第二功能。9第第 3 3 章章 指令系统指令系统复习复习2414ADDA,#14H;累加器累加器A中的内容与中的内容与14H相加相加3.1指令助记符和字节数指令助记符和字节数指令本身是一组二进制数代码,助记符一般采用有关英文单词指令本身是一组二进制数代码,助记符一般采用有关英文单词的缩写的缩写。740AMOVA,#0AH;将十六进制数将十六进制数0AH放入累加器放入累加器A中中指令指令助记符助记符一条指令通常由两部分组成
11、:操作码和操作数。一条指令通常由两部分组成:操作码和操作数。操作码用来规定这条指令完成什么操作。操作数则表示这条指操作码用来规定这条指令完成什么操作。操作数则表示这条指令所完成的操作对象,即是对谁进行操作。令所完成的操作对象,即是对谁进行操作。操作码操作码操作数操作数11在在8051单片机中,对于不同的指令,指令的字节数不相同。单片机中,对于不同的指令,指令的字节数不相同。8051单片机有单字节,双字节或三字节指令。单片机有单字节,双字节或三字节指令。1、单字节指令单字节指令:指令只有一个字节,操作码和操作数同在一个:指令只有一个字节,操作码和操作数同在一个字节中。在字节中。在80C51系列的
12、指令系统中,共有系列的指令系统中,共有49条单字节指令。条单字节指令。操作码操作码+地址码地址码如如MOVA,Rn指令机器码为单字节指令机器码为单字节,其中,其中rrr可表可表示为示为000111,分别代表,分别代表R0R7(1)单字节指令中既包含操作码信息,也包含操作数信息。)单字节指令中既包含操作码信息,也包含操作数信息。例如数据指针加例如数据指针加1指令:指令:INCDPTR,由于操作的内容和对象都,由于操作的内容和对象都很明确,故不必再加操作数字节,其指令码为:很明确,故不必再加操作数字节,其指令码为:(2)用一个字节中的几位来表示操作数或操作数所在的位置。)用一个字节中的几位来表示操
13、作数或操作数所在的位置。11101rrr1010001112例如例如把把8位二进制数传送到累加器位二进制数传送到累加器A的指令:的指令:MOVA,#data其中其中#data表示表示8位二进制数,也叫立即数,这就是双节指令,其指位二进制数,也叫立即数,这就是双节指令,其指令码为:令码为:01110100#data2双字节指令双字节指令:其中一个字节为操作码,另一个字节是操作数。:其中一个字节为操作码,另一个字节是操作数。操作码操作码数据或地址码数据或地址码在在80C51系列的指令系统中,共有系列的指令系统中,共有45条双字节指令。条双字节指令。133.三字节指令则是一个字节的操作码,两个字节的
14、操作数。操作数三字节指令则是一个字节的操作码,两个字节的操作数。操作数可以是数据,也可以是地址,因此,可能有四种情况:可以是数据,也可以是地址,因此,可能有四种情况:操作码操作码立即数立即数立即数立即数操作码操作码操作码操作码操作码操作码地地址址立即数立即数立即数立即数地地址址地地址址地地址址8051单片机共有单片机共有17条三字节指令,只占全部指令的条三字节指令,只占全部指令的15%。一般。一般而言,指令的字节数越则其执行速度越快,从这个角度来说,而言,指令的字节数越则其执行速度越快,从这个角度来说,8051单片机的指令系统是比较合理的。单片机的指令系统是比较合理的。ANLdirect,#d
15、ataMOVDPTR,#1234H143.2寻址方式寻址方式所谓寻址,就是所谓寻址,就是寻找操作数据的地址寻找操作数据的地址。例如:例如:MOVA,R0所谓寻址方式就是通过确定操作数据所在的地址把操作数据提所谓寻址方式就是通过确定操作数据所在的地址把操作数据提取出来的方法。取出来的方法。在在8051单片机中,有单片机中,有7种寻址方式:种寻址方式:1寄存器寻址寄存器寻址2直接寻址直接寻址3立即寻址立即寻址4寄存器间接寻址寄存器间接寻址5变址寻址变址寻址6相对寻址相对寻址7位寻址位寻址目的字节源字节153.3指令分类详解指令分类详解算术运算类指令(算术运算类指令(24条);条);逻辑运算类指令(
16、逻辑运算类指令(25条)条);数据传送类指令(数据传送类指令(28条)条);控制转移类指令控制转移类指令(17条条);布尔操作(位)类指令(布尔操作(位)类指令(17条)。条)。8051单片机共有单片机共有111条指令,按指令功能可分为算术运算指令、条指令,按指令功能可分为算术运算指令、逻辑运算指令、数据传送指令、控制转移指令及位操作指令等逻辑运算指令、数据传送指令、控制转移指令及位操作指令等5大大类。类。163.3.1算术运算指令算术运算指令算术运算指令包括加、减、乘、除法指令,加法指令又分为普算术运算指令包括加、减、乘、除法指令,加法指令又分为普通加法指令、带进位加法指令和加通加法指令、带
17、进位加法指令和加1指令。指令。1普通加法指令普通加法指令ADDA,Rn;Rn(n=0-7)为工作寄存器为工作寄存器,指令意义指令意义(A)+(Rn)(A)ADDA,#data;#data为立即数为立即数,指令意义指令意义(A)+data(A)这组指令的功能是将累加器这组指令的功能是将累加器A的内容与第二操作数的内容相加,的内容与第二操作数的内容相加,结果送回到累加器结果送回到累加器A中。中。在执行加法的过程中,如果位在执行加法的过程中,如果位7有进位,则置有进位,则置“1”进位标志进位标志CY,否则清,否则清“0”CY。如果位。如果位3有进位,则置有进位,则置“1”辅助进位标志辅助进位标志AC
18、。如果位如果位6有进位而位有进位而位7没有进位,或者位没有进位,或者位7有进位而位有进位而位6没有进位,则没有进位,则置置“1”溢出标志溢出标志OV,否则清,否则清“0”OV。172带进位加法指令带进位加法指令ADDCA,Rn;指令意义指令意义(A)+(Rn)+(CY)(A)ADDCA,direct;direct为直接地址单元为直接地址单元ADDCA,#data;#data为立即数为立即数这组指令的功能与普通加法指令类似,唯一的这组指令的功能与普通加法指令类似,唯一的不同之处是在执不同之处是在执行加法时,还要将上一次进位标志行加法时,还要将上一次进位标志CY的内容也一起加进去的内容也一起加进去
19、。对于。对于标志位的影响与普通加法指令相同。标志位的影响与普通加法指令相同。例:设(例:设(A)C3H,(,(R0)AAH,(,(CY)1。执行指令:执行指令:ADDCA,R011000011+10101010+1(CY)01101110执行结果:(执行结果:(A)6EH,(CY)1,(,(OV)l,(AC)0。183加加1指令指令INCA不影响任何标志。不影响任何标志。5带进位减法指令带进位减法指令SUBBA,Rn;Rn(n=0-7)。指令意义。指令意义(A)(Rn)(CY)(A)6减减1指令指令DECA7单字节乘法指令单字节乘法指令MULAB8单字节除法指令单字节除法指令DIVAB乘积的低
20、乘积的低8位存放在累加器位存放在累加器A中,高中,高8位存放在寄存器位存放在寄存器B中。中。商的整数部分存放在累加器商的整数部分存放在累加器A中,余数部分存放在寄存器中,余数部分存放在寄存器B中中193.3.2逻辑运算指令逻辑运算指令逻辑运算指令分为简单逻辑操作指令、逻辑与指令、逻辑或指逻辑运算指令分为简单逻辑操作指令、逻辑与指令、逻辑或指令以及逻辑异或指令。令以及逻辑异或指令。1简单逻辑指令简单逻辑指令CLRA;对累加器;对累加器A清清“0”,不影响标志位。,不影响标志位。SWAPA;将;将A的高半字节(的高半字节(A.7-A.4)与低半字节(与低半字节(A.3-A.0)交换交换CPLA;对
21、进行累加器的内容逐位取反,结果仍存在对进行累加器的内容逐位取反,结果仍存在A中。中。RLA;累加器;累加器A的内容向左环移一位的内容向左环移一位RLCA;累加器;累加器A的内容带进位位的内容带进位位CY向左环移一位向左环移一位RRA;累加器;累加器A的内容向右环移一位的内容向右环移一位RRC;累加器;累加器A的内容带进位位的内容带进位位CY向右环移一位向右环移一位2逻辑与指令逻辑与指令ANLA,Rn3逻辑或指令逻辑或指令ORLA,Rn4逻辑异或指令逻辑异或指令XRLA,Rn202逻辑与指令逻辑与指令ANLA,Rn;(A)(Rn)A,n=0-7ANLA,direct;(A)(direct)AAN
22、LA,Ri;(A)(Ri)A,i=0或或1ANLA,#data;(A)#dataA例:设(例:设(A)A3H(10100011B),(R0)AAH(10101010B)。)。执行指令执行指令:ANLA,Rn执行结果为(执行结果为(A)A2H(10100010B)。ANLdirect,#data;(direct)#datadirect这条指令的功能是将两个操作数的内容按位进行逻辑与运算,这条指令的功能是将两个操作数的内容按位进行逻辑与运算,结果送入由结果送入由direct所指出的内部所指出的内部RAM单元。单元。21ORLA,Rn;(A)V(Rn)A,n=0-7ORLA,direct;(A)V(
23、direct)AORLA,#data;(A)V#dataAORLdirect,A;(direct)V(A)directORLdirect,#data;(direct)V#datadirect3逻辑或指令逻辑或指令这组指令的功能是将两个操作数的内容按位进行逻辑或运算,这组指令的功能是将两个操作数的内容按位进行逻辑或运算,结果送入累加器结果送入累加器A或由或由direct所指出的内部所指出的内部RAM单元单元。4逻辑异或指令逻辑异或指令XRLA,Rn;(A)(Rn)A,n=0-7XRLA,direct;(A)(direct)AXRLA,Ri;(A)(Ri)A,i=0或或1例:设(例:设(A)A3H
24、(10100011B),),(R0)45H(01000101B)。)。执行指令:执行指令:ORLA,R0执行结果:(执行结果:(A)E7H(11100111B)。0 0=0,1 1=00 1=1,1 0=1223.3.3数据传送指令数据传送指令8051单片机的存储器区域可分为如下单片机的存储器区域可分为如下3个部分,即:个部分,即:程序存储器程序存储器0000H-FFFFH内部内部RAM00H-FFH外部外部RAM/IO区区0000H-FFFFH对于程序存储器对于程序存储器ROM,只能通过变址寻址方式采用,只能通过变址寻址方式采用MOVC指令指令访问。访问。外部数据存储器外部数据存储器RAM只
25、能通过间接寻址方式用只能通过间接寻址方式用MOVX指令访问。指令访问。1数据传送到累加器数据传送到累加器A的指令的指令MOVA,Rn;n=0-7MOVA,directMOVA,Ri;i=0或或1MOVA,#data这组指令的功能是把源操作数的内容送入累加器这组指令的功能是把源操作数的内容送入累加器A。234堆栈操作指令堆栈操作指令PUSHdirect;进栈;进栈POPdirect;出栈;出栈在在8051单片机的特殊功能寄存器中有一个堆栈指针寄存器单片机的特殊功能寄存器中有一个堆栈指针寄存器SP,进栈(进栈(PUSH)指令的功能是首先将堆栈指针)指令的功能是首先将堆栈指针SP的内容加的内容加1,
26、然后将,然后将直接地址所指出的内容送入直接地址所指出的内容送入SP指出的内部指出的内部RAM单元。单元。5累加器累加器A与外部数据存储器与外部数据存储器RAM之间的数据传送指令之间的数据传送指令MOVXA,DPTR;(DPTR)A6查表指令查表指令MOVCA,A+PCMOVCA,A+DPTR7字节交换指令字节交换指令XCHA,Rn;n=0-78半字节交换指令半字节交换指令XCHDA,Ri;i=0或或1将累加器将累加器A的低的低4位内容和位内容和R(i)的低的低4位内容相互交换。位内容相互交换。243.3.4控制转移指令控制转移指令1无条件短跳转指令无条件短跳转指令AJMPaddrll这是这是2
27、K字节范围内的无条件跳转指令。字节范围内的无条件跳转指令。2相对转移指令相对转移指令SJMPrel执行时跳转至执行时跳转至(PC)+rel+2。因此转移的目标地址可以在这条指。因此转移的目标地址可以在这条指令前令前128个字节到后个字节到后127个字节之间。个字节之间。3长跳转指令长跳转指令LJMPaddr164散转指令散转指令JMPA+DPTR255条件转移指令条件转移指令JZrel;(A)=0时转移时转移JNZrel;(A)#0时转移时转移JCrel;CY=1时转移时转移JNCrel;CY=0时转移时转移JBbit,rel;(bit)=1时转移时转移JNBbit,rel;(bit)=0时转
28、移时转移JBCbit,rel;(bit)=1时转移,并清时转移,并清“0bit位位6比较不相等转移指令:比较不相等转移指令:CJNEA,direct,rel这组指令的功能是比较前面两个操作数的大小,如果它们的值这组指令的功能是比较前面两个操作数的大小,如果它们的值不相等则转移。不相等则转移。影响进位标志:如果第一操作数(无符号整数)小于第二操作数影响进位标志:如果第一操作数(无符号整数)小于第二操作数(无符号整数),则置(无符号整数),则置“1”进位标志进位标志CY。7减减1不为不为0转移指令转移指令DJNZRn,rel;n=0-7这组指令把源操作数(这组指令把源操作数(Rn,direct)的
29、内容减)的内容减1,并将结果回送到源,并将结果回送到源操作数中去。如果相减的结果不为操作数中去。如果相减的结果不为0则转移。则转移。268短调用指令短调用指令ACALLaddrll这是一条这是一条2K字节范围内的子程序调用指令。字节范围内的子程序调用指令。9长调用指令长调用指令LCALLaddr16这条指令无条件地调用位于这条指令无条件地调用位于16位地址位地址addr16处的子程序。处的子程序。10子程序返回指令子程序返回指令RET这条指令的功能是从堆栈中弹出这条指令的功能是从堆栈中弹出PC的高的高8位和低位和低8位字节,同时位字节,同时把把SP的值减的值减2,并从,并从PC指向的地址开始继
30、续执行程序。指向的地址开始继续执行程序。11中断返回指令中断返回指令RETI这条指令的功能与这条指令的功能与RET指令相似,不同的是它还清指令相似,不同的是它还清“0”单片机单片机的内部中断状态标志。的内部中断状态标志。12空操作指令空操作指令NOP;这条指令只完成这条指令只完成(PC)+1,而不执行任何其他操作。,而不执行任何其他操作。273.3.5位操作指令位操作指令程序状态字寄存器程序状态字寄存器PSW,用于存放运算结果的一些特征,用于存放运算结果的一些特征进位标志进位标志辅助进位标志辅助进位标志用户标志用户标志工作寄存器组选择工作寄存器组选择溢出标志溢出标志奇偶校验标志奇偶校验标志80
31、51单片机内部单片机内部RAM中有一个位寻址区,还有一些特殊功能寄中有一个位寻址区,还有一些特殊功能寄存器也可以位寻址。存器也可以位寻址。简化:简化:CY=C1位数据传送指令位数据传送指令MOVC,bitMOVbit,C这组指令的功能是把由源操作数指出的位变量送到目的操作数这组指令的功能是把由源操作数指出的位变量送到目的操作数指定的位单元去指定的位单元去282位变量修改指令位变量修改指令CLRC;0CYCLRbit;0bitCPLC;对对CY的内容取反的内容取反CPLbit;对对bit位取反位取反SETBC;“1”CYSETBbit;“1”bit3位变量逻辑与指令位变量逻辑与指令ANLC,bi
32、tANLC,/bit这组指令的功能是将进位标志与指定的位变量(或位变量的取这组指令的功能是将进位标志与指定的位变量(或位变量的取反值)相反值)相“与与”,结果送到进位标志,不影响别的标志。,结果送到进位标志,不影响别的标志。4位变量逻辑或指令位变量逻辑或指令ORLC,bitORLC,/bit这组指令的功能是将进位标志与指定的位变量(或位变量的取这组指令的功能是将进位标志与指定的位变量(或位变量的取反值)相反值)相“或或”,结果送到进位标志,不影响别的标志。,结果送到进位标志,不影响别的标志。293.4汇编语言程序格式与伪指令汇编语言程序格式与伪指令1设置起始地址设置起始地址ORG一般格式:一般
33、格式:ORGnnnn其中,其中,nnnn为为4位十六进制数,表示程序的起始地址。位十六进制数,表示程序的起始地址。2定义字节定义字节DB3定义字定义字DW4保留程序存储器空间保留程序存储器空间DS5为标号赋值为标号赋值EQU6源程序结束源程序结束END7.BIT位定义伪指令位定义伪指令用于给字符名称赋予位地址。用于给字符名称赋予位地址。例:例:ABCBITP3.130例例3-2若单片机的晶振为若单片机的晶振为6MHz,则一个机器周期为,则一个机器周期为2us。子程序的。子程序的入口条件为:入口条件为:(R0)=延时毫秒数,延时毫秒数,(R1)=10ms(预定值)。出口条(预定值)。出口条件为:
34、定时时间到,返回。件为:定时时间到,返回。ORG1000H机器周期数机器周期数DELAY:MOVR0,#10;延时;延时10ms值值R01DL2:MOVR1,#MT;10ms预定值预定值R11DL1:NOP;延时;延时1个机器周期个机器周期1NOP;延时;延时1个机器周期个机器周期1DJNZR1,DL1;1ms延时循环延时循环2DJNZR0,DL2;10ms延时循环延时循环2RET;延时结束,返回;延时结束,返回2这是一个双重循环程序,预定值这是一个双重循环程序,预定值MT需要计算。预定延时时间需要计算。预定延时时间也已经给定也已经给定(10ms),故,故MT的值可以这样确定:的值可以这样确定
35、:(1+1+2)2MT10101000(us)所以:所以:MT1257DH31第四章第四章中断系统复习中断系统复习4.1中断的概念中断的概念中断过程:中断过程:程程序序执执行行过过程程中中,允允许许外外部部或或内内部部事事件通过硬件打断程序的执行,件通过硬件打断程序的执行,使其转向中断服务程序中去;完成中断服使其转向中断服务程序中去;完成中断服务程序后,务程序后,CPU继续原来被打断的程序,这样的过程称继续原来被打断的程序,这样的过程称为中断。为中断。33中断响应中断响应:CPU暂停当前的工作转去处理中断源事件。暂停当前的工作转去处理中断源事件。中断系统:单片机中实现中断功能的部件,也是中断管
36、理系统。中断系统:单片机中实现中断功能的部件,也是中断管理系统。中断源:产生中断的请求的外部或内部事件。中断源:产生中断的请求的外部或内部事件。中断申请:中断源向中断申请:中断源向CPU发出的请求。发出的请求。优点:优点:中断方式的一个重要应用领域是实时控制。能将从现场采集到中断方式的一个重要应用领域是实时控制。能将从现场采集到的数据及时传送给的数据及时传送给CPU,经过处理后就可立即作出响应,实现现场,经过处理后就可立即作出响应,实现现场控制。控制。中断方式完全消除了中断方式完全消除了CPU在查询方式中的等待现象,大大提高在查询方式中的等待现象,大大提高了了CPU的工作效率。的工作效率。34
37、2中断的排队中断的排队如果有若干个中断申请同时发生,就需要决定先对哪一个中断如果有若干个中断申请同时发生,就需要决定先对哪一个中断申请进行响应。申请进行响应。3中断的响应中断的响应单片机在响应了中断源的申请时,应使单片机在响应了中断源的申请时,应使CPU从主程序转去执行从主程序转去执行中断服务子程序,同时要把断点地址送入堆栈进行保护,中断系统中断服务子程序,同时要把断点地址送入堆栈进行保护,中断系统还要能确定各个被响应中断源的中断服务子程序的入口。还要能确定各个被响应中断源的中断服务子程序的入口。4中断的撤除中断的撤除8051单片机中断系统的任务:单片机中断系统的任务:1开中断或关中断开中断或
38、关中断中断的开放或关闭可以通过指令对相关特殊功能寄存器的操作中断的开放或关闭可以通过指令对相关特殊功能寄存器的操作来实现,只有在开中断的情况下,才有可能接受中断源的申请。来实现,只有在开中断的情况下,才有可能接受中断源的申请。358051 1中有中有5 5个中断源个中断源:两个外部中断源两个外部中断源/INT0/INT0和和/INT1/INT1;4.2中断系统结构与中断控制中断系统结构与中断控制三个内部中断源为:三个内部中断源为:T0和和T1的定时的定时/计数溢出中断源(计数溢出中断源(2个);和串行口发送或接收个);和串行口发送或接收中断源(中断源(1个)。个)。外部中断请求信号可以外部中断
39、请求信号可以是电平触发方式和负边沿触是电平触发方式和负边沿触发方式。若是电平触发方式,发方式。若是电平触发方式,只要在只要在INT0或或INT1引脚有引脚有低电平信号即为有效的中断低电平信号即为有效的中断申请。申请。36图4.2中断系统结构定时器控制寄存器中断允许寄存器中断优先级寄存器串行口控制寄存器37 INT0,INT1,T0 INT0,INT1,T0 及及 T1T1的中断标志存放在的中断标志存放在 TCONTCON(定时器定时器计数器控制寄存器计数器控制寄存器)中;)中;TCONTCON字节地址为字节地址为88H88H,其格式如下其格式如下:中断控制系统中断控制系统INT0 INT0、I
40、NT1INT1的中断的中断触发方式控制位。触发方式控制位。为为0 0选择电位触发,选择电位触发,为为1 1选择跳变触发。选择跳变触发。由软件设置。由软件设置。外部中断外部中断0 0、1 1申请中断标志申请中断标志。为为1 1表示有外表示有外部中断申请。部中断申请。T0T0、T1T1计数溢出标志计数溢出标志;为为1 1表示溢出,由硬表示溢出,由硬件置位、响应中断硬件置位、响应中断硬件复位。不用中断用件复位。不用中断用软件清软件清0 0。1.中断标志中断标志38串行口的中断标志存放在串行口的中断标志存放在 SCONSCON(串行口控制寄存器)中。串行口控制寄存器)中。SCONSCON字节地址为字节
41、地址为98H98H,其格式如下:其格式如下:串串行行口口发发送送中中断断标标志志。发发送送完完一一帧帧,由由硬硬件置位。响应中断后,必须用软件清件置位。响应中断后,必须用软件清 0 0。串串行行口口接接收收中中断断标标志志。接接收收完完一一帧帧,由由硬硬件件置置位位。响应中断后,必须用软件清响应中断后,必须用软件清0 0。39 中中断断允允许许和和禁禁止止由由中中断断允允许许寄寄存存器器IEIE(A8HA8H)控控制制。IEIE中中各位设置:为各位设置:为0 0时,禁止中断;为时,禁止中断;为 1 1时,允许中断。时,允许中断。中断允许位。当中断允许位。当EA1 1,允许所有允许所有中断开放;
42、当中断开放;当EA0 0时,屏蔽所有时,屏蔽所有中断。中断。串行口中串行口中断允许位。断允许位。T0T0、T1T1中断中断允许位。允许位。外部中断外部中断0 0、外部中断、外部中断1 1中断允中断允许位。许位。2.中断允许控制中断允许控制40 中中断断优优先先级级寄寄存存器器IP(B8H)的的格格式式如如下下,IP,IP中中各各位位设设置置:为为0 0时时,为低优先级;为为低优先级;为1 1时,设为高优先级时,设为高优先级。在中断执行过程中,高中断优先级可以中断低中断优先级的中在中断执行过程中,高中断优先级可以中断低中断优先级的中断过程(即断过程(即中断嵌套中断嵌套)。)。当当CPU同时接收到
43、两个不同优先级的中断请求时,先响应高优同时接收到两个不同优先级的中断请求时,先响应高优先级的中断先级的中断串口串口定时定时器器1外部中断外部中断03.中断优先级中断优先级41 在在同同一一优优先先级级内内有有一一个个由由内内部部查查询询序序列列确确定定的的优优先先级级结结构构。其其排列如下:排列如下:中断源中断源中断优先级中断优先级最高最高外部中断外部中断0定时器定时器T0中断中断外部中断外部中断1定时器定时器T1中断中断串行口中断串行口中断最低最低中断嵌套:中断嵌套:优优先先级级高高的的事事件件可可以以中中断断CPU正正在在处处理理的的低低级级的的中中断断服服务务程程序序,待待完完成成了了高
44、高级级中中断断服服务务程程序序之之后后,再再继继续续被被打打断断的的低低级级中中断断服服务务程程序序。这这是是中中断断嵌嵌套套问问题。题。42表表4.18051单片机的中断源及单片机的中断源及中断矢量中断矢量1.单片机在接收到中断申请以后,先把这些申请锁定在各自的中断单片机在接收到中断申请以后,先把这些申请锁定在各自的中断标志位中,然后在下一个机器周期按优先级分别来查询这些标志。标志位中,然后在下一个机器周期按优先级分别来查询这些标志。2.CPU在下一个机器周期响应中断,完成两件工作:一是把当前程在下一个机器周期响应中断,完成两件工作:一是把当前程序计数器序计数器PC的内容送入堆栈保护,另一个
45、是根据中断的不同来源把的内容送入堆栈保护,另一个是根据中断的不同来源把程序的执行转移到相应的中断服务子程序的入口。程序的执行转移到相应的中断服务子程序的入口。中断响应过程中断响应过程3.当某个中断请求得到响应之后,相应的中断标志位应该予以清除当某个中断请求得到响应之后,相应的中断标志位应该予以清除(即复(即复“0”)。431必须没有同级或更高级别的中断正在得到响应,如果有的话,必须没有同级或更高级别的中断正在得到响应,如果有的话,则必须等则必须等CPU为它们服务完毕,返回主程序并执行一条指令之后才为它们服务完毕,返回主程序并执行一条指令之后才能响应新的中断申请。能响应新的中断申请。2必须要等当
46、前正在执行的指令执行完毕以后,必须要等当前正在执行的指令执行完毕以后,CPU才能响应才能响应新的中断申请。新的中断申请。3若正在执行的指令是若正在执行的指令是RETI(中断返回),则必须要在执行完(中断返回),则必须要在执行完该指令以及紧随其后的另外一条指令之后才可以响应新的中断申请。该指令以及紧随其后的另外一条指令之后才可以响应新的中断申请。中断响应的条件:中断响应的条件:中断标志的清除:中断标志的清除:1.由硬件自动使标志位复由硬件自动使标志位复“0”(即撤除),它们是:(即撤除),它们是:定时器定时器0或或1的中断请求标志的中断请求标志TF0或或TF1;外部中断外部中断0或或1的中断请求
47、标志的中断请求标志IE0或或IE1。2.中断系统不予以自动撤除,它们是:中断系统不予以自动撤除,它们是:串行口的中断请求标志串行口的中断请求标志TI和和RI。44在在8051中,实现中断需要用软件对以下中,实现中断需要用软件对以下5个内容进行初始化设置:个内容进行初始化设置:中断服务程序入口地址的设定。中断服务程序入口地址的设定。CPU开中断与关中断。开中断与关中断。某一中断源中断请求的允许与禁止。某一中断源中断请求的允许与禁止。各中断源优先级别的设定。各中断源优先级别的设定。对于外部中断请求,还需进行触发方式的设定。对于外部中断请求,还需进行触发方式的设定。中断服务程序的设计中断服务程序的设
48、计中断程序一般包含中断控制程序和中断服务程序两部分。中断程序一般包含中断控制程序和中断服务程序两部分。中断控制程序即中断初始化程序,一般不独立编写,而是包含中断控制程序即中断初始化程序,一般不独立编写,而是包含在主程序中,根据上述的在主程序中,根据上述的5点通过编写几条指令来实现。点通过编写几条指令来实现。中断服务程序是一种为中断源的特定事态要求服务的独立程序中断服务程序是一种为中断源的特定事态要求服务的独立程序段,以中断返回指令段,以中断返回指令RETI结束。结束。45第第5章章 定时器定时器/计数器计数器复习复习 定定时时器器/计计数数器器的的作作用用:1)1)产产生生一一个个时时间间很很
49、长长的的定定时时信信号号,可可实现定时控制;实现定时控制;2)可以测量外部脉冲信号的个数及频率。可以测量外部脉冲信号的个数及频率。1软件法软件法常用生产定时信号的方法:常用生产定时信号的方法:假设单片机使用假设单片机使用12MHz晶晶振,一个机器周期是振,一个机器周期是1us。要编一个延要编一个延时时50ms的程序。的程序。DEL:MOVR7,#200DEL1:MOVR6,#125DEL2:DJNZR6,DEL2DJNZR7,DEL1单条指令执行时间单条指令执行时间2us总时间:总时间:212520050000us缺点:缺点:1)占用占用CPU时间;时间;2)定时有时不准。定时有时不准。472
50、.采用定时器计数器采用定时器计数器最大特点是:可以通过软件设置来实现定时长短,通过中断方最大特点是:可以通过软件设置来实现定时长短,通过中断方法来完成定时。法来完成定时。原理:原理:计数器就象一个容器,来计数器就象一个容器,来1个脉冲加个脉冲加1粒颗粒,对进入的脉冲粒颗粒,对进入的脉冲信号进行信号进行“加加1”计数,低位满了向高位进位,当所有的位都满了就计数,低位满了向高位进位,当所有的位都满了就产生溢出,在产生溢出,在TCON中产生计数器溢出标志。中产生计数器溢出标志。定时器计数器还要解决的问题:定时器计数器还要解决的问题:1.实现定时器与计数器功能转换。实现定时器与计数器功能转换。2.在计