wanli 发表于 2026-5-27 02:19:47

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

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=1M1=0。 为推挽输出;M0=0M1=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=1M1=0。 为推挽输出;M0=0M1=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;


狂热主宰 发表于 2026-5-27 08:01:38

PxM0和PxM1组成每位对应的状态
即:00 01 10 11 共4种


_奶咖君_ 发表于 2026-5-27 09:03:24

可以。

各有各的好处
页: [1]
查看完整版本: PXMO PXM1端口配置为什么不能分开写