- 打卡等级:以坛为家I
- 打卡总天数:331
- 最近打卡:2026-07-19 19:09:56
已绑定手机
金牌会员
- 积分
- 1380
|
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;
|
|