找回密码
 立即注册
查看: 117|回复: 2

PXMO PXM1端口配置为什么不能分开写

[复制链接]
  • 打卡等级:以坛为家I
  • 打卡总天数:331
  • 最近打卡:2026-07-19 19:09:56
已绑定手机

26

主题

49

回帖

1380

积分

金牌会员

积分
1380
发表于 2026-5-27 02:19:47 | 显示全部楼层 |阅读模式
void key_Init(void)
{
    // 设置 P1.3, P1.5, P1.6, P1.7 为高阻输入 (M1=1, M0=0)
    // 注意:高阻输入必须外部接上拉电阻,否则电平悬浮!
    P1M1 |=  0xe8;
    P1M0 &= ~0xe8;
}

void Input_Init(void)
{   
    // --- P4 口输入设置 ---
    // P4.5, P4.6, P4.7 高阻输入
    P4M1 |=  0xe0;
    P4M0 &= ~0xe0;

//    // --- P2 口输入设置 ---
//    // P2.6, P2.7 高阻输入
    P2M1 |=  0xc0;
    P2M0 &= ~0xc0;

    // --- P0 口输入设置 ---
    // P0.4 ~ P0.7 高阻输入

    P0M1 |=  0xf0;
    P0M0 &= ~0xf0;
    // --- P5 口输入设置 ---
    // P5.2, P5.3 高阻输入
    P5M1 |=  0x0c;
    P5M0 &= ~0x0c;

//    // --- P1 口额外输入设置 ---
//    // P1.4 高阻输入
    P1M1 |=  0x10;
    P1M0 &= ~0x10;     
}

void Output_Init(void)
{
    // --- P4 口输出设置 (合并优化) ---
    // P4.0, P4.1, P4.2, P4.3, P4.4 置为推挽输出 (M0=1, M1=0)
    P4M0 |=  0x1F;      
    P4M1 &= ~0x1F;      
//   
//    // --- P3 口输出设置 ---
//    // P3.2 ~ P3.7 置为推挽输出
    P3M0 |=  0xFC;      
    P3M1 &= ~0xFC;
//   
//    // --- P2 口输出设置  ---
//    // P2.4 置为推挽输出

    P2M0 |=  0x10;      
    P2M1 &= ~0x10;

    // --- PA 口输出设置 ---
    // PA0, PA1, PA2, PA3 置为推挽输出
    PAM0 |=  0x0F;      
    PAM1 &= ~0x0F;      
}



EAXFR = 1;                                                 // 使能访问 XFR
        CKCON = 0x00;                                 // 设置外部数据总线速度为最快
        WTST = 0x00;                                // 设置程序代码等待参数,等待时间为0个时钟,CPU执行程序速度最快
   
//    P0M0 = 0xff; P0M1 = 0x00; ///M0=1  M1=0。 为推挽输出;  M0=0  M1=1。 为高阻输入;   
//    P1M0 = 0x00; P1M1 = 0x00;
//    P2M0 = 0x3f; P2M1 = 0x00;   
//    P3M0 = 0x00; P3M1 = 0x00;
//    P4M0 = 0x00; P4M1 = 0x00;
//    P5M0 = 0x00; P5M1 = 0x00;
//    P6M0 = 0x00; P6M1 = 0x00;       //设置P6口为准双向口模式
//    P7M0 = 0x00; P7M1 = 0x00;       //设置P7口为准双向口模式
//    PAM0 = 0x00; PAM1 = 0x00;       //设置P6口为准双向口模式
//    PBM0 = 0x00; PBM1 = 0x00;
   
    key_Init();    //4个设置按键配置
    Input_Init();  //输入端口配置
    Output_Init(); //输出端口配置

为什么不能自动配置 非得要如下配置

//    P0M0 = 0xff; P0M1 = 0x00; ///M0=1  M1=0。 为推挽输出;  M0=0  M1=1。 为高阻输入;   
//    P1M0 = 0x00; P1M1 = 0x00;
//    P2M0 = 0x3f; P2M1 = 0x00;   
//    P3M0 = 0x00; P3M1 = 0x00;
//    P4M0 = 0x00; P4M1 = 0x00;
//    P5M0 = 0x00; P5M1 = 0x00;
//    P6M0 = 0x00; P6M1 = 0x00;       //设置P6口为准双向口模式
//    P7M0 = 0x00; P7M1 = 0x00;       //设置P7口为准双向口模式
//    PAM0 = 0x00; PAM1 = 0x00;       //设置P6口为准双向口模式
//    PBM0 = 0x00; PBM1 = 0x00;


回复

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:316
  • 最近打卡:2026-07-22 06:56:11
已绑定手机

70

主题

874

回帖

3225

积分

论坛元老

DIY玩家

积分
3225
发表于 2026-5-27 08:01:38 | 显示全部楼层
PxM0和PxM1组成每位对应的状态
即:00 01 10 11 共4种
截图202605270801331664.jpg

永怀这学徒心
回复

使用道具 举报 送花

  • 打卡等级:以坛为家III
  • 打卡总天数:707
  • 最近打卡:2026-07-20 09:09:10

33

主题

3031

回帖

6980

积分

论坛元老

积分
6980
发表于 2026-5-27 09:03:24 | 显示全部楼层
可以。

各有各的好处
参考例程并不是对技术参 考手册的补充,而是对技术参 考手册的解释。
技术参 考手册不应该需要参考例程作为补充,而是解释成了参考例程的样子
回复

使用道具 举报 送花

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2026-7-22 10:31 , Processed in 0.070322 second(s), 53 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表