打印
[其它应用]

IO端口操作

[复制链接]
147|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
tpgf|  楼主 | 2024-7-1 08:26 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
一、SH79F9476 I/O端口介绍
1. 特性
SH79F9476提供了30/26位可编程双向 I/O 端口;
端口数据在寄存器Px中;
端口控制寄存器PxCRy是控制端口作为输入还是输出;
端口作为输入时,每个I/O端口均带有PxPCRy控制的内部上拉电阻。
有些I/O引脚功能是复用的,所有功能都允许时,CPU存在优先权避免冲突。
2. 端口模块图



3. 寄存器
(1)端口控制寄存器 PxCRy
寄存器PxCRy用来控制端口的输入、输出功能,其中x的取值范围是0~3, y的取值是0~7 。
位定义如下表所示:



值0为输入模式;
值1为输出模式。
代码示例:

P1CR |=0x01;    //配置Port P1端口的bit0为输出模式


(2)端口上拉电阻控制寄存器
当IO端口作为输入时,每个I/O端口带有由PxPCRy控制的内部上拉电阻,详细定义如下:



值0:内部拉电阻关闭;
值1:内部上拉电阻开启。
使用示例:

P0PCR |= 0x02;   // P0PCR.1 内部上拉电阻开启


(3)端口数据寄存器
端口数据寄存器用来读写端口值,定义如下:



使用示例:

P1_0 = 0;       // 控制P1_0pin输出低电平
P1 = 0;         // 控制P1 8个引脚全输出低电平


(4)P0口输出电压控制寄存器
P0.0~P0.3口可输出 1/2VDD 电压,由P0V0单独控制。



示例,让P0_0输出0.2V电压

#include "SH79F9476.h"

void main(){
        // 配置Port P0端口Bit0为输出模式
        P0CR |= 0x01;
        // P0的 0-3 端口输出2V
        P0V0 = 0x0f;
        // 输出低电平
        P0_0 = 1;
        while(1);
}


(5)端口模式选择寄存器
PIMS0
控制P0口输入电平逻辑控制,即控制输入时的高、低电平阈值。



值说明:



PIMS1
控制功能与PIMS0类似 。



其中:

P15S、P14S 值定义与 P07S、P06S 值定义相同,
P11S、P10S 值定义与 P01S、P00S 值定义相同。
PIMS2



其中:

P27S、P26S的P07S、P06S 值定义相同。
PIMS3



其中:P35S~P30S 值定义与P07S、P06S 值定义相同。

4. 其它说明
输入端口读操作直接读引脚电平。
输出端口读操作的输入源有两种,一种是从端口数据寄存器读取,另一种是直接读引脚电平。
用读取指令来区分:读 - 改 - 写指令是读寄存器,而其它指令读引脚电平。
不管端口是否共享为其它功能,对端口写操作都是针对端口数据寄存器。
二、示例程序
下面简单的示例程序,设置P0端口的:

Pin0 :输入状态
Pin1 :输出模式,固定输出低电平
Pin2 :输出模式
Pin2的值跟随Pin0变化,Pin0接地时,Pin2输出低电平;Pin0接高电平时,Pin2输出高电平。

#include "SH79F9476.h"
#include "cpu.h"

void main()
{
          P0CR &= 0xFE;   // 配置Port P0端口的bit0为输入模式
        P0CR |= 0x02;         // 配置Port P0端口bit1为输出模式
        P0CR |= 0x04;   // Port P0 bit2 为输出模式
        P0V0 = 0x00;                // 正常电压输出
        P0_1 = 0;
        while(1){
                // 读取bit0
                P0_2 = P0_0;
        }
}


本系列博文代码开源地址:
https://gitee.com/xundh/learn-sinowealth-51
————————————————

                            版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

原文链接:https://blog.csdn.net/xundh/article/details/137346435

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1527

主题

14500

帖子

9

粉丝