《【精品】MCS-51单片机的结构和原理精品ppt课件.ppt》由会员分享,可在线阅读,更多相关《【精品】MCS-51单片机的结构和原理精品ppt课件.ppt(152页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、MCS-51单片机的结构和原理3.1 MCS-51单片机的结构单片机的结构3.1.1 MCS-51单片机的基本组成单片机的基本组成时钟电路时钟电路ROMRAM定时定时/计数器计数器CPU处理器处理器并行接口并行接口串行接口串行接口中断系统中断系统内部数据内部数据总线总线 P0 P1 P2 P3 TxD RxD INT0 INT1 T0 T1外部晶振外部晶振 212MHz3.1.2 MCS-51系列系列表表3.1 MCS-51系列单片机性能表系列单片机性能表ROM形式形式 片内片内ROM(kB)片内片内RAM(B)寻址寻址范围范围(kB)I/O 中中断断源源 片内片内ROM 片内片内EPROM
2、外接外接EPROM计计数数器器 并并行行口口 串串行行口口 80518751 8031412826421648 1580C5187C5180C3141282642164815805287528032825626431648 1680C5287C5280C32825626431648171.不带不带EPROM和和EEPROM(带片内带片内 掩膜掩膜ROM)的的80系列:系列:1 片内片内RAM 128B(字节)(字节)2 片内片内RAM 256B(字节)(字节)1 片内片内RAM 128B,片内,片内(掩膜掩膜)ROM 4kB 2 片内片内RAM 256B,片内,片内(掩膜掩膜)ROM 8kB3
3、5802.带带EPROM和和EEPROM的的87和和89 系列:系列:1 片内片内RAM 128B,片内,片内EPROM 4kB 2 片内片内RAM 256B,片内,片内EPROM 8kB 1 片内片内RAM 128B,片内,片内EEPROM 4kB 2 片内片内RAM 256B,片内,片内EEPROM 8kB 87C589C5位寻址区位寻址区D7D6D5D4D3D2D1D0070605040302010020H0F0E0D0C0B0A090821H22H23H22212024H2EH7F7E7D7C7B7A79782FH(MSB)(LSB)置置“1”2.CPU组成 ALU :运算器 控制器:
4、完成算术、逻辑运算 特殊功能寄存器:ACC、B、PSW、SP、DPTR 通用寄存器:R0R73并行并行I/O口口(1)8031 P1口位结构口位结构 D Q 锁存器锁存器CP QP1.XPIN读锁存器读锁存器(读端口)(读端口)Vcc管脚管脚三态门三态门 1T内部上拉电阻内部上拉电阻三态门三态门 2读引脚读引脚内部总线内部总线写锁存器写锁存器(2)8031 P3口位结构口位结构 D Q 锁存器锁存器CP P3.XPIN读锁存器读锁存器Vcc管脚管脚三态门三态门 1T内部上拉电阻内部上拉电阻三态门三态门 2读引脚读引脚内部总线内部总线写锁存器写锁存器第二输出功能第二输出功能 第二输入功能第二输入
5、功能(3)8031 P2口位结构口位结构 D Q 锁存器锁存器CP P2.XPIN读锁存器读锁存器Vcc管脚管脚三态门三态门 1T内部上拉电阻内部上拉电阻三态门三态门 2读引脚读引脚内部总线内部总线写锁存器写锁存器 MUX地址地址 控制控制(4)8031 P0口位结构口位结构 D Q 锁存器锁存器CP QP0.XPIN读锁存器读锁存器Vcc管脚管脚三态门三态门 1T三态门三态门 2读引脚读引脚内部总线内部总线写锁存器写锁存器 MUX地址地址/数据数据 控制控制 T4 定时器组成:T0 T1特点:作计数器 作定时器 长度:16位 可编程 定时计数到可向CPU发中断5 中断系统中断源:五个 INT
6、0 INT1 T0 T1 串行口特点:中断入口固定 有两级中断 6 串行口特点:可编程 全双工 3.2 8051单片机引脚及功能特点:各型号芯片互相兼容 双列直插式芯片引脚:VSS 地 VCC 电源 并行口:P0P3 有第二功能 ALE/PROG:地址锁存/编程脉冲输入(8751)PSEN:外部程序存储器读选通信号 EA/VPP:外部ROM选择信号/编程电源(8751)RST/VDP:复位/RAM备用电源 XTAL1 XTAL2:晶振输入端3.3 MCS-51单片机工作方式复位方式:CPU复位到初始状态 PC=0000H ACC=00H PSW=00H SP=07H P0P3=0FFH 程序执
7、行方式:从ROM的0000H开始执行单步执行方式:每次执行一条指令掉电和节电方式:用备用电源维持RAM和SFR编程和校验方式:对内部EPROM编程和校验3.4 MCS51的时序的时序 3.4.1 机器周期和指令周期机器周期和指令周期1 机器周期机器周期:包括包括12个振荡周期(时钟周期)个振荡周期(时钟周期)2 一个机器周期分为六个一个机器周期分为六个S状态:从状态:从S1S6。3 每个每个S状态由两拍组成,称为状态由两拍组成,称为P1、P2所以,一个机器周期可以表示为:所以,一个机器周期可以表示为:S1P1、S1P2、S2P1、S6P2 S1 S2 S6P1 P2P1 P2 P1 P2 第一
8、周期(机器周期)第一周期(机器周期)第二周期第二周期时钟时钟 S1P1 P2 ALE S1 P2 S4 P2 S1 P2 S4 P2 S1 P2 1字节字节1周期指令。例:周期指令。例:MOV A,R0;机器码:机器码:E8 读操作码读操作码 读操作码读操作码 (由于(由于PC指针未加指针未加1,为无效读取),为无效读取)读下一指令读下一指令 S6 S1 S2 S3 S4 S5 S6 S1 S6 S1 S2 S3 S4 S5 S6 S1 S6 S1 S2 S3 S4 S5 S6 S1 S2 S3 S4 S5 S6 S1 2字节字节1周期指令。例:周期指令。例:MOV A,30H;机器码:机器码
9、:E530 读操作码读操作码 读第二字节读第二字节 读下一指令读下一指令 1字节字节2周期指令。例:周期指令。例:RET;机器码:机器码:22 读操作码读操作码 读读下一指令下一指令 读操作码(无效)读操作码(无效)第一周期(机器周期)第一周期(机器周期)第二周期第二周期3.4.2 MCS51的取指的取指/执行时序执行时序时钟时钟3.4.3 外部存储器读周期外部存储器读周期(不执行不执行MOVX指令指令)ALE 锁存低锁存低8位地址位地址 锁存低锁存低8位地址位地址 P1 P2 P1 P2 S1 S2 S3 S4 S5 S6 S1选通选通 ROM PSEN 读数读数 (80H)(80H)RD、
10、WRP2 地址地址 A15A8 地址地址 A15A8 (00H)(74H)(01H)(28H)P0A7A0 A7A0 (执行执行MOVX指令指令)P1 P2 P1 P2 P1 P2 P1 P2 P1 P2 P1 P2 P1 P2 P1 P2 P1 P2 P1 P2 P1 P2 P1 P2 P1 P2 P1 P2 第一周期第一周期 第二周期第二周期 S6 S1 S2 S3 S4 S5 S6 S1 S2 S3 S4 S5 S6 ALE 锁存锁存 锁存锁存 PSEN 读数读数RD、WR 读、写读、写(80H)(82H)P2 PCH输出输出 PCH或或P2口输出口输出 (00H)(E0H)(12H)(
11、56H)指令指令 外部外部RAM 外部外部RAM 无效无效 低低8位地址位地址 数据数据P0 PCL 3.5 MCS-51外部扩展外部扩展 PSENRD8031WRP2EAALEP0锁存器锁存器控制总线控制总线高高8位地址线位地址线A15A8地址总线地址总线低低8位地址线位地址线A7A0数据总线数据总线D7D0锁锁 存存 器器CLRCLKDQLXXLHHHHLLHLXQ0输出控输出控制制OC使能使能GD输出输出LHHHLHLLLLXQ0HXXZOESTBDQLHHHLHLLLLXQ0HXXZGCLKDQQHXXQ0Q0LHHLLLLHXLXQ0Q074LS273功能表功能表74LS377功能表
12、功能表74LS373功能表功能表8282功能表功能表CLK273CLRCLK377GG373OCSTB8282OEALEALEALEALE+5V3.5.1 程序存储器扩展程序存储器扩展 P2.7P2.6P2.5P2.4P2.3P2.2 P2.1P2.0ALE 8031P0.7P0.0EA PSENCE2716A10A9A8A7A0O7O0OEG74LS373883.5.2 数据存储器扩展数据存储器扩展 P2.7P2.6 8031P2.5P2.4P2.3P2.2 P2.1P2.0ALE P0.7P0.0EARDWRCS6116A10A9A8A7A0D7D0OEWEG74LS37381110010
13、0译译码码器器8第四章 MCS-51单片机的指令系统内容 指令和指令程序 寻址方式 指令 传送指令 运算指令 控制指令4.1 指令和指令系统4.1.1 指令和助记符 指令:计算机能识别和执行的命令 指令形式:二进制码或机器码 特点:机器真正执行语言、不便记忆 构成:操作码 操作数 由机器码的集合构成机器语言 助记符:由助记符号表示的机器指令 特点:便于记忆、不能直接执行 由助记符构成的语言称汇编语言 4.1.2 指令的字节数:单字节(49条)、双字节(45)、三单字节(17)4.2 寻址方式 1 寄存器寻址:以通用寄存器作为操作数 通用寄存器:R0R7 例:MOV A,R0 2 直接寻址:直接
14、给出操作数地址 例:MOV A,20H 3 立即寻址:操作数为8位或16位二进制数 例:MOV A,#30H 4寄存器间接寻址:以寄存器给出操作数的地址5 例 MOV A,R05变址寻址:以基址寄存器加上一个相对量为操作数地址。6 例 MOVC A,A+PC6相对寻址:相对转移指令中以相对偏移量为操作数7 转移目的地址=源地址+转移指令字节数+rel8 例 2000H SIMP rel(8位有符号数)9 若 rel=40H 目的地址=2000H+2+40H=2042H10 rel=0FEH 目的地址=2000H+2+(-2)=2000H7位寻址 在指令中给出一位二进制数的操作数地 址8 位地址
15、区域:9 内部RAM 20H2FH共128位10 某些特殊功能寄存器(地址能被8整除)11 位地址表示:12 (1)用位地址00HFFH表示13 20H2FH单元中:14 位地址=(单元地址-20H)*8+位数(07)15 特殊功能寄存器:16 位地址=单元地址+位数(07)(2)用“单元地址.位”表示表示 例例 20H.5 2FH.7.(3)用“寄存器名.位数”表示(SFR)例 P0.1 P2.0 P3.7 ACC.7 (4)用伪指令表示MCS-51指令分类:共有111条指令分为五大类(1)数据传送指令:28条 (2)算术运算指令:24条(3)逻辑移位指令:25条 (4)控制转移指令:17条
16、(5)位操作指令:17条 .符号定义:Rn:工作寄存器组 R0R7#data:8位立即数 direct:8位直接地址.用于寻址内部RAM Ri:寄存器间接寻址 Ri=R0 或 R1#data16:16位立即数 DPTR:16位寄存器间接寻址4.3 数据传送指令4.3.1 内部RAM之间数据传送 1 立即寻址 MOV A,#data ;A data MOV Rn,#data ;Rn data MOV Ri,#data ;(Ri)data MOV direct,#data ;(direct)data 2 直接寻址 MOV A,direct ;A (direct)MOV direct,A ;(dir
17、ect)A MOV Rn,direct ;Rn (direct)MOV Ri,direct ;(Ri)(direct)MOV direct2,direct1;(direct2)(direct1)3 间接寻址 MOV A,Ri ;A (Ri)MOV Ri,A ;(Ri)A MOV direct,Ri ;(direct)(Ri)4 寄存器寻址 MOV A,Rn ;A Rn MOV Rn,A ;Rn A MOV direct,Rn ;(direct)Rn 注:传送指令不影响标志位4.3.2 外存的传送指令 1 16位地址传送指令 MOV DPTR,#data16 DPTR可以用于寻找RAM或ROM中
18、数据 2 访问外部ROM指令 MOVC A,A+DPTR MOVC A,A+PC 3 访问外部RAM指令 MOVX A,Ri MOVX Ri,A MOVX A,DPTR MOVX DPTR,A 4.3.3 堆栈操作指令 1 进栈 格式:PUSH direct 操作:SP=SP+1 (direct)(SP)例 PUSH 20H PUSH ACC 2 出栈 格式:POP direct 操作:(direct)(SP)SP=SP-1 注:堆栈操作只能在内部RAM中设置 4.3.4 数据交换指令 XCH A,Rn ;A Rn XCH A,direct ;A (direct)XCH A,Ri ;A (Ri
19、)XCHD A,Ri ;A03 (Ri)03 特点:交换指令是在A及内部RAM之间进行交换 交换后除标志寄存器受A内容变化影响外,其它标志位不变4.4 算术运算指令4.4.1 加法指令 ADD A,Rn ;A A+Rn ADD A,direct ;A A+(direct)ADD A,Ri ;A A+(Ri)ADD A,#data ;A A+data 注:加法运算影响标志位例 MOV A,#0FFH ADD A,#0FH 求PSW中各标志位状态 11111111 +00001111 100001110 Cy=1 P=1 AC=1 OV=0 注意:Cy用于判断无符号数 OV用于判断有符号数 4.4
20、.2 带进位加法指令 ADDC A,Rn ;A A+Rn+Cy ADDC A,direct ;A A+(direct)+Cy ADDC A,Ri ;A A+(Ri)+Cy ADDC A,#data ;A A+data+Cy注:Cy=0时ADDC和ADD结果完全一样 4.4.3 加1指令 INC A ;A A+1 INC Rn ;Rn Rn+1 INC direct ;(direct)(direct)+1 INC Ri ;(Ri)(Ri)+1 注:(1)与ADD指令的区别:ADD指令影响各标志位 INC指令不影响各标志位(除加A时影响P外)(2)INC指令一般用来修改地址4.4.4 带借位减法指
21、令和减1指令 SUBB A,Rn ;A A-Rn-Cy SUBB A,direct ;A A-(direct)-Cy SUBB A,Ri ;A A-Ri-Cy SUBB A,#data ;A A-data-Cy 注:(1)MCS51没有不带借位的减法指令 开始应使Cy=0 :CLR C (2)作为有符号数时溢出判断规则为:正数-负数结果为负则溢出 负数-正数结果为正则溢出减1指令 DEC A ;A A-1 DEC Rn ;Rn Rn-1 DEC direct ;(direct)(direct)-1 DEC Ri ;(Ri)(Ri)-1 注:DEC指令同样不影响标志位(除减A指令 影响标志位P外
22、)4.4.5 乘、除指令和其他运算指令 1 乘、除指令 MUL AB ;A B=BA DIV AB ;A/B=AB 注:(1)乘、除指令均为无符号8位数运算指令 (2)乘、除指令只影响Cy、OV和P标志 乘法:Cy=0,P由A中1的奇偶性决定 B=0 则OV=0 否则OV=1 除法:Cy=0,P由A中1的奇偶性决定 B=0 则OV=1 否则OV=0例:如果A0B4H,B11H,求执行指令 MULAB后的结果。因为A0B4H为无符号数180D B11H为无符号数17D 执行 MULAB 后:BA0BF4H3060D。因为B0,因此Cy0,OV1 2 十进制调整指令 DA A 作用:BCD码加法调
23、整(对累加器A)调整:低4位大于9或AC=1,则A=A+06H 高4位大于9或Cy=1,则A=A+60H 例:ADDA,R0 DA A 指令执行前,A28H,R068H 执行ADD指令后,A90H,Cy0,AC1 因AC1而做加6运算 AA06 得A96H,结果正确 3 数据指针加1指令 INC DPTR 操作:DPTR=DPTR+1 特点:不影响标志位 例 编程对DPTR减1 CLR C ;Cy=0 MOV A,DPL ;A=DPL SUBB A,#1 ;A=A-1 MOV DPL,A ;DPL=A MOV A,DPH ;A=DPH SUBB A,#0 ;A=A-0-Cy MOV DPH,A
24、 ;DPH=A4.5 逻辑运算及移位指令4.5.1 逻辑“与”运算指令 ANL A,Rn(direct,Ri,#data)ANL direct,A ANL direct,#data 特点:按位“与”即:1“与”1=1 1“与”0=0 0“与”0=0 例 A=85H R7=67H ANL A,R7 则 A=05H A=85H R7=00H ANL A,R7 则 A=00H A=85H R7=0FFH ANL A,R7 则 A=85H4.5.2 逻辑“或”运算指令 ORL A,Rn(direct,Ri,#data)ORL direct,A ORL direct,#data 特点:按位“或”即:1“
25、或”1=1 1“或”0=1 0“或”0=0 例 A=85H R7=67H ORL A,R7 则 A=0E7H A=85H R7=00H ORL A,R7 则 A=85H A=85H R7=0FFH ORL A,R7 则 A=0FFH 4.5.3 逻辑“异或”运算指令 XRL A,Rn(direct,Ri,#data)XRL direct,A XRL direct,#data 特点:按位“异或”即:1“异或”1=0 1“异或”0=1 0“异或”0=0 例 A=85H R7=67H ORL A,R7 则 A=0E2H A=85H R7=00H ORL A,R7 则 A=85H A=85H R7=0
26、FFH ORL A,R7 则 A=7AH 4.5.4 累加器清零及取反指令 CLR A ;A=0 CPL A ;A=A 注:所有逻辑指令对标志都不产生影响(除对A操作的指令对P产生影响)另:MCS-51没有求补指令。可用求反加1实现。例 N为绝对值一小于128的负数,求其补码 MOV A,#N CPL A (XRL A,#0FFH)ADD A,#14.5.5 移位指令 RL A RLC A RR A RRC A A7 A0A7 A0CyA7 A0A7 A0Cy SWAP A ;A03 A47 控制转移指令符号定义:addr16:16位地址 addr11:11位地址 rel:8位转移相对偏移量4
27、.6.1 无条件转移指令 1 长转移指令 LJMP addr16 操作:addr16 PC 范围:64K跳转 特点:绝对寻址 2 绝对跳转指令 AJMP addr11 操作:addr11 A 010(PC07,1315)范围:2K跳转 特点:绝对寻址 3 短转移指令 SJMP rel 操作:PC=PC+2+rel 范围:相对现PC地址:-128 +127 特点:相对寻址 4 变址方式转移指令 JMP A+DPTR 操作:A+DPTR PC 范围:64K 特点:间接寄存器寻址(用于分支程序)4.6.2 条件转移指令 1 判零条件转移 JZ rel ;if A=0,PC=PC+2+rel else
28、 PC=PC+2 JNZ rel ;if A 0,PC=PC+2+rel else PC=PC+2 特点:判A中内容是否为零(不需计算)2 比较条件转移指令 CJNE A,#data(direct),rel CJNE Rn,#data,rel CJNE Ri,#data,rel 一般格式:CJNE 数1,数2,rel 操作:当 数1 数2,PC=PC+3+rel 否则 PC=PC+3 数1 数2 :Cy=0 3 减1条件转移指令 DJNZ Rn(direct),rel 操作:Rn(direct)=Rn(direct)1 if result=0 PC=PC+2 else PC=PC+2+rel
29、转移 4.6.3 子程序调用及返回指令 1 调用指令 ACALL addr11 长度:2字节 操作:PC=PC+2 SP=SP+1 ,PC07 (SP)SP=SP+1 ,PC815 (SP)addr11 PC010 调用范围:2K LCALL addr16 长度:3字节 操作:PC=PC+3 SP=SP+1 ,PC07 (SP)SP=SP+1 ,PC815 (SP)addr16 PC015 调用范围:64K 2 返回 子程序返回 RET 操作:(SP)PC815 SP=SP-1 (SP)PC07 SP=SP-1 中断子程序返回 RETI 操作:(SP)PC815 SP=SP-1 (SP)PC0
30、7 SP=SP-1 清除中断优先级状态触发器 4.6.4 空操作指令 NOP 操作:PC=PC+14.7 布尔变量操作指令4.7.1 位传送指令 MOV C,bit ;(bit)Cy MOV bit,C ;Cy (bit)C:Cy bit:位地址 SFR:ACC,B,P0,P1,P2,SBUF等 20H2FH单元 例 MOV C,10H MOV C,22H.04.7.2 位置位指令 CLR C ;0 Cy CLR bit ;0 (bit)SETB C ;1 Cy SETB bit ;1 (bit)4.7.3 位运算指令 ANL C,bit ;Cy (bit)Cy ANL C,/bit ;Cy
31、(bit)Cy ORL C,bit ;Cy (bit)Cy ORL C,/bit ;Cy (bit)Cy CPL C ;Cy Cy CPL bit ;(bit)(bit)注:/bit为bit的内容取反,但不改变bit位的内容 MCS51没有异或命令 4.7.4 位控制转移指令 1 以Cy为条件的转移指令 JC rel 两字节指令 操作:if Cy=1 then PC=PC+2+rel 转移 else PC=PC+2 JNC rel 两字节指令 操作:if Cy=0 then PC=PC+2+rel 转移 else PC=PC+2 2 以位地址为条件的转移指令 JB bit,rel 三字节指令
32、操作:if (bit)=1 then PC=PC+3+rel 转移 else PC=PC+3 JNB bit,rel 三字节指令 操作:if (bit)=0 then PC=PC+3+rel 转移 else PC=PC+3 JBC bit,rel 三字节指令 操作:if (bit)=1 then PC=PC+3+rel (bit)=0 else PC=PC+3第五章 汇编语言程序设计5.1 汇编语言源程序的格式 格式:标号:操作码 操作数 ;注释 1 标号和注释可以省略 2 每部分之间可有一个或多个空格 3 标号后紧跟“;”,注释紧跟“;”4 有些指令无操作数 5.1.1 标号 组成:由8个或
33、8个以下字符组成 1 字符集为 A,BY,Z,09,_ 2 标号必须以英文字母开头 3 标号不能有以上字符集以外字符及保留字 5.1.2 操作数 种类:立即数、直接地址、寄存器和偏移量 1 立即数:为“#”后面跟数字,如#30H等 (1)数据可用各种进制数据表示(后面用B、Q、D、H表示)(2)数据高位为AF时,数据前面加“0”2 直接地址:(1)数据(各种进制)如 MOV A,30H (2)符号地址(已定义)如 MOV R1,BUFFER1 (3)特殊功能寄存器 如 MOV A,P0 (4)表达式 如 MOV A,ADDR1+2 3 寄存器 通用及特殊寄存器 如 A、B、Rn、P1等等 4
34、偏移量rel 除有数据、标号地址外,还有“$”$:表示本条指令地址 5.1.3 注释 作用:为非执行语句,用于解释语句作用 汇编时“;”后面的不进行汇编,均为注释 所以注释可用英语、汉语等各种形式5.2 伪指令 5.2.1 ORG 汇编起始地址 格式:标号:ORG 地址 例 ORG 2000H MAIN:MOV A,20H .注:若无 ORG 则汇编时将程序从0000H开始存放 5.2.2 END 汇编结束 格式:格式:END END必须放在所有程序的后面 5.2.3 EQU 赋值命令 格式:字符名 EQU 数或符号 作用:将数或符号的值赋给字符名,可以作为数据、地址 符号:(1)可以是寄存器
35、名 如R0 R1 等 (2)已定义过的符号 5.2.4 DATA 数据地址赋值命令 格式:字符名 DATA 表达式 DATA与EQU的区别:(1)EQU 先定义后使用,DATA可以先使用后定义 (2)符号名可以赋给EQU,不能赋给DATA (3)表达式可赋给DATA,且字符名可在表达式中 5.2.5 DB 定义字节命令 格式:标号:DB 字节数据列表 功能:在程序ROM区开辟若干字节存放数据 (1)若DB紧跟程序,则紧跟程序顺序存放 (2)可用ORG确定数据列表存放地址 例 ORG 2000H TAB1 DB 12H,10,A,6 TAB2 DB 45H,67H 5.2.6 DW 定义字命令
36、格式:标号:DW 字数据列表 功能:在程序ROM区开辟若干单元存放数据 (1)存放顺序是先高(低地址)后低(高地址)(2)若数据列表中有字节数,则高位补零 例 ORG 1500H TAB1 DW 1234H,56H TAB2 DB 78H5.2.7 DS 定义空间命令 格式:标号:DS 表达式 功能:保留表达式数值的字节空间 例 ORG 2000H A1:DS 10H A2:DB 10H,20H5.2.8 BIT 位地址符号命令 格式:字符名 BIT 位地址 功能:将位地址赋给字符名 例 START BIT P1.0 STOP BIT P1.1第六章 微型计算机的输入/输出6.1 I/O接口电
37、路概述6.1.1 I/O接口电路的作用 1 速度匹配 解决高速计算机与低速外设之间的工作速度的匹配 2 提供输入/输出过程的状态信号 接口根据外设及计算机的状态给出双方的“握手”信号 3 解决计算机与外设之间信号的不一致 电平转换 编码转换 数模转换 串并转换等6.1.2 接口与端口的差别 接口:计算机与外设交换信息的通道 如 串行接口 数模转换接口等 特点:有两个接口面分别与计算机和外设相连 每个接口可以有多个端口 端口:接口中与计算机相连的各个信息口 如数据输入口 数据输出口 控制口等 特点:每个端口对应一个口地址 6.1.3 外设的编址方式 1 外设端口单独编址 优点:(1)不占用存储器
38、地址 (2)I/O指令短,执行速度快 缺点:(1)I/O指令少,功能简单 (2)需要CPU具有专门的I/O控制线 增加了CPU控制逻辑的复杂性 2 外设与存储器统一编址 优点:(1)指令功能齐全 (2)I/O口地址范围广 缺点:(1)I/O口占用了存储器地址空间 (2)操作指令比专用I/O指令执行时间长 6.1.4 将外设当作数据存储器访问 1 MCS51与外设是采用存储器统一编址方式 2 所用信号线与数据存储器相同 3 用访问外部数据存储器的指令访问外设6.2 输入/输出传送方式6.2.1 无条件传送 可用无条件传送的条件 1 外设的工作速度足够快 2 两次传送数据的时间足够长 特点:优点:
39、控制程序简单 缺点:它必须是在确保外设已准备就绪的情况下 使用 6.2.2 查询式传送 计算机与外设间通过状态信息确认数据的传送 可用查询传送的条件 1 外设必须有反映工作状态的信号 2 接口能分别提供数据端口和状态信息端口 读取状态信息传送数据否 准备好?是6.2.3 中断传送方式 由外设事件向CPU提出请求,CPU向外设提供相应的服务 特点:1 在外设允许时进行传送 2 与程序查询方式相比,中断控制方式的数据传送大大提高了CPU的工作效率 3 硬件接口复杂6.2.4 直接存储器存取(DMA)方式 外设与内存之间直接进行交换数据的方式 不需要CPU干预,也不需要软件介入,由硬件完成第七章 M
40、CS-51的中断和中断接口7.1 中断概述 7.1.1 中断源 中断源:引起中断请求的事件或来源 中断源分类:软件中断源和硬件中断源 软件中断:中断指令、指令执行错误中断 硬件中断:由计算机系统故障源、外设引起的 中断。7.1.2 硬件中断分类:屏蔽中断:CPU可以通过设置允许或禁止该类 中断申请 非屏蔽中断:CPU必须处理该类中断 7.1.3 中断的开放与关闭 对可屏蔽中断可用相应的方法设置CPU开放或 止中断源的申请7.1.4 中断源的判别和中断优先级 1 单线中断,软件查询 图7.1软件查询接口电路0#中断请求1#中断请求3#中断请求2#中断请求D3D0D1D2端口地址INT 2 多线中
41、断 由多条中断申请线构成,每条申请线对应一个中断事件 3 矢量中断 中断源的判别是通过中断源提供的中断矢量来实现的 4 中断优先级 中断有下列情况时应利用优先级来管理 (1)多个中断同时申请 (2)多个中断有嵌套7.2 中断处理过程 7.2.1 中断请求 由中断源向CPU发出请求信号 7.2.2 中断响应 1 中断响应条件 (1)该中断未禁止 (2)一条指令执行完毕 (3)当前中断源优先级高于正执行的中断 2 中断响应操作 (1)终止现行程序,保护断点 (2)确定中断程序入口,转入中断服务程序 3 中断入口地址的获得 (1)固定中断入口 (2)从中断地址表获得 7.2.3 中断处理 1 保护现
42、场 保护断点处的有关寄存器的内容 2 处理开关中断 根据要求控制中断的允许与禁止 3 执行中断服务程序 根据不同的中断源编制不同的中断程序 4 恢复现场 恢复断点处保护的有关寄存器内容 5 结束中断服务程序 利用中断返回指令返回断点处继续原程序的执行 7.2.4 中断返回7.3 MCS-51的中断系统极其控制 7.3.1 中断系统的一般功能 中断系统:对各中断源进行管理的系统 其主要任务如下:1 对中断申请的屏蔽或开放 MCS-51没有专门指令禁止或开放中断 可通过设置有关寄存器的相应位实现 2 中断的排队 对多个中断源利用优先级来管理 MCS-51有两级中断优先级 3 中断响应 保护断点 转
43、入中断程序 MCS-51保护PC 转入固定入口 4 中断的撤除 返回主程序前,清掉中断申请标志 MCS-51中有些可自动清除,有些则必须用 指令清除 7.3.2 MCS-51中断源及有关寄存器 1 中断源 外部中断:INT0 INT1 定时器中断:T0 T1 串行口中断:SBUF INT0 INT1中断:输入引脚分别为P3.2和P3.3,有电平触发(低电平)和边沿触发(负边沿)方式 T0 T1中断:内部中断,当计数/定时溢出(从全1变成全0)时产生中断请求 SBUF中断:内部中断,当串行口发送或接收一个字符后产生中断请求 2 中断标志位和有关寄存器 (1)定时器控制寄存器TCON TCON的单
44、元地址为的单元地址为88H,位地址,位地址88H8FH。注意:注意:TCON寄存器中的寄存器中的TR1和和TR0是控制定时器的启、停,与中断是控制定时器的启、停,与中断无关。无关。TCONTF1TR1TF0TR0IE1IT1IE0IT0位地址位地址8F8E8D8C8B8A8988单元地址单元地址88H (2)串行口控制寄存器串行口控制器串行口控制器SCON的控制位的控制位SCON单元地址为单元地址为98H,位地址,位地址98H9FH。注意:这里只给出了与中断有关的位(占有注意:这里只给出了与中断有关的位(占有SCON的的98H、99H两位。)两位。)(3)中断允许寄存器中断允许寄存器中断允许寄
45、存器中断允许寄存器IE的控制位的控制位SCONTIRI位地址位地址9998单元地址单元地址98HIEEAESET1EX1ET0EX0位地址位地址AFACABAAA9A8单元地址单元地址A8HIE实现对中断的开放的两级控制。所谓两级控制(见前中断系统内部结构示意图),即是指在IE寄存器中可以看到有前后两路控制开关来控制通路的开断。(4)中断优先级寄存器中断优先级寄存器中断优先级寄存器IP的控制位的控制位 某位为0则对应中断源为低优先级,反之为高优先级 同级:(高)INT0 T0 INT1 T1 串行口(低)IPPSPT1PX1PT0PX0位地址位地址BCBBBAB9B8单元地址单元地址B8H中断
46、系统内部结构示意图中断系统内部结构示意图 IE0TF0IE1TF1TIRI EA EX0 ET0 EX1 ET1 ES1010 101010高高低低高高低低+IT0=0IT0=1IT1=0IT1=1INT0INT1P3.2P3.3T0 定时器定时器0P3.4T1 定时器定时器1P3.5TxD 串行发送串行发送P3.1RxD 串行接收串行接收P3.0PX0PT0PX1PT1PSTCONIEIP高高优优先先级级中中断断请请求求低低优优先先级级中中断断请请求求向向量量向向量量中断源中断源 中断请求标志位中断请求标志位 中断允许中断允许 中断总允许中断总允许 中断中断 TCON 控制位控制位 控制位控
47、制位 优先级优先级 SCON IE IP 7.3.5 MCS-51的中断响应 1 中断响应过程 (1)中断申请 (2)标志位置1 INT0:IE0 INT1:IE1 T0:TF0 T1:TF1 串行口:RI(接收)TI(发送)(3)CPU响应中断,转入相应中断服务程序 2 中断响应的条件 (1)没有同级或高级的中断正在响应 (2)必须执行完一条指令后才能响应 (3)在访问IE、IP或RETI后再执行一条指令 3 中断入口地址的确定以上五个入口地址之间,各有以上五个入口地址之间,各有8个字节单元的个字节单元的地址空间。地址空间。中断源中断源中断入口地址中断入口地址外部中断外部中断00003H定时
48、定时/计数器计数器T0中断中断000BH外部中断外部中断10013H定时定时/计数器计数器T1中断中断001BH串行口中断串行口中断0023H 7.3.7 中断请求的撤除 中断撤除:取消已响应中断源的申请 1 标志消除 (1)INT0、INT1、T0、T1 响应中断后硬件自动复位TCON中对应的标志 (2)串口中断申请标志RI、TI 硬件自动置位,但必须软件复位RI或TI 清RI:中断返回前用 CLR RI 清TI:中断返回前用 CLR TI 2 中断源消除 (1)边沿触发:不须消除 (2)电平出发:需给S端一个负脉冲 例 ANL P0,#0FEH ORL P0,#01H INT08051P1
49、.0Q DS CP中断请求 7.3.8 中断系统初始化 任务:1 开中断 INT0:SETB EX0 或 MOV IE,#01H T0:SETB ET0 或ORL IE,#02H INT1:SETB EX1 T1:SETB ET1 SBUF:SETB ES 最后 SETB EA 2 确定各中断源的优先级 (1)初始状态 所有中断源处于低优先级 (2)设置优先级 例:设INT0为高优先级 则:MOV IP,#01H 或 SETB PX0 例:设T0为低优先级 则:ANL IP,#0FDH 或 CLR PT0 3 对外中断定触发方式 例 定INT0为边沿出发,INT1为电平出发 SETB IT0
50、CLR IT1 也可用其它指令实现 ORL TCON,#01H ANL TCON,#0FBH 4 定转移地址 例 已知外部中断1的服务程序在1000H开始区域 T0服务程序在2000H ORG 000BH ORG 0013H LJMP 2000H LJMP 1000H7.4 MCS-51外部中断源的扩展 7.4.1 借用计数/定时器溢出中断扩展 可将T0、T1两个中断扩展成外部中断使用 方法:(1)置定时器为计数方式 (2)设定时器初值为全1 (3)引脚T0(P3.4)、T1(P3.5)为中断申请端 (4)在定时器中断入口放外部中断服务程序 地址 例 T0:000BH LJMP INTP1 T