1 / 103

实现和不同外设的速度匹配 改变数据传送方式 改变信号的性质和电平

I/O 接口的作用. 实现和不同外设的速度匹配 改变数据传送方式 改变信号的性质和电平. 外部设备的编址. 对外设端口单独编址 IN A,(N) ;N 端口中的地址数据 OUT (N),A 外设端口和存储器统一编址 将一部分地址空间让给外设端口,存储器不再使用。. 优点: ( 1 )一切指令均适用于 I/O 端口的访问,增强了 CPU 对外围设备的处理能力。 ( 2 ) CPU 本身不需要专门的 I/O 指令。 ( 3 )外设地址安排灵活,数量不限。.

Download Presentation

实现和不同外设的速度匹配 改变数据传送方式 改变信号的性质和电平

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. I/O 接口的作用 • 实现和不同外设的速度匹配 • 改变数据传送方式 • 改变信号的性质和电平

  2. 外部设备的编址 • 对外设端口单独编址 IN A,(N) ;N端口中的地址数据 OUT (N),A • 外设端口和存储器统一编址 • 将一部分地址空间让给外设端口,存储器不再使用。

  3. 优点: • (1)一切指令均适用于I/O端口的访问,增强了CPU对外围设备的处理能力。 • (2)CPU本身不需要专门的I/O指令。 • (3)外设地址安排灵活,数量不限。

  4. 端口:常指I/O接口中带有端口地址的寄存器或缓冲器, CPU通过端口地址就可以对端口中信息进行读写。 • 接口:指CPU与外设间的I/O接口芯片,一个外设通常需要一个I/O接口,但一个I/O接口可以有多个I/O端口,传送数据字的端口称数据口,传送命令字的称命令口,传送状态字的称为状态字。 端口与接口

  5. 四个8位并行I/O端口:P0、P1、P2和P3。 • 每个端口都是8位准双向口,包含一个锁存器(即特殊功能寄存器P0~P3)、一个输出驱动器和一个输入缓冲器。 • 这四个并行I/O口都可以作准双向通用I/O口,既可以作输入口,又可以作输出口,还可以作双向口。输出有锁存功能;输入有三态缓冲但无锁存功能。它们既可以以字节寻址,也可以按位独立输入/输出。 4.1 并行I/O口

  6. 数据输出方式(写端口) 通过一条指令将数据写入P0-P3的数据锁存器,然后通过输出驱动器送到端口引脚。 MOV P0,A ;累加器A中内容送P0口 • 读端口 对端口锁存器数据进行读入,这个数据并非端口引脚上的数据 MOV A,P1 ;P1锁存器中数据送A 三种I/O端口操作方式

  7. 读引脚 从端口引脚上读数据,先使对应端口锁存器置位,使T管截止,然后打开数据缓冲器,使引脚数据输入数据总线。 MOV P1,#0FH ;使P1口低四位锁存器置位 MOV A,P1 ;读P1口低四位引脚线信号

  8. 控制 Vcc AD0 读锁存器 地址/数据 P0R1 内部总线 P0.x D0 D Q 写锁存器 锁存器 Q C P0W BUF2 读引脚 P0R2 P0口内部结构 多路开关 BUF1 4.1.1 P0口 1、 P0口的结构 • 输入锁存器 • 两个输入缓冲器(BUF1和BUF2) • 推拉式I/O驱动器 1 0

  9. 说明: • 当控制信号为0时,P0口做双向I/O口,为漏极开路(三态) • 控制信号为1时,P0口为地址/数据复用总线(用于口扩展) • P0W为端口输出写信号,用于锁存输出状态 • P0R1为读锁存器信号,执行“ANL P0,#0FH”时该信号有效 • P0R2为读引脚信号,执行“MOV A,P0”时该信号有效 • 读引脚(端口)时,输出锁存器应为“1”

  10. 2. P0口的总线方式(系统使用外存储器时) 控制电路的“控制”=1,此时与门打开,MUX接向“地址/数据”信号.在这种情况下,输出极的两个FET都处于正常的工作状态 。 访问外部存储器的指令movx、movc ,就是使用P0口来输出外部存储器的低八位地址和输入、输出存储器的数据。 如果单片机使用了外部存储器(或使用movx指令来访问外部接口电路)时,P0口成为整个系统的地址/数据复用总线。换句话,P0口不能再作为通用的I/O端口的形式直接与外部连接。

  11. P0口作为地址/数据分时复用

  12. Vcc Vcc 读锁存器 控制(=0时) 地址/数据 1/0 内部总线 P0.x 引脚 D Q 锁存器 CL /Q 写锁存器 MUX (控制=0时) 读引脚 上拉电阻 P0口作为通用数据I/O端口

  13. 3. P0口的I/O操作(通用I/O接口功能) 由于与门的一个输入端为“0”,所以它使上端的FET截止.这就是P0口在做I/O口时输出为“漏极开路”的结构原因。 在P0口作为通用I/O端口时,控制电路中的“控制”为“0”电平,多路开关MUX接入下方的锁存器的/Q端。 P0口作为通用I/O口

  14. 输出操作 在执行以口为目标的指令时,数据送到锁存器的“D”端,经“/Q”端送场效管应输出极.如:送“1”时,/Q=“0”,使下端的FET截止.这样出现输出极的两个FET全部截止.在这种情况下必须在端口线上外加上拉电阻.这样在上拉电阻的作用下,使端口为高电平.同理,若总线向口送“0”时,锁存器的/Q=1,使下端的FET导通(上面的FET仍然截止),这样端口呈现“0”电平。

  15. 输入操作(读引脚,读锁存,输入前写1) 读引脚:读外部送到端口引脚的电平,即通常所说的输入操作(如:MOV A,P0).此时,单片机控制“读引脚”的三态门,使引脚处的外部电平经三态门送入内部总线. • 读锁存器:将进行读锁存器并进行处理,最后再写回锁存器的操作称之为: “读—修改—写”操作,如“ANL P0,#0FH” 。在这种情况下, 读入的数据不是来自引脚,而是端口内部锁存器的内容。 • 输入(读引脚)时应先写“1”: 在端口电路中,可以发现一个问题:端口在输入(读

  16. 引脚)时,原来锁存器的状态可能要影响引脚电平的输入.例如:原来锁存器引脚)时,原来锁存器的状态可能要影响引脚电平的输入.例如:原来锁存器 的状态为“0”态,既输出极的下端FET是饱和状态,这样如果外电路向引脚输入高电平时,电路将不能正确读入.要解决的方法就是让下端的FET截止,既事先向端口写一个“1”。 向端口写一个“1”

  17. “通用数据I/O端口”和“地址、数据复用总线”“通用数据I/O端口”和“地址、数据复用总线” a. 在作为通用数据I/O端口时,具有较强的驱动能力(8个TTL负载),与MOS负载连接时,需要外接一个上拉电阻。 b. 作为“地址、数据复用总线”使用时,P0口首先输出外部存储器的低八位地址,然后再变为数据总线进行数据的输入或输出.此时,P0口不能再作为通用I/O口。 P0口特点小结: 返回 返回前一次

  18. P0口作为地址/数据分时复用

  19. 做通用数据I/O端口时,输出级上端的FET处于截止状态,所以与MOS器件连接时,必须接“上拉电阻”,否则不能正确的输出高电平;做通用数据I/O端口时,输出级上端的FET处于截止状态,所以与MOS器件连接时,必须接“上拉电阻”,否则不能正确的输出高电平; 在输入操作前,为了保证输入正确,必须先向端口“写1”; “读引脚”与“读锁存器”是不同的两个数据通道。凡是“读—修改—写” 的操作,CPU读的都是端口锁存器中的数据。 为了提高电路的可靠性,端口引脚不要直接与三极管一类的器件直接连接,应加隔离电路或与三极管之间加一个电阻.

  20. 特点:单纯的通用I/O端口,负载能力为3个TTL输入。特点:单纯的通用I/O端口,负载能力为3个TTL输入。 4.1.2 P1口 Vcc 读锁存器 内部上拉电阻 P1.x 引脚 D Q 锁存器 CL /Q 内部总线 写锁存器 读引脚 三态门 上拉电阻

  21. 4.1.3 P2口特点:“通用数据I/O端口”和“高八位地址总线”端口。 地址/数据 1/0 Vcc 控制 读锁存器 内部上拉电阻 内部总线 P2.x 引脚 D Q 锁存器 CL /Q MUX (地址/数据=0) 写锁存器 读引脚 高8位地址总线使用时,控制信号使转换开关接向上侧

  22. P2口在系统使用外部存储器时,做高八位的地址总线。 P2口在系统使用外部存储器时,做高八位的地址总线。 应当注意的是:仅使用外部数据存储器时,P2口分两种情况: 仅仅使用256B的外部RAM时,既使用movx a,@r0指令访问外部RAM,此时用8位的寄存器R0或R1作间址寄存器,这时P2口无用,所以在这种情况下,P2口仍然可以做通用I/O端口。 如果访问外部ROM或使用大于256B(多于8位地址)RAM时,P2口必须作为外存储器的高八位地址总线。 如:movx a,@dptr ;访问外部数据存储器 movc a,@a+dptr ;访问外部程序存储器 这里使用了16位的寄存器DPTR

  23. 4.1.4 P3口特点:通用I/O端口、多用途端口 Vcc 读锁存器 第二功能输出 P3.x 引脚 内部总线 D Q 锁存器 CL /Q 写锁存器 MUX (地址/数据=0) 读引脚 上拉电阻 第二功能输入

  24. 4.1.4 P3口 1 1 输出I/O口 读I/O口 1 1 • 说明: • 做普通端口使用时,第二功能应为“1” • 使用第二功能时,输出端口锁存器应为“1”。

  25. 第二功能() • P3.0 TXD • P3.4 T0 • P3.1 RXD • P3.5 T1 • P3.2 INT0 • P3.6 WR • P3.3 INT1 • P3.7 RD

  26. 4.1.5 P0~P3端口功能总结 使用中应注意的问题: P0~P3口都是并行I/O口,但P0口和P2口还可用来构建数据总线和地址总线,所以电路中有一个MUX,进行转换。 而P1口和P3口无构建系统的数据总线和地址总线的功能,因此,无需转接开关MUX。

  27. 只有P0口是一个真正的双向口,P1~P3口都是准双向口。原因:P0口作数据总线使用时,为保证数据正确传送,需解决芯片内外的隔离问题,即只有在数据传送时芯片内外才接通;否则应处于隔离状态。为此,P0口的输出缓冲器应为三态门。只有P0口是一个真正的双向口,P1~P3口都是准双向口。原因:P0口作数据总线使用时,为保证数据正确传送,需解决芯片内外的隔离问题,即只有在数据传送时芯片内外才接通;否则应处于隔离状态。为此,P0口的输出缓冲器应为三态门。 • P3口具有第二功能。因此在P3口电路增加了第二功能控制逻辑。这是P3口与其它各口的不同之处。

  28. P1口的位结构

  29. P1口的应用 • 通用I/O口 • 可以采用字节操作也可以采用位操作,CPU既可以把它们看作数据口也可以看作状态口。 • CPU复位后,口锁存器为“1”,对于作为输入的口脚(读引脚),相应位的口锁存器不能写入“0”。

  30. 例4-1 读P1.4~P1.7口状态送指示灯显示。 • 字节操作参考程序: • ORL P1,#0F0H ;P1.4~P1.7口锁存器置1 • MOV A,P1 ;读P1.4~P1.7引脚状态 • SWAP A ; • MOV P1,A ; • RET

  31. P2口作通用I/O口应用 • 例4-3 • XRL P2,#01H ;P2.0取反 • CPL P2.0 ;P2.0取反 • P2口作地址总线 • (1)若片外数据存储器的容量≤256B • 这时P2口不输出地址,仍可作为I/O口使用

  32. 例4-4 将56H写入外部RAM的38H单元,CPU • 执行下面的程序段不影响P2口状态: • MOV R0, #38H • MOV A, #56H • MOVX @R0, A • (2)若片外数据存储器的容量≥256B • MOVX A,@DPTR • MOVX @DPTR,A

  33. 4.2 定时器/计数器 • MCS-51内部具有两个定时/计数器,可用于定时控制,分频器和事故处理来用。 • 内部是一个二进制加1计数器,当计数器计满回零时能自动产生溢出中断请求,表示定时时间已到或计数已中止。

  34. 2个可独立控制的16位定时器/计数器:T0、T1 • 原理: • 定时模式 • 每一个机器周期计数器加1,直至计满溢出产生中断请求。对于一个N位的加1计数器,若计数时钟的频率f是已知的,则从初值a开始加1计数至溢出所占用的时间为: • 当N=8、a=0、t=1/f时,最大的定时时间为: T=256t

  35. 计数模式 • 外部输入信号是加到T0(P3.4)或T1(P3.5)端,CPU每个机器周期对T0(或T1)检测一次,只有在前一次检测为1后一次检测为0时才使计数器加1。所以,对外部输入信号的最高计数速率是晶振的1/24。

  36. T0 T1 一 、 定时器控制、状态寄存器 1.TMOD定时器方式寄存器(89H) • 功能选择位C/T: • =0,定时功能,计数内部机器周期脉冲; • =1,计数功能,计数引脚T0(T1)输入的脉冲下降沿。 • 方式选择位M1、M0:4种工作方式:13/16/8位

  37. 门控方式选择位GATE :=0,非门控方式(内部启动):TRx=1,启动定时器工作;TRx=0,停止定时器工作。=1,门控方式(外部启动):TRx=1且引脚INTx=1才启动。

  38. MOV TMOD,#1101 0010B • 或 MOV TMOD,#0D2H 确定定时器工作方式指令:MOV TMOD,#方式字 例:设T0用方式2非门控定时,T1用方式1门控计数。

  39. 2.TCON定时器控制/状态寄存器(88H) • 启动控制位TR0、TR1 =0,停止定时器工作; =1,启动定时器工作。 例:启动T0: SETB TR0 • 溢出中断标志位TF0、TF1 定时器溢出使TFx=1。 中断方式: TFx=1引起中断请求,CPU响应Tx中断后,自动对TFx清0 。

  40. 软件查询方式: • 可用软件检测TFx,必须软件清0。 • WAIT:JBC TF0,NEXT;检测T0是否溢出 • SJMP WAIT ;未溢出,继续检测 • NEXT: … ;溢出,TF0清0,处理溢出 • 3.可预置初值的16位加1定时计数器 • 属于SFR中的一种,T0由TH0、TL0组成, T1由TH1、TL1组成。通过预设初值来定时。 • 预置T0初值指令: MOV TH0,#XH • MOV TL0,#XL

  41. 振荡器 ÷12 8位 5位 中断 申请 C/T=0 C/T=1 THx TLx TFx Tx脚 启动控制 TRx & GATE 1 INTx 二、定时器工作方式由方式选择位M1、M0设定

  42. 1.方式0 13位定时/计数器。 THx 高8位和TLx 低5位组成13位加1计数器 计数外部脉冲个数:1~8192(213) 定时时间(12MHz,即:T=1s):1s ~8.192ms

  43. 例:计算得初值为7692,13位定时器T0应装初值多少?例:计算得初值为7692,13位定时器T0应装初值多少? • 7692化为16进制数1E0CH,则 • TH0=0FOH,TL0=0CH • 2.方式1 • 16位定时/计数器。 THx8位和TLx8位组成16位加1计数器 • 计数外部脉冲个数:1~65536(216) • 定时时间(T=1s):1s ~ 65536×T= 65.54ms

  44. 振荡器 ÷12 8位 8位 中断 申请 C/T=0 C/T=1 THx TLx TFx Tx脚 启动控制 TRx & GATE 1 INTx

  45. 3.方式2 自动恢复初值8位定时/计数器。 TLx为8位加1计数器,THx为8位初值暂存器。 无需重装初值,用于需要重复定时 和计数的场合。 最大计数值:256 (28) 最大定时时间(T=1s): 256s

  46. 振荡器 ÷12 8位 中断 申请 C/T=0 C/T=1 TLx TFx Tx脚 启动控制 重 装 TRx & THx GATE 1 INTx

  47. 4.方式3(只适用T0) • T0分成2个独立的8位定时器:TL0定时/计数器和TH0定时器 • TL0占用T0控制位:C/T,TR0,GATE;TH0占用T1控制位。 • T1不能使用方式3工作,一般当T1作为波特率发生器时,T0选方式3。 • 方式2下,当定时器计满回零时,一方面向CPU发出溢出中断请求,另一方面从TH中重新获得初值并启动计数。 • 而方式0、1、3下,定时器必须通过重装初值来重新启动计数。

  48. 振荡器 ÷12 8位 中断 申请 C/T=0 C/T=1 TL0 TF0 T0脚 启动控制 TR0 & GATE 1 INT0 8位 中断 申请 振荡器 ÷12 TH0 TF1 启动控制 TR1 方式3下定时器的逻辑功能图

  49. 4.2.3 定时器/计数器的初始化 • 1.初始化步骤 • 给定时器方式寄存器TMOD送一个方式控制字,以设定定时器/计数器的相应工作方式。 • 确定需要定时的时间和需要计数的初值,给定时器/计数器送定时器初值或计数器初值。 • 给中断允许寄存器IE选送中断控制字和中断优先级寄存器IP选送中断优先级字,以开放相应中断和设定中断优先级。

More Related