第3章MCS-51单片机的内部资源及应用主要内容:MCS-51单片机内部各器件的具体结构、组成原理、工作方式的设置及典型应用,为读者后续学习单片机应用系统设计、充分利用单片机内部资源解决工程实际问题奠定基础。重点:单片机内部各器件工作方式的设置及灵活应用。难点:中断系统和定时器/计数器的应用。第3章MCS-51单片机的内部资源及应用3.1MCS-51单片机的并行I/O口3.2MCS-51单片机的中断系统3.3MCS-51单片机的定时器/计数器3.4MCS-51单片机的串行通信3.1MCS-51单片机的并行I/O口3.1.1MCS-51内部并行I/O口8051有4个8位并行I/O口,分别命名为P0,P1,P2和P3口。1.P0口P0口为双向三态输入/输出口,P0口既可作为地址/数据总线口,又可作为通用I/O口,可驱动8个TTL输入。在访问外部存储器时,P0口作地址/数据总线存储器。P0口作地址/数据总线复用口,是一个真正的双向口,并分时送出地址的低8位和送出(或接收)相应存储单元的数据。作通用I/O口时,P0口只是一个准双向口,需要在外部引脚处外接上拉电阻。P0口的位结构如右图所示。8051单片机在对端口P0一P3的输入操作上,有如下约定:凡属于读-修改-写方式的指令,从锁存器读入信号,其它指令则从端口引脚线上读入信号。ANLP0,#立即数ORLP0,AINCP1DECP3CPLP2单片机的引脚(P0口):P0.0—P0.7:双向I/O口(内置场效应管上拉)寻址外部程序存储器时分时作为双向8位数据口和输出低8位地址复用口;不接外部程序存储器时可作为8位准双向I/O口使用。21DQCK/Q读引脚读锁存器写内部总线地址/数据控制引脚P0.X34Vcc单片机的引脚(P0口):P0.0—P0.7:双向I/O口(内置场效应管上拉)寻址外部程序存储器时分时作为双向8位数据口和输出低8位地址复用口;不接外部程序存储器时可作为8位准双向I/O口使用。21DQCK/Q读引脚读锁存器写锁存器内部总线地址/数据控制=0引脚P0.X34Vcc=1100截止截止00控制=0时,此脚作输入口(事先必须对它写“1”)单片机的引脚(P0口):P0.0—P0.7:双向I/O口(内置场效应管上拉)寻址外部程序存储器时分时作为双向8位数据口和输出低8位地址复用口;不接外部程序存储器时可作为8位准双向I/O口使用。21DQCK/Q读引脚读锁存器写锁存器内部总线地址/数据控制=1引脚P0.X34Vcc=01=01导通截止10控制=1时,此脚作地址/数据复用口:(1)输出地址数据=0时=0单片机的引脚(P0口):P0.0—P0.7:双向I/O口(内置场效应管上拉)寻址外部程序存储器时分时作为双向8位数据口和输出低8位地址复用口;不接外部程序存储器时可作为8位准双向I/O口使用。21DQCK/Q读引脚读锁存器写锁存器内部总线地址/数据控制=1引脚P0.X34Vcc=00=10截止导通11控制=1时,此脚作地址/数据复用口:(2)输出地址数据=1时=1单片机的引脚(P0口):P0.0—P0.7:双向I/O口(内置场效应管上拉)寻址外部程序存储器时分时作为双向8位数据口和输出低8位地址复用口;不接外部程序存储器时可作为8位准双向I/O口使用。21DQCK/Q读引脚读锁存器写锁存器内部总线地址/数据控制=1引脚P0.X34Vcc=10控制=1时,此脚作地址/数据复用口:(3)输入数据时,输入指令将引脚与内部总线直通单片机的引脚(P1口):P1.0—P1.7:准双向I/O口(内置了上拉电阻)输出时与其他口一致,仅在作输入口用时要先对其写“1”。21DQCK/Q读引脚读锁存器写锁存器内部总线Vcc引脚P1.X内部上拉电阻单片机的引脚(P1口):P1.0—P1.7:准双向I/O口(内置了上拉电阻)输出时与其他口一致,仅在作输入口用时要先对其写“1”。21DQCK/Q读引脚读锁存器写锁存器内部总线Vcc引脚P1.X内部上拉电阻输出数据=1时110截止=1单片机的引脚(P1口):P1.0—P1.7:准双向I/O口(内置了上拉电阻)输出时与其他口一致,仅在作输入口用时要先对其写“1”。21DQCK/Q读引脚读锁存器写锁存器内部总线Vcc引脚P1.X内部上拉电阻输出数据=0时001导通=0单片机的引脚(P2口):P2.0—P2.7:双向I/O口(内置了上拉电阻)寻址外部程序存储器时输出高8位地址;不接外部程序存储器时可作为8位准双向I/O口使用。21DQCK/Q读引脚读锁存器写锁存器内部总线地址高8位控制引脚P2.X3内部上拉电阻Vcc单片机的引脚(P2口):21DQCK/Q读引脚=0读锁存器写锁存器内部总线地址高8位控制=0引脚P2.X3内部上拉电阻Vcc控制=0时,此脚作为通用输出口(输出=1)11101=1截止单片机的引脚(P2口):21DQCK/Q读引脚=0读锁存器写锁存器内部总线地址高8位控制=0引脚P2.X3内部上拉电阻Vcc控制=0时,此脚作为通用输出口(输出=0)00010=0导通单片机的引脚(P2口):21DQCK/Q读引脚=0读锁存器写锁存器内部总线地址高8位控制=1引脚P2.X3内部上拉电阻Vcc控制=1时,此脚作为高八位地址输出口A8—A15=1101=1截止单片机的引脚(P3口):P3.0—P3.7:双功能口(内置了上拉电阻)P3口具有特定的第二功能。在不使用第二功能时就是普通的双向口。21DQCK/Q读引脚读锁存器写锁存器内部总线第二功能输出引脚P3.X3内部上拉电阻Vcc第二功能输入4单片机的引脚(P3口):P3.0—P3.7:双功能口(内置了上拉电阻)P3口具有特定的第二功能。在不使用第二功能时就是普通的双向口。21DQCK/Q读引脚读锁存器写锁存器内部总线第二功能输出(WD,RD,TxD)引脚P3.X3内部上拉电阻Vcc第二功能输出时,D=14111反向器单片机的引脚(P3口):P3.0—P3.7:双功能口(内置了上拉电阻)P3口具有特定的第二功能。在不使用第二功能时就是普通的双向口。21DQCK/Q读引脚读锁存器写锁存器内部总线此端为1引脚P3.X3内部上拉电阻Vcc第二功能输入时,信号经总线缓冲器4直接进入内部总线4101第二功能输入(RxD,T0,T1,INT0,INT1)截止12.P2口P2口常用做外部存储器的高8位地址口。当不用做地址口时,P2口也可作为通用I/O口,这时它也是一个准双向I/O口。不必外接上拉电阻就可以驱动任何MOS驱动电路,且只能驱动4个TTL输入。P2口的位结构如右图所示。3.P1口P1口常用做通用I/O口,它也是一个标准的准双向I/O口,不必外接上拉电阻就可以驱动任何MOS驱动电路,且只能驱动4个TTL输入。P1口的位结构如右图所示。4.P3口P3口是一个双功能口,第一功能与P1口一样可用做通用I/O口,也是一个准双向I/O口,能驱动4个TTL输入。另外还具有第二功能。P3口工作在第二功能时各管脚定义如下表所示。P3口的位结构图如右图所示。3.1.2MCS-51内部并行I/O口的应用MCS-51I/O端口的操作方式:(1)输出数据方式:CPU通过一条数据传送指令就可以把输出数据写入P0~P3的端口锁存器,然后通过输出驱动器送到端口引脚线。例如,下面的指令均可在P0口输出数据。MOVP0,AANLP0,#dataORLP0,A(2)读端口数据方式:CPU读入的这个数据并非端口引脚线上的数据。读端口数据可以直接读端口。例如,下面的指令均可以从P1口输入数据。MOVA,P1MOV20H,P1MOVR0,P1MOV@R0,P1(3)读端口引脚方式:读端口引脚方式可以从端口引脚上读入信息。在这种方式下,CPU首先必须使欲读端口引脚所对应的锁存器置1,然后才能读端口引脚。因此,用户在读引脚时必须先置位锁存器后读,连续使用两条指令。例如,下面的程序可以读P1引脚上的低4位信号。MOVP1,#0FH;置位P1引脚的低4位锁存器MOVA,P1;读P1引脚上的低4位信号送累加器A在I/O口直接用做输入/输出时,CPU既可以把它们看做数据口,也可以看做状态口,这是由用户决定的。[例题1]要求将两个BCD拨码开关的数字和,在LED数码管上显示出来。(用CD4511驱动LED)(开关闭合为1,断开为0)解:CD4511是BCD锁存—段码译码—共阴LED驱动集成电路,其引脚如右图所示,各引脚功能如下:VCC:接正电源;Vss:接地;A,B,C,D:BCD码输入脚(A为最低位,D为最高位);Qa~Qg:段码输出脚,高电平有效,最大可输出25mA电流;EI:熄灭,接低电平,则Qa~Qg全部输出低电平;LC:点亮测试,接低电平,则Qa~Qg全部输出高电平;LE:锁存允许,接高电平锁存,则输出不会随BCD码输入改变。1.I/O口直接用于输入/输出硬件电路设计:BCD拨码开关为4位,两个BCD拨码开关分别接至P3口的高四位和低四位(注意:应连接上拉电阻),由P1口的高四位和低四位通过两片CD4511分别扩展两位LED。硬件电路如右图所示。软件设计思想:读P3口引脚,得到输入数据,将数据分成2个4位BCD码,求BCD码和,输出到P1口,通过CD4511驱动LED显示。程序如下:ORG0100HMOVP3,#0FFH;读引脚先对其写1MOVA,P3;读引脚CPLA;取反,取真正的键值MOV20H,A;A中的数据送20H单元保存SWAPA;A中的内容半字节交换ANLA,#0FH;A中得到原高4位的BCD码ANL20H,#0FH;20H单元中得到原低4位的BCD码ADDA,20H;A中为原高低4位BCD码之和DAA;BCD码调整MOVP1,A;输出到P1口SJMP$;程序执行完,“原地踏步”END2.I/O口扩展外部锁存器为了提高数据传输速率,MCS-51单片机常常需要使I/O口通过外部锁存器和输入设备相连。通过中断方式读取数据,8051响应该中断请求后在中断服务程序中通过下面的指令读取输入数据:MOVDPTR,#7FFFH;DPTR指向74LS373端口,地址为7FFFHMOVXA,@DPTR;读入数据到A中3.2MCS-51单片机的中断系统3.2.1中断的基本概念3.2.2MCS-51的中断系统3.2.3MCS-51中断系统的编程3.2.4MCS-51扩展外部中断请求输入口3.2.1中断的基本概念计算机通过外部设备(也称为外设、输入/输出设备或I/O设备)与外界联系。计算机与外设之间不是直接相连的,而是通过不同的接口电路来达到彼此间的信息传送的目的。计算机与外设之间交换信息的方式:(1)无条件传送方式:外设对计算机来说总是准备好的。(2)查询传送方式:传送前计算机先查询外设的状态,若已经准备好就传送,否则就继续查询/等待。(3)中断传送方式:外设通过申请中断的方式与计算机进行数据传送。(4)直接存储器存取方式(DMA):传送数据的双方直接通过总线传送数据,不经CPU中转。中断的定义当外设提出中断请求时,将改变现有程序流程,转而为请求设备服务,处理完毕后再返回原来的流程中继续之前的工作。这种工作机制被称为中断,其工作流程如图:主程序断点响应中断中断返回中断服务程序继续主程序主程序A响应返回断点RETI……中断服务程序B注意中断与子程序调用的不同点主程序转移中断程序返回断点继续●子程序调用是固定的,专用指令,位置固定。●中断的执行是随机的,没有调用指令,任何位置。中断工作方式的优点:1)外设与CPU可并行工作CPU与多个外设同时工作,互不干扰2)实现了实时处理、实时控制CPU能及时处理外部信息,如数据采集,监控3)能及时处理随机故障中断源中断源是指引起中断的设备或事件,或发出中断请求的源头。中断的分类中断按功能通常可分为可屏蔽中断、非屏蔽中断和软件中断三类。可屏蔽中断是指CPU可以通过指令来允许或屏蔽中断的请求。非屏蔽中断是指CPU对中断请求是不可屏蔽的,一旦出现,CPU必须响应。软件中断则是指通过相应的中断指令使CPU响应中断。中断优先权与中断嵌套中断优