资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,单片机原理与应用,实验,信通学院 李北明,MCS51共有四个8位的双向并行I/O口,分别记作P,0,、P,1,、P,2,和P,3,。实际上它们已被归入专用寄存器之列。,口是一个综合概念,是一个集数据输入缓冲、数据输出驱动及锁存等多项功能为一体的I/O电路。对于口有时也称为端口。,并行输入/输出口电路,P,0,口:,一个数据输出锁存器和两个三态数据输入缓冲器。,一个多路转接电路MUX在控制信号的作用下,MUX可以分别接通锁存器输出或地址/数据线。当作为通用的I/O口使用时,内部的控制信号为低电平,封锁与门将输出驱动电路的上拉场效应管(FET)截止,同时使MUX接通锁存器Q端的输出通路。,P,1,口:,作通用I/O口使用,所以在电路结构上与P,0,口有一些不同之处。首先它不再需要多路转接电路MUX,其次是电路的内部有上拉电阻。与场效应管共同组成输出驱动电路。作为输出口使用时,已能向外提供推拉电流负载,无需再外接上拉电阻。,P,2,口:,P,2,口电路中比P,1,口多了一个多路转换电路MUX,这又正好与P,0,口一样。P,2,口也可以作为通用I/O口使用。这时多路转接开关倒向锁存器的Q端。但通常应用情况下,P,2,口是作为,高位地址线,使用,此时多路转接开关应倒向相反方向。,P,3,口:,P,3,口的特点在于为适应引脚信号第二功能的需要。,对于第二功能为输出的信号引脚,当作为I/O使用时,第二功能信号引线应保持高电平,与非门开通,以维持从锁存器到输出端数据输出通路的畅通。,当输出第二功能信号时,该位的锁存器应置“1”,使与非门对第二功能信号的输出是畅通的,从而实现第二功能信号的输出。,端口小结:,(1)系统总线:,地址总线(,16位,),:P0(地址低8位)、P2口(地址高8位),数据总线(,8位,),:P0口(地址,/,数据分时复用,借助ALE);,控制总线(,6根,),:P3口的第二功能和9、29、30、31脚;,(2)供用户使用的端口:P1口、部分未作第二功能的P3口;,(3)P0口作地址,/,数据时,是真正的双向口,三态,负载能力 为8个LSTTL电路;,P1P3是准双向口,负载能力为4个LSTTL电路。,(4),P0P3在用作输入之前必须先写“1”,,即:,(P0)=FFH,(P3)=FFH。,MCS51系列单片机引脚及总线结构,(a)管脚图;(b)引脚功能分类,P0为三态双向口,它可作为输入输出端口使用,也可作为系统扩展时的低8位地址/8位数据总线使用。,P1口为准双向口,每一位都可以分别定义为输入或输出使用。,P2口也是一个准双向口,它有两种使用功能:作为普通I/O端口或作为系统扩展时的高8位地址总线。,P3口为多功能口,除了用作通用I/O口之外,它的每一位都有各自的第二功能,。,一、实验目的,二、实验说明,三、实验仪器,四、实验内容,六、实验报告要求,第二次实验 单片机P1口输入输出实验,五、思考题,一、实验目的,1、学习P1口的使用方法。,2、学习延时子程序的编写和使用。,3、熟练在汇编软件环境下编写、修改、调 试、和运行硬件程序,4、熟悉汇编语言,二、实验说明,1、P1口做输出口,接八只发光二极管,编写程序,使发光二极管循环点亮。,2、P1.0,P1.1作输入口接两个拨动开关,P1.2,P1.3作输出口,接两个发光二极管,编写程序读取开关状态,将此状态,在发光二极管上显示出来。编程时应注意P1.0,P1.1作为输入口时应先置1,才能正确读入值。,三、实验仪器和条件,计算机,伟福软件(lab2000P),四、实验内容,1、P1口是准双向口。它作为输出口时与一般的双向口使用方法相同。由准双向口结构可知当P1口用为输入口时,必须先对它置“1”。若不先对它置“1”,读入的数据是不正确的。,2、8051延时子程序的延时计算问题,计算和估算延时子程序的时间。,关于延时子程序的时间计算,查指令表可知MOV和DJNZ指令均需用两个机器周期,在6MHz晶振时,一个机器周期时间长度为12/6MHZ,所以上面延时子程序该的执行时间为:,(256255+2)2126,261ms,采用P1口作输出,P1口是准双向口,它作为输出口使用时具有锁存功能。实验所需要LED电平显示电路如图所示。,采用P1口作输入和输出,由P1口的准双向口结构可知,当作为输入口时,必须先对它置“1”。若不先对它置“1”,读入的数据是不正确的。实验所需要LED电平显示电路和逻辑电平开关电路如图所示。,程序参考流程框图,实验电路及连线,实验电路,参考源程序,KeyLeft equ P1.0,KeyRight equ P1.1,LedLeft equ P1.2,LedRight equ P1.3,SETB KeyLeft,SETB KeyRight,Loop:,MOV C,KeyLeft,MOV LedLeft,C,MOV C,KeyRight,MOV Ledright,C,LJMP Loop,END,Loop:mov a,#01h,mov r2,#8,Output:,mov P1,a,rl a,call Delay,djnz r2,Output,ljmp Loop,Delay:,mov r6,#0,mov r7,#0,DelayLoop:,djnz r6,DelayLoop,djnz r7,DelayLoop,ret,end,五、思考题,1、改变延时时间,变快或者变慢,观察效果;,2、第2个实验在每个端口增加软件延时,延时时间变快或者变慢,观察拨动开关响应效果;,3、改变流水灯的运行方向;,4、改变流水灯的运行模式,双灯对跑,双灯一起跑。,5、如果LED灯为低电平点亮,如何改动。,六、实验报告要求,1、实验目的和内容,2、记录下对原程序修改的地方,分析原理,3、写清相关程序运行结果,并详细说明结果 的正确性,8051单片机中断系统,8051单片机有5个中断源,有两个中断优先级,高优先级的中断源可以中断低优先级的服务程序,反之不行。当两个同样级别的中断申请同时到来时,则按一个固定的查寻次序来处理中断响应。,中断源,入口地址,优先级,顺序,说 明,外部中断0,0003H,最高,来自P3.2引脚(INT0)的外部中断请求,定时/计数器0,000BH,定时/计数器T0溢出中断请求,外部中断1,0013H,来自P3.3引脚(INT1)的外部中断请求,定时/计数器T1,001BH,定时/计数器T1溢出中断请求,串行口,0023H,最低,串行口完成一帧数据的发送或接收中断,一、MCS-51中断系统内部结构,2、中断允许控制:,总允许开关:EA;,源允许开关:ES、ET1、EX1、ET0、EX0。,3、2级中断优先级控制:,优先级选择开关:PS、PT1、PX1、PT0、PX0。,1、中断源信号:,2个外部中断源信号:INT0、INT1;,2个定时器T0、T1溢出中断请求:TF0、TF1;,1个串行口数据发送、接收结束中断请求:TI、RI。,高,低,8051单片机中断的开放和关闭是由特殊功能寄存器IE来实现两级控制的。在寄存器IE中有一个总允许位EA,当EA=0时,就关闭了所有的中断申请,CPU不响应任何中断申请。而当EA=1时,对各中断源的申请是否开放,还要看各中断源的中断允许位的状态。,EA,ES,ET1,EX1,ET0,EX0,D7 D6 D5 D4 D3 D2 D1 D0,EA:中断总允许位。,EA=0,CPU关闭所有的中断申请;,EA=1,允许各个中断源的中断申请,但,还要取决于各中断源中断允许控,制位的状态。,ES:串行口中断允许位。,ES=1,串行口开中断;,ES=0,串行口关中断。,ET1:定时/计数器T1的溢出中断允许位。,ET1=1允许T1溢出中断;,ET1=0则不允许T1溢出中断。,EX1:外部中断1(INT1)的中断允许位。,ET1=1允许外部中断1申请中断,,EX1=0则不允许中断。,ET0:定时/计数器T0的溢出中断允许位。,ET0=1允许中断,,ET0=0不允许中断。,EX0:外部中断0(INT0)的中断允许位。,EX0=1允许中断,,EX0=0不允许中断。,每个中断源的优先级别由特殊功能寄存器IP来管理。,PS,PT1,PX1,PT0,PX0,D7 D6 D5 D4 D3 D2 D1 D0,PS:串行口中断优先级控制位。,PT1:定时器/计数器T1中断优级控制位。,PX1:外部中断INT1中断优先级控制位。,PT0:定时器/计数器T0中断优先级控制位。,PX0:外部中断INT0中断优先级控制位。,外部中断触发方式通过特殊功能寄存器TCON(地址为88H)控制,TCON中各控制位分布如下:,D7 D6 D5 D4 D3 D2 D1 D0,TF1,TF0,IE1,IT1,IE0,IT0,IT0:选择外中断INT0的中断触发方式。,IT0=0为电平触发方式,低电平有效。,IT0=1为负边沿触发方式,INT0脚上的负跳变有效。IT0的状态可以用指令来置“1”或清“0”。,IE0:外中断INT0的中断申请标志。,当检测到INT0上存在有效中断申请时,由硬件使IE0置位。当CPU转向中断服务程序时,由硬件清“0”IE0中断申请标志。,IT1:选择外中断INT1的触发方式(功能与TI0类似)。,IE1:外部中断INT1的中断申请标志(功能与IE0 类似)。,TF0:定时/计数器T0溢出中断申请标志。,当T0溢出时,由内部硬件将TF0置“1”,当CPU转向中断服务程序时,由硬件将TF0清“0”,从而清除T0的中断申请标志。,TF1:定时器1溢出中断申请标志(功能与TF0相同)。,例如,某软件中对寄存器IE、IP设置如下:,MOV IE,8FH,MOV IP,06H,则此时该系统中:,CPU中断允许;,允许外部中断 0、外部中断 1、定时器 /计数器 0、定时器 /计数器1提出的中断申请;,允许中断源的中断优先次序为:,定时器 /计数器 0外部中断 1外部中断 0定时器/计数器 1。,一、中断响应条件:,1,有中断请求信号;,2,.系统处于开中断状态。,二、中断响应过程:,1,关中断:屏蔽其它中断请求信号。,2,保护断点:将断点地址压入堆栈保存,即当前PC值入栈。,3,寻找中断源:中断程序入口地址PC,转入中断服务。,4,保护现场:将中断服务程序使用的所有寄存器内容入栈。,5,中断处理:执行中断源所要求的程序段。,链接中断处理,6,恢复现场:恢复被使用寄存器的原有内容。,7,开中断:允许接受其它中断请求信号。,8,中断返回:执行,RETI,指令,堆栈断点地址,PC,,,程序跳转回断点处执行。,RETI=RET,指令+通知,CPU,中断服务已结束(复位触发器),中断响应过程,中断响应过程:,1、中断采样仅对外中断(INT,0,、INT,1,)请求信号;,2、中断查询:单片机在每一个机器周期的最后一个状态S6,,按优先级顺序对中断请求标志位进行查询,即先查询高级中断后再查询低级中断,同级中断按“,INT,0,T,0,INT,1,T,1,RI/TI”的顺序查询。如果查询到有标志位为“1”,则表明有中断请求发生,接着就从相邻的下一个机器周期的,S1,状态开始进行中断响应。,由于中断请求是随机发生的,CPU无法预先得知,因此在程序执行过程中,中断查询要在指令执行的每个机器周期中不停地重复进行。,3、,中断响应:当查询到有效的中断请求时,就进行中断响应。其主要内容是由硬件自动生成一条长调用指令LCALL。其格式为:LCALL addr16,addr16即是由系统设定的5个中断程序的入口地址。,各中断源中断服务,程序的入口地址。,如右表:,编写中断服务程序注意要点:,(1)各中断源的入口地址之间仅相隔8个单元,如果中断服务程序的长度超过8个地址单元时,应在中断入口地址处安排一条转移指令,转到其他有足够空余存储器单元的地址空间。,(2)若执行当前中断服务程序时需要禁止更高级中断源,则要
展开阅读全文