第五章MCS51单片机内的功能模块2并行口定时器串行口.ppt
《第五章MCS51单片机内的功能模块2并行口定时器串行口.ppt》由会员分享,可在线阅读,更多相关《第五章MCS51单片机内的功能模块2并行口定时器串行口.ppt(71页珍藏版)》请在三一文库上搜索。
1、第5章 MCS-51单片机内的功能模块,MCS-51系列单片机的所有产品一般都具有并行口,定时器和串行口等功能模块。这一章主要介绍这些基本的功能模块使用方法。,5.1 并行口,典型的MCS-51单片机有四个双向8位I/O口,分别记作P0、P1、P2、P3,每一个口都由口锁存器、输入缓冲器/输出驱动器所组成。图5-1分别给出了P0、P1、P2、P3口的1位的结构框图。,并行口结构框图,工作原理:,P0P3的口锁存器结构都是一样的, P0P3口的每一位口锁存器都是一个D触发器,复位以后的初态为1。但输入缓冲器和输出驱动器的结构有差别。CPU通过内部总线把数据写入口锁存器。 CPU对口的读操作有两种
2、:一种是读-修改-写指令(例如ANL P1,#0FEH),读口锁存器的状态,此时口锁存器的状态由Q端通过上面的三态输入缓冲器送到内部总线。另一种是读指令(例如MOV A,P1),CPU读取口引脚上的外部输入信息,这时引脚状态通过下面的三态输入缓冲器传送到内部总线。 P1、P2和P3口内部有拉高电路,称为准双向口。 P0口内部没有拉高电路,是三态双向I/O口。 P1、P2、P3口可以驱动四个LSTTL电路,P0口可以驱动八个LSTTL电路。,5.1.1 P1口 一、P1口特性,P1口为准双向口,只能作为通用I/O口使用,用来传送数据。它的每一位可以分别定义为输入线或输出线,即用户可以把P1口的某
3、些位作为输出线使用,另外的一些位作为输入线使用。,P1口的某一位作为输入线时,该位的口锁存器必须保持“1”,使输出场效应管T截止,这时该位引脚由内部拉高电路拉成高电平,也可以由外部的电路拉成低电平,CPU读P1引脚状态时实际上就是读出外部电路的输入信息。P1口作为输入时,可以被任何TTL电路和MOS电路所驱动,由于内部具有提升电路,也可以被集电极开路或漏极开路的电路所驱动。,P1口的某一位作为输出线时,将“1”写入该位口锁存器,则 Q 端上的输出场效应管T截止,该位的输出引脚由内部的拉高电路拉成高电平,输出“1”;将“0”写入口锁存器,输出场效应管T导通,引脚输出低电平,即输出“0”。,二、P
4、1口的操作,P1口的字节地址为90H,位地址为90H97H。对P1口的操作,可以采用字节操作,也可以采用位操作。复位以后,口锁存器为1。 例:在图5-2中,P1.0P1.3作为输出线,接指示灯L0L3。P1.4P1.7作为输入线接四个开关K0K3。,例1 的子程序采用字节操作指令将开关状态送指示灯显示,Ki闭合,Li亮。,例1 KLA: MOV A,P1 SWAP A ORL A,#0F0H ;保持P1.4P1.7口锁存器为1 MOV P1,A RET 例2用位操作指令实现同样的功能。 例2 KLB: MOV C,P1.4 ;位传送不影响P1.4P1.7口锁存器 MOV P1.0,C MOV
5、C,P1.5 MOV P1.1,C MOV C,P1.6 MOV P1.2,C MOV C,P1.7 MOV P1.3,C RET,5.1.2 P3口 一、P3口特性,P3口为多功能口,它的第一功能为准双向口,可以作为通用I/O口使用,其特性和P1口相似 。但在实际应用中它的第二功能信号更多。,P3口的每一位可以分别定义为第一功能输入/输出线或第二功能输入/输出线。 P3口的某一位作为第一功能输入/输出线时,第二功能输出线总是为高电平,该位引脚输出电平仅取决于口锁存器的状态,为“1”时输出高电平,为“0”时输出低电平。 P3口的某一位作为输入线时,该位口锁存器应保持“1”,使输出场效应管T截止
6、,引脚状态由外部输入电平所确定。P3口的某一位作为第二功能输入/输出线时,该位的口锁存器也必须保持“1”,使输出场效应管的状态由第二功能输出确定。,P3口的口锁存器Q端接与非门驱动输出场效应管T,该与非门的另一个控制端为第二功能输出线。P3口的引脚状态通过输入缓冲器输入到内部总线和第二功能输入线。,表5-1 P3口的第二功能定义,二、P3口的操作 P3口的字节地址为0B0H,位地址为0B0H0B7H。对P3口的操作,可以采用字节操作,也可以采用位操作。 例3 ANL P3,#0DFH ;0 P3.5 CLR P3.5 ;0 P3.5 ORL P3,#20H ;1 P3.5 SETB P3.5
7、;1 P3.5 XRL P3,#20H ;P3.5取反 CPL P3.5 ;P3.5取反,5.1.3 P2口 一、P2口特性,P2口也有两种功能,对于内部有程序存贮器的单片机(如定制的8051),P2口可以作为输入口或输出口使用,直接连接输入/输出设备;也可以作为系统扩展的地址总线口,输出高8位地址A8A15。对于内部没有程序存贮器的单片机,必须外接程序存贮器,一般情况下P2口只能作为系统扩展的高8位地址总线口,而不能作为外部设备的输入/输出口。,1、P2口的输出驱动器上有一个多路电子开关(见图5-1(c),当输出驱动器转接至P2口锁存器的Q端时,P2口作为第一功能输入 /输出线,这时P2口的
8、结构和P1口相似,其功能和使用方法也和P1口相同。 2、当输出驱动器转接至地址时,P2口作为地址总线口,引脚状态由所输出的地址确定。 3、 CPU访问外部的程序存贮器时,P2口输出程序存贮器的高8位地址A8A15,该地址来源于内部的程序计数器PC的高8位; 4、当CPU以16位地址指针DPTR访问外部RAM/IO的时候,P2口输出的地址来源于DPH。,二、P2口操作,1、对于内部有程序存贮器的单片机所构成的基本系统(如8751或定制的8051),既不扩展程序存贮器,也不扩展RAM I/O 口,这时P2口作为通用I/O口使用。 例4 XRL P2 ,#1 ;P2.0取反 CPL P2.0 ;P2
9、.0取反,2、对于只扩展少量外部RAM I/O口,其地址范围在0255之间,P2 口也可以作为I/O口使用。对外部RAM I/O口操作,只能使用R0或R1作地址指针,不能用DPTR作址址指针。 例5 将33H写入外部RAM的50H单元,CPU执行下面的程序段不影响P2口输出状态,因而是正确的: MOV R0 ,#50H MOV A,#33H MOVX R0,A CPU执行下面的程序段将影响P2口的输出状态,因而是错误的; MOV DPTR,#50H MOV A,#33H MOVX DTPR ,A,例6 将33H写入外部RAM的8200H,下面的程序段都是正确的: (1) MOV P2,#82H
10、 MOV R0,#0 MOV A,#33H MOVX R0 ,A (2) MOV P2,#82H MOV R1,#0 MOV A,#33H MOVX R1,A (3) MOV DPTR,#8200H MOV A,#33H MOVX DPTR,A,3、对于既扩展程序存贮器,又扩展外部RAM/IO口的系统,P2口不能作为I/O口使用,对外部RAM/IO口操作则可以做DPTR、P2 R0、P2 R1三个16位地址指针的高8位。,5.1.4 P0口 一、P0口特性,P0口为三态双向I/O口。对于内部有程序存贮器的单片机基本系统(如定制的8051),P0口可以作为输入/输出口使用,直接连外部的输入/输出
11、设备;也可以作为系统扩展的地址/数据总线口。对于内部没有程序存贮器的单片机(如8031),P0口只能作为地址/数据总线口使用。,1、P0口的输出驱动器中也有一个多路电子开关。输出驱动器转接至口锁动器的Q端时,P0口作为双向I/O口使用。 这时,CPU发来的控制信号为低电平,使输出驱动电路的上拉场效应管T1截止。P0口的锁存器为“1”时,输出驱动器中的两个场效应管均截止,引脚浮空;由于P0口输出电路是漏极开路的电路,必须外接10k拉高电阻才能有高电平输出。而写入“0”时,下管导通输出低电平。,2、当输出驱动器转接至地扯/数据时,P0口作为地址/数据总线口使用,分时输出外部存贮器的低8位地址A0A
12、7和传送数据D0D7。低8位地址先由地址允许锁存信号ALE锁存到外部的地址锁存器中,接着P0口便输入/输出数据信息。P0口输出的低8位地址来源于PCL、DPL、R0、R1等。,二、P0口使用方法,P0口为三态双向I/O口,当用作输入口时,一般接10k左右的拉高电阻。图5-3所示的8751基本系统中,将一个开关K0接至P1.0和P0.0的电路有所差别,其原因是P1口内部具有拉高电阻,P0.0必须外接拉高电阻,才能使开关K0闭合时读P0.0引脚为0,K0断开时读P0.0引脚为1。,MCS-51的并行扩展总线,MCS-51的P0口和P2口可以作为并行扩展总线,可以扩展64K字节程序存贮器和64K字节
13、RAM I/O口 P2口输出高8位地址A8A15,P0口为复用口,先输出低8位地址A0A7,用ALE信号的负跳变将A0A7送入地址锁存器锁存,P2口和地址锁存器输出作为地址总线,输出地址A0A15。在ALE将A0A7送入地址锁存器锁存以后,接着P0口作为数据总线使用来传送数据。在扩展系统中,P3.6、P3.7作为外部RAM/IO口的读/写选通信号WR、RD,PSEN作为外部程序存贮器的读选通信号。正是由于外部程序存贮器和RAM/IO口使用不同的读选通信号,才使CPU通过16位地址总线访问64K字节程序存贮器和64K字节RAM/IO口。,MCS-51并行口电路小结,1. P0、P1、P2、P3都
14、是并行I/O口,都可用于数据的输入/输出传送,但P0、P2口可作为并行扩展总线。P0口可作为地址/数据复用线使用,输送系统的低8位地址和8位数据,因此多路开关的一个输入端为“地址/数据”信号。而P2口仅作为高位地址线使用,不涉及数据,所以多路开关的一个输入信号为“地址”。,2. P3口的口线具有第二功能,为系统提供一些控制信号。因此在P3口电路中增加了第二功能控制逻辑。这是P3口与其它各不同之处。,5.2 定时器,各种型号的单片机,不管其功能强弱都有定时器,因为定时器对于面向控制型应用领域的单片机特别有用,定时器可以实现下列功能:,(1)定时操作:产生定时中断,实现定时采样输入信号,定时扫描键
15、盘、显示器等定时操作; (2)测量外部输入信号:对输入信号累加统计或测量输入信号的周期等参数; (3)定时输出:定时触发输出引脚的电平,使输出脉冲的宽度、占空比、周期达到预定值,其精度不受程序状态影响; (4)监视系统正常工作:一旦系统工作异常时自动复位,重新启动系统正常工作。(监视定时器watchdog);,5.2.2 定时器/计数器T0和T1,MCS-51系列的单片机内,共有两个16位可编程的定时器/计数器,分别称为定时器/计数器T0和定时器/计数器T1。 与定时器/计数器有关的特殊功能寄存器有以下几个: 1、TH0、TL0为T0的16位计数器的高8位和低8位。 2、TH1、TL1为T1的
16、16位计数器的高8位和低8位。 3、TMOD为T0、T1的方式寄存器。 4、TCON为T0、T1的状态和控制寄存器,存放T0、T1的运行控制位和溢出中断标志位。 5、中断控制寄存器IE、IP。 通过对TH0、TL0和TH1、TL1的初始化编程来设置T0、T1计数器初值,通过对TCON和TMOD的编程来选择T0、T1的工作方式和控制T0、T1的运行。,一、方式寄存器TMOD(89H),特殊功能寄存器TMOD为T0、T1的工作方式寄存器,其格式如下: D7 D6 D5 D4 D3 D2 D1 D0 GATE C/T M1 M0 GATE C/T M1 M0 TMOD的低4位为T0的方式字段,高4位
17、为T1的方式字段,它们的含义是完全相同的。 工作方式选择位M1、M0(方式 03) 定时方式和外部事件计数方式选择位C/T C/T=1为外部事件计数方式。 门控位GATE GATE为1时,定时器的计数受外部引脚输入电平的控制(INT0控制T0的运行,INT1控制T1的运行);GATE为0时定时器计数不受外部引脚输入电平的控制。,二、控制寄存器TCON(88H),特殊功能寄存器TCON的高4位为定时器的运行控制位和溢出标志位,低4位为外部中断的触发方式控制位和锁存外部中断请求源(见中断一节)。TCON格式如下: D7 D6 D5 D4 D3 D2 D1 D0 TF1 TR1 TF0 TR0 IE
18、1 IT1 IE0 IT0,1. 定时器T0运行控制位TR0 TR0 由软件置位和清“0”。门控位GATE为0时,T0的计数仅由TR0控制,TR0为1时允许T0计数,TR0为0时禁止T0计数;门控位GATE为1时,仅当TR0等于1且INT0(P3.2)输入为高电平时T0才计数,TR0为0或INT0输入低电平时都禁止T0计数。,2. 定时器T0溢出标志位TF0 当T0被允许计数以后,T0从初值开始加“1”计数,最高位产生溢出时置“1”TF0。TF0可以由程序查询和清“0”。TF0也是中断请求源,当CPU响应T0中断时由硬件清“0”TF0。,3. 定时器T1运行控制位TR1 TR1由软件置位和清“
19、0”。门控位GATE为0时,T1的计数仅由TR1控制,TR1为“1”时允许T1计数,TR1为“0”时禁止T1计数;门控位GATE为1时,仅当TR1为1且INT1(P3.3)输入为高电平时T1才计数,TR1为0或INT1输入低电平时都将禁止T1计数。,4. 定时器T1溢出标志位TF1 当T1被允许计数以后,T1从初值开始加“1”计数,最高位产生溢出时置“1”TF1。TF1可以由程序查询和清“0”,TF1也是中断请求源,当CPU响应T1中断时由硬件清“0”TF1。,三、T0、T1的工作方式和计数器结构,MCS-51的定时器T0有四种工作方式:方式0、方式1、方式2、方式3;定时器T1有三种工作方式
20、:方式0、方式1、方式2。,1. 方式0 当M1M0为00时定时器工作于方式0。定时器T0方式0的结构框图如下图所示。方式0为13位的计数器,由TL0的低5位和TH0的8位组成,TL0低5位计数溢出时向TH0进位,TH0计数溢出时置“1”溢出标志TF0。,定时时间设定:,例7 已知晶振频率fOSC=6MHz,若使用T0方式0产生10ms定时中断,试对T0进行初始化编程。,a=0110001111000B,TH0 TL0,INI T0:MOV TH0,#63H MOV TL0,#18H MOV TMOD,#00H ; 置T0为方式0下的定时方式 SETB TR0 ;允许T0计数 MOV IE,#
21、82H ;EA=1,CPU开放中断 RET ;ET0=1, 允许T0中断,2. 方式1,方式1和方式0的差别仅仅在于计数器的位数不同,方式1为16位的定时器/计数器。定时器T0工作于方式1的结构框图如下图所示。T0工作于方式1时,由TH0作为高8位,TL0作为低8位,构成一个16位计数器。若T0工作于方式1定时,计数初值为a,fosc=12MHz,则T0从计数初值加1计数到溢出的定时时间为:,与定时器有关的寄存器,TCON状态和控制寄存器,中断允许寄存器IE,中断优先级控制器IP,TMOD方式控制寄存器,应用举例:,例8 设fosc=12MHz,T0工作于方式1,产生50ms定时中断,TF0为
22、高级中断源。试编写主程序中的初始化程序和中断服务程序,使P1.0产生周期为1秒的方波。,MAIN:MOV SP,#6FH ;栈指针初始化 MOV TH0,#3CH ;T0初始化 MOV TL0,#0B0H MOV TMOD,#1 ;T0工作于方式1,定时 MOV IP,#2 ;PT0=1, T0中断定义为高 ;优先级中断 MOV IE,#82H ;中断初始化(EA=1,ET0=1) SETB TR0 ;允许T0中断 MOV 30H ,#0AH ;工作单元初始化每10次 ;中断(0.5秒)P1.0求反, ;用30H作中断次数计数器单元。 AJMP $,T0中断服务程序: PTF0: ORL TL
23、0 ,#0B0H ;恢复T0初值 MOV TH0,#3CH DJNE 30H,PTF0R ;判断中断次数=10否? MOV 30H,#0AH ;恢复中断次数存贮单元值 CPL P1.0 ;P1.0求反 PTF0R :RETI,说明:定时器T0中断入口地址(55页)为:000BH 000B:LJMP PTF0R,3. 方式2,T0工作于方式0和方式1时的最大特点是计数溢出后,计数器全为“0”。因此循环定时或循环计数应用时就存在反复设置计数初值的问题。初值a通常是由中断服务程序恢复的,而CPU响应T0溢出中断的时间随程序状态不同而不同(CPU所执行指令不同或者在执行其它中断程序都影响CPU响应中断
24、的时间),CPU响应T0溢出中断之前T0从0开始继续计数,CPU响应T0溢出中断时又从初值开始计数,这样使定时产生误差。 M1M0=10时,T0工作于方式2,方式2为自动恢复初值的8位计数器,TL0作为作为8位计数器,TH0作为计数初值寄存器,当TL0计数溢出时,一方面置“1”溢出标志TF0,向CPU请求中断,同时将TH0内容送到TL0,使TL0从初值开始重新加1计数。因此,T0工作于方式2定时,定时精度比较高,但定时时间小。,T=,定时时间设定:,工作原理:,4. 方式3,1)工作方式3下的定时器/计数器T0,方式3只适用于T0,若T1被设置为工作方式3时,则使T1停止工作。T0被分为两个独
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第五 MCS51 单片机 功能模块 并行口 定时器 串行口
链接地址:https://www.31doc.com/p-2570351.html