收藏 分享(赏)

C8051f020 IO配置小结.doc

上传人:s36f12 文档编号:6543407 上传时间:2019-04-16 格式:DOC 页数:3 大小:19.22KB
下载 相关 举报
C8051f020 IO配置小结.doc_第1页
第1页 / 共3页
C8051f020 IO配置小结.doc_第2页
第2页 / 共3页
C8051f020 IO配置小结.doc_第3页
第3页 / 共3页
亲,该文档总共3页,全部预览完了,如果喜欢就下载吧!
资源描述

1、C8051f020 I/O 配置小结020 的每个 I/O 口引脚都可以被配置为推挽或漏极开路输出。同时引入了数字交叉开关,允许将内部数字系统资源映射到 P0、P1、P2 和 P3 的端口引脚。通过设置交叉开关寄存器可将片内的计数器/定时器、串行总线、硬件中断、ADC 转换启动输入、比较器输出以及微控制器内部的其他数字信号配置为出现在端口 I/O 引脚。必须在访问这些外设的 I/O 之前配置和允许交叉开关。注意的问题:1.低端口既能按位寻址,也可以按字节寻址;高端口只能按字节寻址。2.没有被分配到的引脚作为一般的数字通用 I/O 口。3.P1 口还可以用作 ADC1 的模拟输入。4.P0MDO

2、UTP3MDOUT 用于控制 I/O 端口每一位的输出状态。5.EMIF(外部存储器接口)是用于 CPU 与片外 XRAM 之间的数据传输通道,通过寄存器 EMI0CF 和EMI0CN 选择和管理端口实现数据的传输。6.为了能访问片外存储器空间,必须设置 EMI0CN 寄存器的内容为片外存储器的空间页地址。7.如果把外部存储器接口(EMIF )设置在高端口则首先要把 EMI0CF 的 PRTSEL 位设置为 1,选择高端口,同时选择地址的复用或非复用方式,在把 XBR 的外部寄存器的 EMIFLE 位设置为 0。8.复用方式配置:在复用方式下,数据总线和地址总线的第 8 位共用相同的引脚(AD

3、0AD7)。在该方式下,要用一个外部锁存器(如 74HC373 或相同功能的锁存器)保持 RAM 地址的低 8 位。外部锁存器由 ALE(地址锁存使能)信号控制,ALE 信号由外部存储器接口逻辑驱动。9.在总线复用时,需要把地址数据复用端口配置为漏极开路。10.ALE 高/低脉宽占 1 个 SYSCLK 周期,地址建立/ 保持时间占 0 个 SYSCLK 周期,/WR 和/RD 占 12个 SYSCLK 周期, EMIF 工作在地址/数据复用方式,即:EMI0CF |= 0x2c;EMI0TC |= 0x2c;配置EMIF 的步骤是:先将 EMIF 选到低端口或高端口;然后选择复用方式或非复用

4、方式;再选择存储器的模式(只用片内存储器、不带块选择的分片方式、带块选择的分片方式或只用片外存储器);然后设置 EMI0TC;最后通过寄存器 PnMDOUT 和 P74OUT 选择所期望的相关端口的输出方式。如:void PORT_Init (void)XBR2 = 0x40; /*使能交叉开关和弱上拉*/P74OUT |= 0xff; /*使能 P4P7 推挽输出*/EMI0CF |= 0x2c; /*EMIF 工作在地址/数据复用方式,只用外部存储器,ALE 高/ 低脉宽占 1 个SYSCLK 周期*/EMI0TC |= 0x6c; /*地址建立/保持时间占 0 个 SYSCLK 周期,

5、/WR 和/RD 占 12 个 SYSCLK 周期*/P3MDOUT |= 0xdf; /*使能 P3.5 推挽输出*/11.避免高端口处于“ 浮空”状态,以避免因输入浮空为无效逻辑电平而导致不必要的功率消耗,为此应采取如下措施的任何一种:a.将 XBR2.7 位设置为逻辑 0 选择弱上拉状态R/W R/W R/W R/W R/W R/W R/W R/W 复位值WEAKPUD XBARE - T4EXE T4E UART1E EMIFLE CNVSTE 00000000位 7 位 6 位 5 位 4 位 3 位 2 位 1 位 0 SFR 地址位 7 WEAKPUD 弱上拉禁止位0 弱上拉全局

