2.49k likes | 2.67k Views
第四章80 C51 单片机的功能单元. 基本内容 4.1 并行 I/O 接口 4.1.1 P1 口 4.1.2 P3 口 4.1.3 P2 口 4.1.4 P0 口 4.2 定时器/计数器 4.2.1概述 4.2.2定时器/计数器 T0、T1. 第四章80 C51 单片机的功能单元. 4.2.3 定时器/计数器 T2 4.2.4 看门狗 4.2.5定时器/计数器的编程和使用 4.3 串行接口 4.4 中断系统 4.4.1中断、中断源及中断优先级 4.4.2中断的控制和操作 4.4.3中断的响应过程和中断矢量地址 .
E N D
第四章80C51单片机的功能单元 基本内容 4.1 并行I/O接口 4.1.1 P1口 4.1.2 P3口 4.1.3 P2口 4.1.4 P0口 4.2 定时器/计数器 4.2.1概述 4.2.2定时器/计数器T0、T1
第四章80C51单片机的功能单元 4.2.3定时器/计数器T2 4.2.4看门狗 4.2.5定时器/计数器的编程和使用 4.3 串行接口 4.4 中断系统 4.4.1中断、中断源及中断优先级 4.4.2中断的控制和操作 4.4.3中断的响应过程和中断矢量地址
第四章80C51单片机的功能单元 学习要点: 1、掌握4个并行口的工作特点; 2、理解定时和计数两个概念,掌握定时器和计数器的工作原理; 3、掌握串行接口的工作原理; 4、掌握中断的概念以及中断嵌套的原理,掌握中断向量地址和中断程序的进入和退出(断点的保存和恢复)。
第四章80C51单片机的功能单元 4.1 并行I/O接口 80C51共有四个8位的并行双向口,计有32根输入/输出(I/O)口线。各口的每一位均由锁存器、输出驱动器和输入缓冲器所组成。由于它们在结构上的一些差异,故各口的性质和功能也就有了差异。它们之间的异同列于表4--1。
第四章80C51单片机的功能单元 下面按照各口的结构由简而繁的顺序加以介绍。 4.1.1 P1口 P1口是一个8位口,可以字节访问也可位访问,其字节访问地址为90H,位访问地址为90H~97H。 • 位结构与工作过程分 P1口的位结构如图4--1所示,内包含:输出锁存器、输入缓冲器BUF1(读引脚)、BUF2 (读锁存器)以及由FET晶体管Q0与上拉电阻组成的输出/输入驱动器。
第四章80C51单片机的功能单元 图4---1 P1口的位结构原理图
第四章80C51单片机的功能单元 P1口的工作过程分析如下: ① P1.i位作输出口用时:CPU输出0时,D=0,Q=0,Q=1,晶体管Q0导通,A点被下拉为低电平,即输出0;CPU输出1时,D=1,Q=1, Q =0,晶体管Q0截止,A点被上拉为高电平,即输出1。 ② P1.i位作输入口用时:先向P1.i位输出高电平,使A点提升为高电平,此操作称为设置P1.i为输入线。若外设输入为1时,A点为高电平,由BUF1读入总线后,B点也为高电平;若外设输入为0时,A点为低电平,由BUF1读入总线后,B点也为低电平。
第四章80C51单片机的功能单元 2 P1口的特点 ① 输出锁存,输出时没有条件; ② 输入缓冲,输入时有条件,即需要先将该口设为输入状态,先输出1; ③ 工作过程中无高阻悬浮状态,也就是该口不是输入态就是输出态。 具有这种特性的口不属于“真正”的双向口,而被称为“准”双向口。
第四章80C51单片机的功能单元 这里需要注意的是,若在输入操作之前不将A点设置为高电平(即先向该口线输出1),如果A点电平为低电平时,则外设输入的任何信号均被A点拉为低电平,亦即此时外设的任何信号都输不进来。更为严重的是,A点为低电平,而外设为高电平时,外设的高电平通过Q0强迫下拉为低电平,将可能有很大的电流流过Q0而将它烧坏。 P1口能驱动4个TTL负载。
第四章80C51单片机的功能单元 3 P1口的操作 • 字节操作和位操作CPU对于P1口不仅可以作为一个8位口(字节)来操作, 也可以按位来操作。有关字节操作的指令有: 输出 MOV P1,A ;(P1)← (A) MOV P1,#data ;(P1)←#data MOV P1, direct ;(P1)←(direct) 输入 MOV A ,P1 ;(A)←(P1) MOV direct,P1 ;(direct)←(P1)
第四章80C51单片机的功能单元 有关位操作的指令有: 置位、清除 SETB P1.i ;P1.i←1 CLR P1.i ;P1.i←0 输入、输出 MOV P1.i,C ;P1.i←CY MOV C, P1. i ;CY← P1. I 判跳 JB P1.i ,rel ;P1.i=1,跳转 JBC P1.i ,rel ;P1.i=0,跳转且P1.i←0 逻辑运算 ANL C, P1.i ;CY←( P1.i·CY) ORL C, P1.i ;CY←( P1.i+CY) 其中:P1.i中的i=0,…,7。
第四章80C51单片机的功能单元 因此,P1口不仅可以以8位一组进行输入、输出操作,还可以逐位分别定义各口线为输入线或输出线。 例如: ORL P1,#0000,0010B 可以使P1.1位口线输出1,而使其余各位不变。 ANL P1,#1111,1101B 可以使P1.1位口线输出0,而使其余各位不变。 • 读引脚操作和读锁存器操作 从P1口的位结构图中可以看出,有两种读口的操作:一种是读引脚操作,一种是读锁存器操作。
第四章80C51单片机的功能单元 • 在响应CPU输出的读引脚信号时,端口本身引脚的电平值通过缓冲器BUF1进入内部总线。这种类型的指令,执行之前必须先将端口锁存器置1,使A点处于高电平,否则会损坏引脚,而且也使信号无法读出,已于前述。 这种类型的指令有: MOV A,P1 ;(A)←(P1) MOV direct,P1 ;(direct)←(P1)
第四章80C51单片机的功能单元 • 在执行读锁存器的指令时,CPU首先完成将锁存器的值通过缓冲器BUF2读入内部,进行修改,然后重新写到锁存器中去,这就是“读-修改-写”指令。 这种类型的指令包含所有的口的逻辑操作(ANL、ORL、XRL)和位操作(JBC、CPL、MOV、SETB、CLR等) 指令。
第四章80C51单片机的功能单元 读锁存器操作可以避免一些错误,如用P1.i去驱动晶体管的基极。当对P1.i写入一个1之后,晶体管导通。若此时CPU接着读该位引脚的值,即晶体管基极的值时,为0;但是正确的值应该是1,这可从读锁存器得到。
第四章80C51单片机的功能单元 4 关于口操作的时序 在执行改变端口锁存器内容的指令时,新的内容在指令执行的最后一个周期的S6P2时传送到口的锁存器内。然而口锁存器仅在任何周期的P1时才采样端口锁存器(缓冲器),在P2时输出锁存器的值并保持P1时所采样到的内容。
第四章80C51单片机的功能单元 因此,S6P2时写入端口锁存器的新数值直到下一个周期的P1时被采样到,即只有在下一个机器周期的S1P1时,才真正出现在引脚上。 5 P1口的多功能线 在80C52中,P1.0和P1.1口线是多功能的,即除作一般双向I/O口线之外,这两根口线还具有下列功能:
第四章80C51单片机的功能单元 P1.0——定时器/计数器2的外部输入端T2; P1.1——定时器/计数器2的外部控制端T2EX。 这时,该两位的结构与P3口的位结构相当。 关于P1.0和P1.1的功能在定时器/计数器2中叙述。
第四章80C51单片机的功能单元 4.1.2 P3口 P3口是一个多功能的8位口,可以字节访问也可位访问,其字节访问地址为B0H,位访问地址为B0H~B7H。 1 位结构与工作过程分析 • 位结构 P3口的位结构 如图4---2所示。从P3口的位结构图中可以看出,它与P1的口位结构之间的区别在于:
第四章80C51单片机的功能单元 图4--2P3口的位结构原理图
第四章80C51单片机的功能单元 • P3口中增加了一个与非门。与非门有两个输入端:一个为口输出锁存器的Q端,另一个为替代功能的控制输出。与非门的输出端控制输出FET管Q0。 • 输出锁存器不是从Q端而是从Q端引出。 • 有两个输入缓冲器,替代输入功能取自第一个缓冲器的输出端;I/O口的通用输入信号取自第二个缓冲器的输出端。
第四章80C51单片机的功能单元 (2) 输出工作过程分析 ① 当替代输出功能B点置1时,输出锁存器的输出可以顺利通到引脚P3.i。其工作状况与P1口相类似。 这时P3口的工作状态为一I/O口,显然此时该口具有准双向口的性质。
第四章80C51单片机的功能单元 ② 当输出锁存器的输出置1时,替代输出功能可以顺利通到引脚P3.i。若替代输出为0时,因与非门的C点已置1,现B点为0,故与非门的输出为1,使Q0导通,从而使A点也为0。若替代输出为1时,与非门的输出为1,Q0截止,从而使A点也为高电平。 这时P3口的工作状态处于替代输出功能状态。
第四章80C51单片机的功能单元 从上述分析可以看出,不论是替代输出还是替代输入功能时,输出锁存器的输出置1是必需的。 因此,P3口不论作替代功能输入,还是作替代功能输出,甚至作一般I/O的输入功能时,都需要向该口位输出1。这一点特别应该引起注意。
第四章80C51单片机的功能单元 2P3口的功能和特点 与P1口不同,P3口是一个多功能口。 • 可作I/O口使用,为准双向口。这方面的功能与P1口一样。既可以字节操作,也可以位操作;既可以8位口操作,也可以逐位定义口线为输入线或输出线;既可以读引脚,也可以读锁存器,实现“读—修改—输出”操作。 • 可以作为替代功能的输入、输出。 替代输入功能: P3.0——RXD,串行输入口。
第四章80C51单片机的功能单元 P3.2——INT0,外部中断0的请求。 P3.3——INT1,外部中断1的请求。 P3.4——T0,定时器/计数器0外部计数脉冲输入。 P3.5——T1,定时器/计数器1外部计数脉冲输入。替代输出功能:
第四章80C51单片机的功能单元 P3.1——TXD,串行输出口。 P3.6——WR,外部数据存储器写选通,输出,低电平有效。 P3.7——RD,外部数据存储器读选通,输出,低电平有效。 (3) P3口能驱动4个TTL负载。
第四章80C51单片机的功能单元 4.1.3 P2口 P2口是一个多功能的8位口,可以字节访问也可位访问,其字节访问地址为A0H,位访问地址为A0H~A7H。 1 位结构与工作过程分析 • 位结构与工作过程 P2口位结构示于图4--3。
第四章80C51单片机的功能单元 图4---3P2口的位结构原理图
第四章80C51单片机的功能单元 它与P1口位结构之间的区别在于: ① P2口的位结构中增加了一个多路开关。 多路开关的输入有两个:一个是口输出锁存器的输出端Q;一个是地址寄存器(PC或DPTR)的高位输出端。多路开关的输出经反相器反相后去控制输出FET Q0。多路开关的切换由内部控制信号控制。 ② 输出锁存器的输出端是Q而不是Q ,这样多路开关之后接反相器就很好理解了。
第四章80C51单片机的功能单元 图4---3P2口的位结构原理图
第四章80C51单片机的功能单元 (2) 工作过程分析 ①在内部控制信号的作用下,多路开关的输入投向输出锁存器的输出(C点)侧,这样多路开关将接通输出锁存器。 若经由内部总线输出0,输出锁存器的Q端为0,信号经多路开关和反相器后输出1,Q0导通,A点为0,输出低电平;若经由内部总线输出1,输出锁存器的Q端为1,反相器后输出0,Q0截止,A点为1,输出高电平。 这时P2口的工作状态是I/O口状态。
第四章80C51单片机的功能单元 ②在内部控制信号的作用下,多路开关的输入投向地址输出(B点)侧,这样多路开关将接通地址寄存器输出。同样可以知道,A点的电平将随地址输出的0、1而1、0地变化。 这时P2口的工作状态是输出高8位地址。
第四章80C51单片机的功能单元 2P2口的功能和特点 从上述工作过程的分析中可以看出,P2口是一个双功能的口: (1)作I/O口使用时,P2口为一准双向口,功能与P1口一样。 (2) 作地址输出时,P2口可以输出程序存储器或片外数据存储器的高8位地址,与P0口输出的低地址一起构成16位地址线,从而可分别寻址64 KB的程序存储器或片外数据存储器。地址线是8位一起自动输出的,不能像I/O口线逐位定义。 (3) P2口能驱动4个TTL负载。
第四章80C51单片机的功能单元 3P2口使用中注意的问题 (1)由于P2口的输出锁存功能,在取指周期内或外部数据存储器读、写选通期间,输出的高8位地址是锁存的,故无需外加地址锁存器。 (2) 在系统中如果外接有程序存储器,由于访问片外程序存储器的连续不断的取指操作,P2口需要不断送出高位地址,这时P2口的全部口线均不宜再作I/O口使用。 (3) 在无外接程序存储器而有片外数据存储器的系统中,P2口使用可分为两种情况:
第四章80C51单片机的功能单元 ①若片外数据存储器的容量≤256 B:可使用“MOVX A,@Ri”及“MOVX @Ri,A”类指令访问片外数据存储器,这时P2口不输出地址,P2口仍可作为I/O口使用; ②若片外数据存储器的容量≥256 B:这时使用“MOVX A,@DPTR”及“MOVX @DPTR,A”类指令访问片外数据存储器,P2口需输出高8位地址。在片外数据存储器读、写选通期间,P2口引脚上锁存高8位地址信息,但是在选通结束后,P2口内原来锁存的内容又重新出现在引脚上。
第四章80C51单片机的功能单元 此时可以根据片外数据存储器读、写选通的频繁程度,有限制地将P2口作I/O口使用。 在片外数据存储器容量不太大的情况下,也可从软件上设法,只利用P1、P3甚至P2口中的某几根口线送高位地址,从而保留P2口的全部或部分口线作I/O口用。注意,这时使用的是“MOVX A,@Ri”及“MOVX @Ri,A”类访问指令,高位地址不再是自动送出的,而要通过程序设定。
第四章80C51单片机的功能单元 4.1.4 P0口 P0口是一个多功能的8位口,可以字节访问也可位访问,其字节访问地址为80H,位访问地址为80H~87H。 1 位结构与工作过程分析 • 位结构 P0口位结构示于图4--4。
第四章80C51单片机的功能单元 图4—4 P0口的位结构原理图
第四章80C51单片机的功能单元 P0口的位结构与P1口有明显区别: ① P0口中增加了一个多路开关:多路开关的输入有两个,地址/数据输出;输出锁存器的输出。多路开关的输出用于控制输出FET Q0的导通和截止。多路开关的切换由内部控制信号控制。 ② P0口的输出上拉电路与P1口完全不同:P0口的上拉电路导通和截止受内部控制信号和地址/数据信号共同(相“与”)来控制。
第四章80C51单片机的功能单元 (2) 工作过程分析 ① 当内部控制信号置1时,多路开关接通地址/数据输出端。 当地址/数据输出线置1时,控制上拉电路的“与”门输出为1,上拉FET导通,同时地址/数据输出通过反相器输出0,控制下拉FET截止,这样A点电位上拉,地址/数据输出线为1。
第四章80C51单片机的功能单元 当地址/数据输出线置0时,“与”门输出为0,上拉FET截止,同时地址/数据输出通过反相器输出1,控制下拉FET导通,这样A点电位下拉,地址/数据输出线为0。
第四章80C51单片机的功能单元 通过上述分析可以看出,此时的输出状态随地址/数据线而变。因此,P0口可以作为地址/数据复用总线使用。这时上下两个FET处于反相,构成了推拉式的输出电路,其负载能力大大增加。此时的P0口相当一个双向口。
第四章80C51单片机的功能单元 ② 当内部控制信号置0时,多路开关接通输出锁存器的端。这时明显地可以看出两点: · 由于内部控制信号为0,与门关闭,上拉FET截止,形成P0口的输出电路为漏极开路输出; · 输出锁存器的端引至下拉FET栅极,因此P0口的输出状态由下拉电路决定。 在P0口作输出口用时,若P0i输出1,输出锁存器的端为0,下拉FET截止,这时P0i为漏极开路输出;若P0.i输出0,输出锁存器的端为1,下拉FET导通,P0.i输出低电平。
第四章80C51单片机的功能单元 在P0口作输入口用时,为了使P0.i能正确读入数据,必须先使P0i锁存器置1。这样,下拉FET也截止,P0.i处于悬浮状态。A点的电平由外设的电平而定,通过输入缓冲器读入CPU。这时P0口相当于一个高阻抗的输入口。 2 P0口的功能和特点 (1)作I/O口使用。 相当于一个真正的双向口:输出锁存、输入缓冲,但输入时需先将口置1;每根口线可以独立定义为输入或输出。它具有双向口的一切特点。
第四章80C51单片机的功能单元 与P1及其它口的区别是,输出时为漏极开路输出,与NMOS的电路接口时要用电阻上拉;输入时为悬浮状态,为一个高阻抗的输入口。 (2)作地址/数据复用总线用。 此时P0口为一个准双向口。但是没有上拉电阻,作数据输入时,口也不是悬浮状态。 作地址/数据复用总线用时,口不能逐位定义为输入/输出。作数据总线用,输入/输出8位数据;作地址总线用,输出低8位地址。当P0口作地址/数据复用总线用之后,就再也不能作I/O口使用了。
第四章80C51单片机的功能单元 现时的许多仿真系统中,均以P0口作地址/数据复用总线使用,因而仿真I/O口的功能丧失。这一点特别应该注意。 (3) P0口能驱动8个TTL负载。
第四章80C51单片机的功能单元 4.2定时器/计数器 4.2.1概述 定时器/计数器(timer/counter)是单片机中重要部件,其工作方式灵活、编程简单,使用它对减轻CPU的负担和简化外围电路都有很大好处。 80C51包含有两个16位的定时器/计数器:定时器/计数器T0和定时器/计数器T1;80C52包含有三个16位的定时器/计数器:定时器/计数器T0、定时器/计数器T1和定时/计数器T2;在80C51系列的部分产品(80C552)中,还包含有一个用做看门狗的8位定时器(T3)。