单片机-04_端口输入输出讲解

上传人:我** 文档编号:116860003 上传时间:2019-11-17 格式:PPT 页数:98 大小:4.86MB
返回 下载 相关 举报
单片机-04_端口输入输出讲解_第1页
第1页 / 共98页
单片机-04_端口输入输出讲解_第2页
第2页 / 共98页
单片机-04_端口输入输出讲解_第3页
第3页 / 共98页
单片机-04_端口输入输出讲解_第4页
第4页 / 共98页
单片机-04_端口输入输出讲解_第5页
第5页 / 共98页
点击查看更多>>
资源描述

《单片机-04_端口输入输出讲解》由会员分享,可在线阅读,更多相关《单片机-04_端口输入输出讲解(98页珍藏版)》请在金锄头文库上搜索。

1、第三章 端口输入/输出 C8051F020/1/2/3 MCU 是高集成度的混合信号片上系统, 有按8 位端口组织的64 个数字I/O 引脚(C8051F020/2)或 32 个数字I/O 引脚(C8051F021/3)。 低端口(P0、P1、P2 和P3)既可以按位寻址也可以按字 节寻址。高端口(P4、P5、P6 和P7)只能按字节寻址。 P0:80P1:90P2:0A0P3:0B0 P4:84P5:85P6:86P7:96 所有引脚都耐5V 电压,都可以被配置为漏极开路或推挽输 出方式和弱上拉。端口I/O 单元的输出驱动原理框图示于图 3.1。 图3-1 端口I/O 单元功能框图 C805

2、1F020/1/2/3 器件有大量的数字资源需要通过4 个低端 I/O 端口P0、P1、P2 和P3 才能使用。即很多外设没有专 用的引脚做输入输出。 P0、P1、P2 和P3 中的每个引脚既可定义为通用的端口I/O (GPIO)引脚,又可以分配给一个数字外设或功能(例如 :UART0 或/INT1),如图3.2 所示。 图3-2 低端口I/O 功能框图 专讲数据流向 系统设计者控制数字功能的引脚分配,只受可用引脚数的 限制。这种资源分配的灵活性是通过使用优先权交叉开关 译码器实现的。 注意:不管引脚被分配给一个数字外设或是作为通用I/O, 总是可以通过读相应的数据寄存器得到端口I/O 引脚的

3、状态 。读端口的数据寄存器是指开的“读引脚门” 端口1 的引脚可以用做ADC1 的模拟输入。 当对片外XRAM 进行读写时,外部存储器接口(地址总线 、数据总线、控制总线)可以在低端口或高端口有效。 一旦低端口用作外部数据存储器接口,就不能在作GPIO或 外设输入/输出接口了。 有关外部存储器接口的详细信息后面细讲。 高端口(存在于C8051F020/2 中)可以作为GPIO 引脚按字 节访问。高端口也可以作外部数据存储器接口。 3.1 端口0 3 和优先权交叉开关译码器 优先权交叉开关译码器,或称为“交叉开关”。 工作原理: 交叉开关按优先权顺序将端口0 3 的引脚分配给器件上的 数字外设(

4、UART、SMBus、PCA、定时器等)。端口引 脚的分配顺序是从P0.0 开始,可以一直分配到P3.7。 为数字外设分配端口引脚的优先权顺序列于图3.3,UART0 具有最高优先权,而CNVSTR 具有最低优先权。 图3-3 优先权交叉开关译码表 3.1.1 交叉开关引脚分配 当交叉开关配置寄存器XBR0、XBR1 和XBR2 中外设的对 应使能位被设置为逻辑1时,交叉开关将端口引脚分配给 外设,详情如下。 位7: CP0E:比较器0 输出使能位 0:CP0 不连到端口引脚。 1:CP0 连到端口引脚。 位6: ECI0E:PCA0 外部计数器输入使能位 0:PCA0 外部计数器输入不连到端

5、口引脚。 1:PCA0 外部计数器输入连到端口引脚。 XBR0:端口I/O 交叉开关寄存器0 XBR0:端口I/O 交叉开关寄存器0 位5-3: PCA0ME:PCA0 模块I/O 使能位 000:所有的PCA0 I/O 都不连到端口引脚。 001:CEX0 连到端口引脚。 010:CEX0、CEX1 连到2 个端口引脚。 011:CEX0、CEX1、CEX2 连到3 个端口引脚。 100:CEX0、CEX1、CEX2、CEX3 连到4 个端口引脚。 101:CEX0、CEX1、CEX2、CEX3、CEX4 连到5 个端口 引脚。 110:保留。 111:保留 位2: UART0EN:UART