6、允许1 弱上拉全局禁止位 6 XBARE 交叉开关允许位0 交叉开关禁止端口 0 1 2 和 3 的所有引脚被强制为输入方式1 交叉开关允许位 5 未用读 0 写= 忽略位 4 T4EXE T4EX 输入允许位0 T4EX 不连到端口引脚1 T4EX 连到端口引脚位 3 T4E T4 输入允许位0 T4 不连到端口引脚1 T4 连到端口引脚位 2 UART1E UART1 I/O 允许位0 UART1 I/O 不连到端口引脚1 UART1 TX 和 RX 连到两个端口引脚位 1 EMIFLE 外部存储器接口低端口允许位0 P0.7 P0.6 和 P0.5 的功能由交叉开关或端口锁存器决定1 如

7、果 EMI0CF.4 = 0 外部存储器接口为复用方式则 P0.7 (/WR) P0.6 (/RD)和 P0.5 (/ALE)被交叉开关跳过它们的输出状态由端口锁存器和外部存储器接口决定1 如果 EMI0CF.4 = 1 外部存储器接口为非复用方式则 P0.7 (/WR)和 P0.6 (/RD)被交叉开关跳过它们的输出状态由端口锁存器和外部存储器接口决定位 0 CNVSTE 外部转换启动输入允许位0 CNVSTR 不连到端口引脚1 CNVSTR 连到端口引脚;b.令 P74OUT=0xFF,将高端口输出方式配置为推拉方式(P74OUT 为高端口输出方式寄存器);c.向高端口数据寄存器 P4、P

8、5、P6 和 P7 写 0。12.配置端口引脚的输出方式每个端口引脚的输出方式都可被配置为漏极开路或推挽方式。在推挽方式下向端口数据寄存器中的相应位写逻辑 0 将使端口引脚被驱动到 GND 写逻辑 1 将使端口引脚被驱动到 VDD ,在漏极开路方式下向端口数据寄存器中的相应位写逻辑 0 将使端口引脚被驱动到 GND 写逻辑 1 将使端口引脚处于高阻状态,当系统中不同器件的端口引脚有共享连接。即多个输出连接到同一个物理线时(例如 SMBus 连接中的 SDA 信号),使用漏极开路方式可以防止不同器件之间的冲突。(推挽方式在有些书中称为推拉方式)转载-关于开漏、推挽方式 2008-01-27 17

9、:53 漏级开路即高阻状态,适用于输入/输出,其可独立输入/输出低电平和高阻状态,若需要产生高电平,则需使用外部上拉电阻或使用如 LCX245 等电平转换芯片。有些朋友,尤其是未学过此方面知识的朋友,在实际工作中将 I/O 口设置为漏开,并想输出高电平,但向口线上写 1 后对方并未认出高电平,但用万用表测量引脚确有电压,这种认为是不对的,对于高阻状态来说,测量电压是无意义的,正确的方法应是外加上拉电阻,上拉电阻的阻值=上拉电压/芯片引脚最大灌(拉)电流。 推挽方式可完全独立产生高低电平,推挽方式为低阻,这样,才能保证口线上不分走电压或分走极小的电压(可忽略),保证输出与电源相同的高电平,推挽适

10、用于输出而不适用于输入,因为若对推挽(低阻)加高电平后,I=U/R,I 会很大,将造成口的烧毁。对与 C8051F 的很多型号片子,将 I/O 口设置为推挽方式的做法为:PnMDOUT=0xff,Pn=0x00,这样设置 I/O 口为推挽,并输出低电平(可降低功耗) 将 I/O 口设置为漏开方式的做法为:PnMDOUT=0x00,Pn=0x11,这样设置 I/O 口为漏开。如果学过三极管放大电路一定知道,前置单管放大器和功放末级放大电路的区别。单片机内部的逻辑经过内部的逻辑运算后需要输出到外面,外面的器件可能需要较大的电流才能推动,因此在单片机的输出端口必须有一个驱动电路。这种驱动电路有两种形

