[经验] 【R7F0C809】DIY第三篇--端口说明和举例

youzizhile   2015-8-28 23:09 楼主
1 R7F0C809 产品的端口结构1.1 1.1端口 0
端口 0 是带输出锁存器的输入/输出端口,能通过端口模式寄存器 0 (PM0)以位为单位指定输入模式或者输出模式。当将 P00 ~ P07 引脚用作输入端口时,能通过上拉电阻选择寄存器 0 (PU0)以位为单位使用内部上拉电阻。
当将 P06、 P07 引脚用作输入端口时,能通过下拉电阻选择寄存器 0 (PD0)以位为单位使用内部下拉电阻。
能通过端口输出模式寄存器0 (POM0),以位为单位将 P00 ~ P05 引脚的输出设定为 P 沟道漏极开路输出(VDD 耐压)。
能通过端口输出模式寄存器0 (POM0),以位为单位将 P06、 P07 引脚的输出设定为 N 沟道漏极开路输出(VDD 耐压)。
端口 0 作为复用功能,有串行接口的数据输入 / 输出、时钟输入 / 输出、模拟输入、键返回输入和外部中断请求输入。
在产生复位信号后,P00 ~ P06变为输入模式, P07 变为模拟输入模式。
1.2 1.21. 1.2端口 1
端口 1 是带输出锁存器的输入 / 输出端口,能通过端口模式寄存器 1 (PM1)以位为单位指定输入模式或者输出模式。当将 P10 ~ P16引脚用作输入端口时,能通过上拉电阻选择寄存器 1 (PU1)以位为单位使用内部上拉电阻。当将 P10 ~ P15 引脚用作输入端口时,能通过下拉电阻选择寄存器 1 (PD1)以位为单位使用内部下拉电阻。
能通过端口输出模式寄存器1 (POM1),以位为单位将 P10 ~ P15 引脚的输出设定为 N 沟道漏极开路输出(VDD 耐压)。
端口 1 作为复用功能,有串行接口的数据输出、时钟输入 / 输出、模拟输入、键返回输入、时钟 / 蜂鸣器输出、定时器的输入 /输出和外部中断请求输入。
在产生复位信号后,P10 ~ P16变为模拟输入模式。
1.3 1.3 1.3端口 4
端口 4 是带输出锁存器的输入 / 输出端口,能通过端口模式寄存器 4 (PM4)以位为单位指定输入模式或者输出模式。当将 P40 引脚用作输入端口时,能通过上拉电阻选择寄存器4 (PU4)以位为单位使用内部上拉电阻。
端口 4 作为复用功能,有闪存编程器 / 调试器的数据输入 / 输出。
1.4 1.4端口 12
端口 12 是输入专用端口, P125引脚能通过上拉电阻选择寄存器12 (PU12)使用内部上拉电阻(当设定为 RESET 输入 (PORTSELB=1)时,内部上拉电阻总是有效)。
端口 12 作为复用功能,有键返回输入和复位输入。
1.5 1.5端口 13
端口 13 是输入专用端口。
端口 13 作为复用功能,有定时器输入和外部中断请求输入。
2 控制端口功能的寄存器
通过以下寄存器控制端口。
• 端口模式寄存器0、 1、 4 (PM0、 PM1、 PM4):设定输入输出
• 端口寄存器0、 1、 4、 12、 13 (P0、 P1、 P4、 P12、 P13):设定端口输出锁存器的值的寄存器
• 上拉电阻选择寄存器0、 1、 4、 12(PU0、 PU1、 PU4、 PU12):设定是否使用内部上拉电阻的寄存器
• 下拉电阻选择寄存器0、 1 (PD0、 PD1)注:设定是否使用内部下拉电阻的寄存器
• 端口输出模式寄存器0、 1 (POM0、 POM1):以位为单位设定COMS 输出 /N 沟道漏极开路输出或者 CMOS 输出/P 沟道漏极开路输出的寄存器
• 端口模式控制寄存器0、 1 (PMC0、 PMC1):以位为单位设定数字输入 / 输出或者模拟输入的寄存器
• 外围I/O重定向寄存器(PIOR):设定允许或者禁止外围I/O 重定向功能的寄存器
3 端口操作说明
如下所示,端口的运行因输入 / 输出模式的设定而不同。
3.1 3 3.1输入/输出端口的写操作
(1) 输出模式的情况
能通过传送指令给输出锁存器写值,并且从引脚输出输出锁存器的内容。
保持被写在输出锁存器中的数据,直到下次写数据为止。
在产生复位信号时清除输出锁存器的数据。
(2) 输入模式的情况
通过传送指令,给输出锁存器写值,但是因输出缓冲器处于 OFF 状态而引脚的状态不发生变化。因此,能对同时具有输入和输出功能的端口进行字节写操作。
保持被写在输出锁存器中的数据,直到下次写数据为止。
在产生复位信号时清除输出锁存器的数据。
3.2 3.2 3.2输入/输出端口的读操作
(1) 输出模式的情况
能通过传送指令读输出锁存器的内容,但是输出锁存器的内容不发生变化。
(2) 输入模式的情况
能通过传送指令读引脚状态,但是输出锁存器的内容不发生变化。
3.3 3. 3.3输入/输出端口的运算
(1) 输出模式的情况
对输出锁存器的内容进行运算,将结果写到输出锁存器,并且从引脚输出输出锁存器的内容。
保持被写在输出锁存器中的数据,直到下次写数据为止。
在产生复位信号后清除输出锁存器的数据。
(2) 输入模式的情况
读引脚电平并且对其内容进行运算,将运算结果写到输出锁存器,但是因输出缓冲器处于 OFF 状态而引脚的状态不发生变化。因此,能对同时具有输入和输出功能的端口进行字节写操作。
在产生复位信号后清除输出锁存器的数据。
4 设计说明
通过控制6位8段LED的例子来说明R7F0C809的IO操作步骤和注意事项。
分别将P00 ~ P05 连接到控制 LED 的位的 COM引脚,将 P06、 P07 以及P10 ~ P15 连接到控制 LED的段的 SEG引脚的例子如图所示。
硬件连接原理图.png
硬件连接原理图
引脚定义.png
IO定义
主程序流程图.JPG
主程序流程图
5 寄存器设定
此处对控制 LED的端口的设定进行说明。设定后,通过控制 P15 ~ P10、P07 ~ P00 引脚,将对应数字显示到 LED。
1. 将PMC0寄存器的PMC07位置“0”, P07引脚置为数字输入/输出模式。
2. 将PMC1寄存器的PMC15~PMC10位置“0”, P15~P10引脚置为数字输入/输出模式。
3. 将POM0寄存器的POM07~POM00位置“1”, P05~P00引脚置为P沟道漏极开路输出模式,P06、P07引脚置位N沟道漏极开路输出模式(VDD耐压)。
4 . 将POM1寄存器的POM15~POM10位置“1”, P15~P10引脚置为N沟道漏极开路输出模式 (VDD耐压)。
5. 将PM0寄存器的PM07~PM00位置“0”, P07~P00引脚置为输出模式。
6. 将PM1寄存器的PM15~PM10位置“0”, P15~P10引脚置为输出模式。
6 注意事项6.1 6.1有关对端口寄存器 nPn)的位操作指令的注意事项
在对同时具有输入和输出功能的端口执行位操作指令时,除了操作对象的位以外,也可能改写非操作对象的输入端口的输出锁存器的值。
因此,建议在将任意的端口从输入模式切换为输出模式前重新写输出锁存器的值。
例当 P00 为输出端口并且 P01 ~ P07为输入端口(引脚状态全部为高电平)而且端口 0 的输出锁存器值为“00H” 时,如果通过位操作指令将输出端口 P00 的输出从低电平改为高电平,端口 0 的输出锁存器的值就变为“FFH”。
说明: PMnm 位为 “1”的端口的 Pn寄存器的写对象是输出锁存器,而读对象是引脚状态。
在 RL78 微控制器内部,位操作指令按照以下顺序执行:
<1> 以 8 位为单位读 Pn 寄存器。
<2> 操作 1 位对象位。
<3> 以 8 位为单位写 Pn 寄存器。
在 <1> 时,读输出端口 P00 的输出锁存器的值 “0”,并且读输入端口 P01 ~ P07 的引脚状态。此时,如果 P01 ~ P07 的引脚状态为高电平,读取值就为 “FEH”。
通过 <2>的操作,值变为 “FFH”。
通过 <3>的操作,给输出锁存器写 “FFH”。
6.2 6.2引脚设定的注意事项
有关分配了多个复用功能的输出引脚,需要将不使用的复用功能的输出设置为初始状态(回避输出的冲突),在通过设定外围 I/O 重定向寄存器 (PIOR)给引脚分配功能时也同样。有关复用输出,请参照 “《R7F0C806-809 用户手册 硬件篇》第4.5节 使用复用功能时的寄存器设定 ”。
对于用作输入的引脚,复用功能的输出无效 (缓冲器输出为Hi-Z),因此不需要进行处理。
为了实现低功耗,停止不使用的功能,包括只有输入或者没有输入 /输出的模块。
我的其他帖子: 2:【R7F0C809】DIY第二篇--开发环境搭建完成 1:【R7F0C809】DIY第一篇--开发板靓照分享 本帖最后由 youzizhile 于 2015-8-31 22:28 编辑
每一刻都是崭新的,加油!

回复评论

暂无评论,赶紧抢沙发吧
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复