6、0 I/O 使能位。 0:UART0 I/O 不连到端口引脚。 1:UART0 的TX 连到P0.0,RX 连到P0.1 XBR0:端口I/O 交叉开关寄存器0 位1: SPI0EN:SPI 总线I/O 使能位。 0:SPI0 I/O 不连到端口引脚。 1:SPI0 的SCK、MISO、MOSI 和NSS 连到4 个端口引脚。 位0: SMB0EN:SMBus 总线I/O 使能位 0:SMBus0 I/O 不连到端口引脚。 1:SMBus0 的SDA 和SCL 连到2 个端口引脚。 XBR0:端口I/O 交叉开关寄存器0 XBR1:端口I/O 交叉开关寄存器1 位7: SYSCKE:/SYSC

7、LK 输出使能位 0:/SYSCLK 不连到端口引脚。 1:/SYSCLK 连到端口引脚。 位6: T2EXE:T2EX 使能位 0:T2EX 不连到端口引脚。 1:T2EX 连到端口引脚。 位5: T2E:T2 使能位 0:T2 不连到端口引脚。 1:T2 连到端口引脚。 位4: INT1E:/INT1 使能位。 0:/INT1 不连到端口引脚。 1:/INT1 连到端口引脚。 位3: T1E:T1 使能位 0:T1 不连到端口引脚。 1:T1 连到端口引脚。 XBR1:端口I/O 交叉开关寄存器1 位2: INT0E:/INT0 使能位 0:/INT0 不连到端口引脚。 1:/INT0 连

8、到端口引脚。 位1: T0E:T0 使能位 0:T0 不连到端口引脚。 1:T0 连到端口引脚。 位0: CP1E:比较器1 输出使能位 0:CP1 不连到端口引脚。 1:CP1 连到端口引脚。 XBR1:端口I/O 交叉开关寄存器1 XBR2:端口I/O 交叉开关寄存器2 位7: WEAKPUD:弱上拉禁止位。 0:弱上拉全局使能。 1:弱上拉全局禁止。 XBR2:端口I/O 交叉开关寄存器2 位6: XBARE:交叉开关使能位 0:交叉开关禁止。端口0、1、2 和3 的所有引脚被强制为 输入方式。 1:交叉开关使能。 位5: 未用。读0,写=忽略。 位4: T4EXE:T4EX 输入使能位

9、 0:T4EX 不连到端口引脚。 1:T4EX 连到端口引脚。 位3: T4E:T4 输入使能位 0:T4 不连到端口引脚。 1:T4 连到端口引脚。 位2: UART1E:UART1 I/O 使能位 0:UART1 I/O 不连到端口引脚。 1:UART1 TX 和RX 连到两个端口引脚。 XBR2:端口I/O 交叉开关寄存器2 位1: EMIFLE:外部存储器接口低端口使能位 0:EMIF不使用低端口。 这时P0.7、P0.6 和P0.5 的功能由交叉开关或端口锁存器决定。 1: EMIF使用低端口。 如果EMI0CF.4 =0(外部存储器接口为复用方式)则P0.7 (/WR)、P0.6

10、(/RD)和P0.5 (/ALE)被交叉开关跳过,它们的输 出状态由端口锁存器和外部存储器接口决定。 如果EMI0CF.4 =1(外部存储器接口为非复用方式) 则P0.7 (/WR)和P0.6 (/RD)被交叉开关跳过,它们的输出状态 由端口锁存器和外部存储器接口决定。 XBR2:端口I/O 交叉开关寄存器2 位0: CNVSTE:外部转换启动输入使能位 0:CNVSTR 不连到端口引脚。 1:CNVSTR 连到端口引脚。 XBR2:端口I/O 交叉开关寄存器2 例如,如果UART0EN位(XBR0.2)被设置为逻辑1,则 TX0 和RX0 引脚将分别被分配到P0.0 和P0.1。因为UART

11、0 有最高优先权,所以当UART0EN 位被设置为逻辑1时其引 脚将总是被分配到P0.0 和P0.1。 如果一个数字外设的使能位未被设置为逻辑1,则其端口将 不能通过器件的端口引脚被访问。 注意:当选择了串行通信外设(即SMBus、SPI 或UART) 时,交叉开关将为所有相关功能分配引脚。例如,不能为 UART0 功能只分配TX0 引脚而不分配RX0 引脚。被使能的 外设的每种组合导致唯一的器件引脚分配。 端口0 3 中所有未被交叉开关分配的引脚都可以作为通用 I/O(GPI/O)引脚,通过读或写相应的端口数据寄存器访 问,这是一组既可以按位寻址也可以按字节寻址的SFR。 被交叉开关分配的那

