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;
PxM0和PxM1组成每位对应的状态
即:00 01 10 11 共4种
可以。
各有各的好处
页:
[1]