1、第第2次单片机原理与次单片机原理与应用应用2 MCS51共有四个共有四个8位的双向并行位的双向并行I/O口,分别记作口,分别记作P0、P1、P2和和P3。实际上它们已。实际上它们已被归入专用寄存器之列。被归入专用寄存器之列。口是一个综合概念,是一个集数据输入缓冲、数据输出驱动及锁存等多项功能为一体的口是一个综合概念,是一个集数据输入缓冲、数据输出驱动及锁存等多项功能为一体的I/O电路。对于口有时也称为端口。电路。对于口有时也称为端口。3 一个数据输出锁存器和两个三态数据输入缓冲器。一个数据输出锁存器和两个三态数据输入缓冲器。一个多路转接电路一个多路转接电路MUX在控制信号的作用下,在控制信号的
2、作用下,MUX可以分别接通锁存器输出或地址可以分别接通锁存器输出或地址/数据线。当作为通数据线。当作为通用的用的I/O口使用时,内部的控制信号为低电平,封锁与门将输出驱动电路的上拉场效应管(口使用时,内部的控制信号为低电平,封锁与门将输出驱动电路的上拉场效应管(FET)截止,)截止,同时使同时使MUX接通锁存器接通锁存器Q端的输出通路。端的输出通路。4 作通用作通用I/O口使用,所以在电路结构上与口使用,所以在电路结构上与P0口有一些不同之处。首先它不再需要多路转接电路口有一些不同之处。首先它不再需要多路转接电路MUX,其次是电路的内部有上拉电阻。与场效应管共同组成输出驱动电路。作为输出口使用
3、时,其次是电路的内部有上拉电阻。与场效应管共同组成输出驱动电路。作为输出口使用时,已能向外提供推拉电流负载,无需再外接上拉电阻。已能向外提供推拉电流负载,无需再外接上拉电阻。5 P2口电路中比口电路中比P1口多了一个多路转换电路口多了一个多路转换电路MUX,这又正好与,这又正好与P0口一样。口一样。P2口也可以作为通用口也可以作为通用I/O口使用。这时多路转接开关倒向锁存器的口使用。这时多路转接开关倒向锁存器的Q端。但通常应用情况下,端。但通常应用情况下,P2口是作为高位地址口是作为高位地址线使用,此时多路转接开关应倒向相反方向。线使用,此时多路转接开关应倒向相反方向。6 P3口的特点在于为适
4、应引脚信号第二功能的需要。口的特点在于为适应引脚信号第二功能的需要。对于第二功能为输出的信号引脚,当作为对于第二功能为输出的信号引脚,当作为I/O使用时,第二功能信号引线应保持高电平,与非门使用时,第二功能信号引线应保持高电平,与非门开通,以维持从锁存器到输出端数据输出通路的畅通。开通,以维持从锁存器到输出端数据输出通路的畅通。当输出第二功能信号时,该位的锁存器应置当输出第二功能信号时,该位的锁存器应置“1”,使与非门对第二功能信号的输出是畅通的,从,使与非门对第二功能信号的输出是畅通的,从而实现第二功能信号的输出。而实现第二功能信号的输出。789 (1)系统总线:)系统总线:地址总线(地址总
5、线(16位):位):P0(地址低(地址低8位)、位)、P2口(地址高口(地址高8位)位)数据总线(数据总线(8位):位):P0口(地址口(地址/数据分数据分时复用,借助时复用,借助ALE););控制总线(控制总线(6根):根):P3口的第二功能和口的第二功能和9、29、30、31脚;脚;(2)供用户使用的端口:)供用户使用的端口:P1口、部分未作第二功能的口、部分未作第二功能的P3口;口;(3)P0口作地址口作地址/数据时,是真正的双向口,三态,负载能力数据时,是真正的双向口,三态,负载能力 为为8个个LSTTL电路;电路;P1P3是准双向口,负载能力为是准双向口,负载能力为4个个LSTTL电
6、路。电路。(4)P0P3在用作输入之前必须先写在用作输入之前必须先写“1”,即:,即:(P0)=FFH(P3)=FFH。10MCS51系列单片机引脚及总线结构 (a)管脚图;(b)引脚功能分类 11 P0为三态双向口,它可作为输入输出端口使用,也可作为系统扩展时的低8位地址/8位数据总线使用。P1口为准双向口,每一位都可以分别定义为输入或输出使用。P2口也是一个准双向口,它有两种使用功能:作为普通I/O端口或作为系统扩展时的高8位地址总线。P3口为多功能口,除了用作通用I/O口之外,它的每一位都有各自的第二功能。12一、实验目的二、实验说明三、实验仪器四、实验内容六、实验报告要求五、思考题13
7、1、学习、学习P1口的使用方法。口的使用方法。2、学习延时子程序的编写和使用。、学习延时子程序的编写和使用。3、熟练在汇编软件环境下编写、修改、调、熟练在汇编软件环境下编写、修改、调 试、和运行硬件程序试、和运行硬件程序4、熟悉汇编语言、熟悉汇编语言14 1、P1口做输出口,接八只发光二极管,编写程序,使发光二极管循环点亮。口做输出口,接八只发光二极管,编写程序,使发光二极管循环点亮。2、P1.0,P1.1作输入口接两个拨动开关,作输入口接两个拨动开关,P1.2,P1.3作输出口,接两个发光二极管,编写程序读取作输出口,接两个发光二极管,编写程序读取开关状态,将此状态,在发光二极管上显示出来。
8、编程时应注意开关状态,将此状态,在发光二极管上显示出来。编程时应注意P1.0,P1.1作为输入口时应先置作为输入口时应先置1,才能正确读入值。才能正确读入值。15计算机计算机伟福软件(伟福软件(lab2000P)16 1、P1口是准双向口。它作为输出口时与一般的双向口使用方法相同。由准双向口结构可知当口是准双向口。它作为输出口时与一般的双向口使用方法相同。由准双向口结构可知当P1口口用为输入口时,必须先对它置用为输入口时,必须先对它置“1”。若不先对它置。若不先对它置“1”,读入的数据是不正确的。,读入的数据是不正确的。2、8051延时子程序的延时计算问题,计算和估算延时子程序的时间。延时子程
9、序的延时计算问题,计算和估算延时子程序的时间。17 关于延时子程序的时间计算,查指令表可知MOV和DJNZ指令均需用两个机器周期,在6MHz晶振时,一个机器周期时间长度为12/6MHZ,所以上面延时子程序该的执行时间为:(256255+2)2126 261ms18 P1口是准双向口,它作为输出口使用时具有锁存功能。实验所需要LED电平显示电路如图所示。19 由P1口的准双向口结构可知,当作为输入口时,必须先对它置“1”。若不先对它置“1”,读入的数据是不正确的。实验所需要LED电平显示电路和逻辑电平开关电路如图所示。20 21 2223KeyLeft equ P1.0 KeyRight equ
10、 P1.1 LedLeft equ P1.2 LedRight equ P1.3 SETB KeyLeft SETB KeyRightLoop:MOV C,KeyLeft MOV LedLeft,C MOV C,KeyRight MOV Ledright,C LJMP Loop END Loop:mov a,#01h mov r2,#8Output:mov P1,a rl a call Delay djnz r2,Output ljmp LoopDelay:mov r6,#0 mov r7,#0DelayLoop:djnz r6,DelayLoop djnz r7,DelayLoop ret
11、end24 1、改变延时时间,变快或者变慢,观察效果;、改变延时时间,变快或者变慢,观察效果;2、第、第2个实验在每个端口增加软件延时,延时时间变快或者变慢,观察拨动开关响应效果;个实验在每个端口增加软件延时,延时时间变快或者变慢,观察拨动开关响应效果;3、改变流水灯的运行方向;、改变流水灯的运行方向;4、改变流水灯的运行模式,双灯对跑,双灯一起跑。、改变流水灯的运行模式,双灯对跑,双灯一起跑。5、如果、如果LED灯为低电平点亮,如何改动。灯为低电平点亮,如何改动。251、实验目的和内容、实验目的和内容 2、记录下对原程序修改的地方,分析原理、记录下对原程序修改的地方,分析原理3、写清相关程序
12、运行结果,并详细说明结果、写清相关程序运行结果,并详细说明结果 的正确性的正确性26 8051单片机有5个中断源,有两个中断优先级,高优先级的中断源可以中断低优先级的服务程序,反之不行。当两个同样级别的中断申请同时到来时,则按一个固定的查寻次序来处理中断响应。27中断源入口地址优先级顺序说 明外部中断00003H最高来自P3.2引脚(INT0)的外部中断请求定时/计数器0000BH定时/计数器T0溢出中断请求外部中断10013H来自P3.3引脚(INT1)的外部中断请求定时/计数器T1001BH定时/计数器T1溢出中断请求串行口0023H最低串行口完成一帧数据的发送或接收中断28一、一、MCS
13、-51MCS-51中断系统内部结构中断系统内部结构2 2、中断允许控制:、中断允许控制:总允许开关:总允许开关:EAEA;源允许开关:源允许开关:ESES、ET1ET1、EX1EX1、ET0ET0、EX0EX0。3 3、2 2级中断优先级控制:级中断优先级控制:优先级选择开关:优先级选择开关:PSPS、PT1PT1、PX1PX1、PT0PT0、PX0PX0。1 1、中断源信号:、中断源信号:2 2个外部中断源信号:个外部中断源信号:INT0INT0、INT1INT1;2 2个定时器个定时器T0T0、T1T1溢出中断请求:溢出中断请求:TF0TF0、TF1TF1;1 1个串行口数据发送、接收结束
14、中断请求:个串行口数据发送、接收结束中断请求:TITI、RIRI。高高低低29 8051单片机中断的开放和关闭是由特殊功能寄存器IE来实现两级控制的。在寄存器IE中有一个总允许位EA,当EA=0时,就关闭了所有的中断申请,CPU不响应任何中断申请。而当EA=1时,对各中断源的申请是否开放,还要看各中断源的中断允许位的状态。EAESET1EX1ET0EX0D7 D6 D5 D4 D3 D2 D1 D030EA:中断总允许位。EA=0,CPU关闭所有的中断申请;EA=1,允许各个中断源的中断申请,但 还要取决于各中断源中断允许控 制位的状态。ES:串行口中断允许位。ES=1,串行口开中断;ES=0
15、,串行口关中断。ET1:定时/计数器T1的溢出中断允许位。ET1=1允许T1溢出中断;ET1=0则不允许T1溢出中断。31EX1:外部中断1(INT1)的中断允许位。ET1=1允许外部中断1申请中断,EX1=0则不允许中断。ET0:定时/计数器T0的溢出中断允许位。ET0=1允许中断,ET0=0不允许中断。EX0:外部中断0(INT0)的中断允许位。EX0=1允许中断,EX0=0不允许中断。32 每个中断源的优先级别由特殊功能寄存器IP来管理。PSPT1PX1PT0PX0D7 D6 D5 D4 D3 D2 D1 D0PS:串行口中断优先级控制位。PT1:定时器/计数器T1中断优级控制位。PX1
16、:外部中断INT1中断优先级控制位。PT0:定时器/计数器T0中断优先级控制位。PX0:外部中断INT0中断优先级控制位。33 外部中断触发方式通过特殊功能寄存器TCON(地址为88H)控制,TCON中各控制位分布如下:D7 D6 D5 D4 D3 D2 D1 D0TF1TF0IE1IT1IE0IT0IT0:选择外中断INT0的中断触发方式。IT0=0为电平触发方式,低电平有效。IT0=1为负边沿触发方式,INT0脚上的负跳变有效。IT0的状态可以用指令来置“1”或清“0”。34IE0:外中断INT0的中断申请标志。当检测到INT0上存在有效中断申请时,由硬件使IE0置位。当CPU转向中断服务
17、程序时,由硬件清“0”IE0中断申请标志。IT1:选择外中断INT1的触发方式(功能与TI0类似)。IE1:外部中断INT1的中断申请标志(功能与IE0 类似)。TF0:定时/计数器T0溢出中断申请标志。当T0溢出时,由内部硬件将TF0置“1”,当CPU转向中断服务程序时,由硬件将TF0清“0”,从而清除T0的中断申请标志。TF1:定时器1溢出中断申请标志(功能与TF0相同)。35 例如例如,某软件中对寄存器某软件中对寄存器IE、IP设置如下设置如下:MOV IE,8FH MOV IP,06H 则此时该系统中则此时该系统中:CPU中断允许中断允许;允许外部中断允许外部中断 0、外部中断外部中断
18、 1、定时器定时器 /计数器计数器 0、定时器定时器 /计数器计数器1提出的中断申请提出的中断申请;允许中断源的中断优先次序为允许中断源的中断优先次序为:定时器定时器 /计数器计数器 0外部中断外部中断 1外部中断外部中断 0定时器定时器/计数器计数器 1。36一、中断响应条件:一、中断响应条件:1有中断请求信号;有中断请求信号;2.系统处于开中断状态。系统处于开中断状态。二、中断响应过程:二、中断响应过程:1关中断:屏蔽其它中断请求信号。关中断:屏蔽其它中断请求信号。2保护断点:将断点地址压入堆栈保存,即当前保护断点:将断点地址压入堆栈保存,即当前PCPC值入栈。值入栈。3寻找中断源:中断程
19、序入口地址寻找中断源:中断程序入口地址PCPC,转入中断服务。,转入中断服务。4保护现场:将中断服务程序使用的所有寄存器内容入栈。保护现场:将中断服务程序使用的所有寄存器内容入栈。5中断处理:执行中断源所要求的程序段。中断处理:执行中断源所要求的程序段。链接中断处理链接中断处理6恢复现场:恢复被使用寄存器的原有内容。恢复现场:恢复被使用寄存器的原有内容。7开中断:允许接受其它中断请求信号。开中断:允许接受其它中断请求信号。8中断返回:执行中断返回:执行RETI指令,堆栈断点地址指令,堆栈断点地址PC,程序跳转回断点处执行。程序跳转回断点处执行。RETI=RET指令指令+通知通知CPU中断服务已
20、结束(复位触发器)中断服务已结束(复位触发器)371、中断采样、中断采样仅对外中断(仅对外中断(INT0、INT1)请求信号;)请求信号;2、中断查询:单片机在每一个机器周期的最后一个状态、中断查询:单片机在每一个机器周期的最后一个状态S6,按优先级顺序对中断请求标志位进行查询,即先查询高级中断后再查询低级中断,同级中断按按优先级顺序对中断请求标志位进行查询,即先查询高级中断后再查询低级中断,同级中断按“INTINT0 0T T0 0INTINT1 1T T1 1RI/TIRI/TI”的顺序查询。如果查询到有标志位为的顺序查询。如果查询到有标志位为“1 1”,则表明有中断请求发生,则表明有中断
21、请求发生,接着就从相邻的下一个机器周期的接着就从相邻的下一个机器周期的S1状态开始进行中断响应。状态开始进行中断响应。由于中断请求是随机发生的,由于中断请求是随机发生的,CPUCPU无法预先得知,因此在程序执行过程中,中断查询要在指令执行无法预先得知,因此在程序执行过程中,中断查询要在指令执行的每个机器周期中不停地重复进行。的每个机器周期中不停地重复进行。3、中断响应:当查询到有效的中断请求时,就进行中断响应。其主要内容是由硬件自动生成一条长调用中断响应:当查询到有效的中断请求时,就进行中断响应。其主要内容是由硬件自动生成一条长调用指令指令LCALLLCALL。其格式为:。其格式为:LCALL
22、 addr16LCALL addr16,addr16addr16即是由系统设定的即是由系统设定的5 5个中断程序的入口地址。个中断程序的入口地址。各中断源中断服务各中断源中断服务程序的入口地址。程序的入口地址。如右表:如右表:38(1)各中断源的入口地址之间仅相隔8个单元,如果中断服务程序的长度超过8个地址单元时,应在中断入口地址处安排一条转移指令,转到其他有足够空余存储器单元的地址空间。(2)若执行当前中断服务程序时需要禁止更高级中断源,则要用软件指令关闭中断,在中断返回之前再开放中断。(3)在保护和恢复现场时,为了不使现场信息受到破坏或造成混乱,保护现场之前应关中断,若需要允许高级中断,则
23、应在保护现场之后再开中断。同样在恢复现场之前也应先关中断,恢复现场之后再开中断。(4)及时清除那些不能被硬件自动清“0”的中断请求标志,以免产生错误的中断。39一、实验目的二、实验说明三、实验仪器四、实验内容六、实验报告要求五、思考题401、学习外部中断技术的基本使用方法。、学习外部中断技术的基本使用方法。2、学习中断处理程序的编程方法。、学习中断处理程序的编程方法。3、熟练在汇编软件环境下编写、修改、调、熟练在汇编软件环境下编写、修改、调 试、和运行硬件程序试、和运行硬件程序4、熟悉汇编语言、熟悉汇编语言41 1、用单次脉冲申请中断,在中断处理程序中使P1.0的输出状态发生反转,并通过发光二
24、极管观察P1.0的电平。2、通过本实验加深对8051单片机中断系统的理解,学习外部中断的基本使用方法及相关编程。42计算机计算机伟福软件(伟福软件(lab2000P)43中断服务程序的关键是:中断服务程序的关键是:1、保护进入中断时的状态,并在退出中断之前恢复进入时的状态。、保护进入中断时的状态,并在退出中断之前恢复进入时的状态。2、必须在中断程序中设定是否允许中断重入,即设置、必须在中断程序中设定是否允许中断重入,即设置EXO位。位。3、本例中使用了、本例中使用了INTO中断,一般中断程序进入时应保护中断,一般中断程序进入时应保护PSW,ACC以及中断程序使用但非其专用的以及中断程序使用但非
25、其专用的寄存器。本例的中断程序保护了寄存器。本例的中断程序保护了PSW,ACC等三个寄存器并且在退出前恢复了这三个寄存器。另等三个寄存器并且在退出前恢复了这三个寄存器。另外中断程序中涉及到关键数据的设置时应关中断,即设置时不允许重入。外中断程序中涉及到关键数据的设置时应关中断,即设置时不允许重入。44 在实验系统上如图和表连线。P1.0接LED灯,INTO(P3.2)端接单脉冲发生器。执行如下程序,每按一次单脉冲按钮,注意观察LED的状态。连线连接孔1连接孔21P1.0L02单脉冲输出INT045程序参考流程框图如下图:主程序框图 外部中断子程序框图 46LED equ P1.0LEDBuf
26、equ 0 ljmp Start org 3Interrupt0:push PSW ;保护现场 cpl LEDBuf ;取反LED mov c,LEDBuf mov LED,c pop PSW ;恢复现场 reti org 100HStart:clr LEDBuf clr LED mov TCON,#01h ;外部中断0下降沿触发 mov IE,#81h ;打开外部中断允许位(EX0)及总中断允许位(EA)ljmp$end47 1、把实验改为、把实验改为int1中断,需要改动几处,如何改动;中断,需要改动几处,如何改动;2、把实验改为同时、把实验改为同时int0和和int1中断驱动中断驱动2个灯,需要改动几处,如何改动;个灯,需要改动几处,如何改动;3、把实验改为同时把实验改为同时int0和和int1中断驱动中断驱动2个灯,个灯,int0优先级高,需要改动几处,如何改动。优先级高,需要改动几处,如何改动。481、实验目的和内容、实验目的和内容 2、记录下对原程序修改的地方,分析原理、记录下对原程序修改的地方,分析原理3、写清相关程序运行结果,并详细说明结果、写清相关程序运行结果,并详细说明结果 的正确性的正确性