12、些端口引脚的输出状态受使用这些引脚 的数字外设的控制。向端口数据寄存器(或相应的端口位) 写入时对这些引脚的状态没有影响。 不管交叉开关是否将引脚分配给外设,读一个端口数据寄存 器(或端口位)将总是返回引脚本身的逻辑状态。 唯一的例外发生在执行读-修改-写指令(ANL、ORL、XRL 、CPL、INC、DEC、DJNZ、JBC、CLR、SET 和位 写操作)期间。在读-修改-写指令的读周期,所读的值是端 口数据寄存器的内容,而不是端口引脚本身的状态。 注意: 因为交叉开关寄存器影响器件外设的引脚分配,所以它们通 常在外设被配置前由系统的初试化代码配置。一旦配置完毕 ,将不再对其重新编程。 实际

13、上在设计硬件电路时就已经考虑完成了。 注意: 交叉开关寄存器被正确配置后,通过将XBARE(XBR2.6) 设置为逻辑1来使能交叉开关。在XBARE 被设置为逻辑1 之前,端口0-3 的输出驱动器被自动地禁止,以防止对交叉 开关寄存器和其它寄存器写入时在端口引脚上产生争用。 注意: 被交叉开关分配给输入信号(例如RX0)的引脚所对应的输 出驱动器应被明确禁止;以保证端口数据寄存器和 PnMDOUT 寄存器的值不影响这些引脚的状态。(开漏 XBR1 = 0x14; XBR2 = 0x42) 17.2 端口4-7(仅C8051F020/2) 端口4-7 的所有端口引脚都可用作通用I/O(GPIO)

14、,通过 读和写相应的端口数据寄存器访问每个端口,这些端口数据 寄存器是一组按字节寻址的特殊功能寄存器。 读端口数据寄存器时,返回的是端口引脚本身的逻辑状态。 例外的情况发生在执行读-修改-写指令(ANL、ORL、XRL 、JBC、CPL、INC、DEC、DJNZ、JBC、CLR、SET 及位 传送操作)期间。在读-修改-写指令的读周期,读入的是端 口数据寄存器的内容,而不是端口引脚本身的状态。 P74OUT:端口7 - 4 输出方式寄存器 位7: P7H:端口7 高4 位输出方式位。 0:P7.7:4配置为漏极开路。 1:P7.7:4配置为推挽方式。 位6: P7L:端口7 低4 位输出方式位

15、。 0:P7.3:0配置为漏极开路。 1:P7.3:0配置为推挽方式。 位5: P6H:端口6 高4 位输出方式位。 0:P6.7:4配置为漏极开路。 1:P6.7:4配置为推挽方式。 位4: P6L:端口6 低4 位输出方式位。 0:P6.3:0配置为漏极开路。 1:P6.3:0配置为推挽方式。 位3: P5H:端口5 高4 位输出方式位。 0:P5.7:4配置为漏极开路。 1:P5.7:4配置为推挽方式。 P74OUT:端口7 - 4 输出方式寄存器 位2: P5L:端口5 低4 位输出方式位。 0:P5.3:0配置为漏极开路。 1:P5.3:0配置为推挽方式。 位1: P4H:端口4 高

16、4 位输出方式位。 0:P4.7:4配置为漏极开路。 1:P4.7:4配置为推挽方式。 位0: P4L:端口4 低4 位输出方式位。 0:P4.3:0配置为漏极开路。 1:P4.3:0配置为推挽方式。 P74OUT:端口7 - 4 输出方式寄存器 端口4 数据寄存器 位7-0: P4.7:0:端口4 输出锁存器位。 写 输出出现在I/O 引脚。 0:逻辑低电平输出。 1:逻辑高电平输出。(若相应的P74OUT 位 = 0,则为漏极 开路)。 读 返回I/O 引脚的状态。 0:P4.n 为逻辑低电平。 1:P4.n 为逻辑高电平。 注:P4.7(/WR)、P4.6(/RD)和P4.5(ALE) 可以由外 部数据存储器接口驱动。 P5:端口5 数据寄存器 位7-0: P5.7:0:端口5 输出锁存器位。 写 输出出现在I/O 引脚。 0:逻辑低电平输出。 1:逻辑高电平输出。(若相应的P74OUT 位 = 0,则为漏极 开路)。读 返回I/O 引脚的状态

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号