11、式:其中的一种是采用一只 N 型三极管(npn 或 n 沟道),以 npn 三极管为例,就是 e 接地,b 接内部的逻辑运算,c 引出,b 受内部驱动可以控制三极管是否导通但如果三极管的 c 极一直悬空,尽管b 极上发生高低变化,c 极上也不会有高低变化,因此在这种条件下必须在外部提供一个电阻,电阻的一端接 c(引出脚)另一端接电源,这样当三极管的 b 有高电压是三极管导通,c 电压为低,当 b为低电压时三极管不通,c 极在电阻的拉动下为高电压,这种驱动电路有个特点:低电压是三极管驱动的,高电压是电阻驱动的(上下不对称),三极管导通时的 ec 内阻很小,因此可以提供很大的电流,可以直接驱动 l

12、ed 甚至继电器,但电阻的驱动是有限的,最大高电平输出电流=(vcc-Vh)/r;另一种是互补推挽输出,采用 2 只晶体管,一只在上一只在下,上面的一只是 n 型,下面为 p 型(以三极管为例),两只管子的连接为:npn(上)的 c 连 vcc,pnp(下)的 c 接地,两只管子的ee,bb 相连,其中 ee 作为输出(引出脚),bb 接内部逻辑,这个电路通常用于功率放大点路的末级(音响),当 bb 接高电压时 npn 管导通输出高电压,由于三极管的 ec 电阻很小,因此输出的高电压有很强的驱动能力,当 bb 接低电压时 npn 截至,pnp 导通,由于三极管的 ec 电阻很小因此输出的低电压

13、有很强的驱动能力,简单的例子,9013 导通时 ec 电阻不到 10 欧,以 Vh=2.5v,vcc=5v计算,高电平输出电流最大=250MA,短路电流 500ma,这个计算同时告诉我们采用推挽输出时一定要小心千万不要出现外部电路短路的可能,否则肯定烧毁芯片,特别是外部驱动三极管时别忘了在三极管的基极加限流电阻。推挽输出电路的形式很多,有些单片机上下都采用 n 型管,但内部逻辑提供互补输出,以上的说明仅仅为了说明推挽的原理,为了更深的理解可以参考功率放大电路。推挽方式可完全独立产生高低电平,推挽方式为低阻,这样,才能保证口线上不分走电压或分走极小的电压(可忽略),保证输出与电源相同的高电平,推

14、挽适用于输出而不适用于输入,因为若对推挽(低阻)加高电平后,I=U/R,I 会很大,将造成口的烧毁。对与 C8051F 的很多型号片子,将 I/O 口设置为推挽方式的做法为:PnMDOUT=0xff,Pn=0x00 ,这样设置 I/O 口为推挽,并输出低电平(可降低功耗) 将 I/O 口设置为漏开方式的做法为:PnMDOUT=0x00,Pn=0x11 ,这样设置 I/O 口为漏开。推挽输出 0 的时候和开漏特性一样 ,就是 1 的时候可以当作直接接 VCC.推挽输出的驱动能力相当强,因为输出 1 就等于接到了 VCC.而同时推挽输出的 IO 也需要注意不要直接接到地,否则一旦输出 1,就等于 VCC 通过内部的场效应管直接到地了,这时候 IO 端发热就很大,时间长就就拜拜了.你看到 DX32 实验板上,按键部分都是串了个 300 欧才到地的, 就是为了避免 IO 误操作,使这些输入变成推挽输出 1 而做的保护.以此为设计依据,一般情况下, 所有的 IO 都尽量避免直接到地,即使这个 IO 你是打算用来做输入的.

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 实用文档 > 工作总结

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报