durongze 发表于 2024-5-3 21:42:28

【官网例子分析系列】例子01--端口模式配置。


注意事项:
    通常io口有8种模式:浮空输入,上拉输入,下拉输入,模拟输入,推挽输出,复用推挽,开漏输出,复用开漏
    但本mcu有4种模式:00准双向口,01推挽输出,10高阻输入,11开漏模式。
------------------------------------------------------------------------------------------------

概念理解:
总共 8个 端口,端口数据寄存器用Px表示,位用Px.n表示
1.每个端口2个配置寄存器,PxM0,PxM1;两个模式寄存器对应的指定位有四种配置:
00准双向口,01推挽输出,10高阻输入,11开漏模式
2.每个端口1个上拉电阻控制寄存器,PxPU;
0:禁止端口内部的 :禁止端口内部的 4.1K上拉
1:使能端口内部的 :使能端口内部的 4.1K上拉
3.每个端口1个施密特触发控制寄存器,PxNCS;
0:使能端口的施密特触发功能。(上电复位后默认使能施密特触发)
1:禁止端口的施密特触发功能。
4.每个端口1个电平转换速度控制寄存器,PxSR;
0:电平转换速度快,相应的上下冲会比较大
1:电平转换速度慢,相应的上下冲比较小
5.每个端口1个驱动电流控制寄存器,PxDR;
0:增强驱动能力
1:一般驱动能力
6.每个端口1个数字信号输入使能控制寄存器,PxIE;
0:禁止数字信号输入。
1:使能数字信号输入。
7.每个端口1个下拉电阻控制寄存器,PxPD;
0:禁止端口内部的下拉电阻
1:使能端口内部的下拉电阻
------------------------------------------------------------------------------------------------
例子分析:
    WTST = 0;   //设置程序指令延时参数,赋值为0可将CPU执行指令的速度设置为最快
    EAXFR = 1;//扩展寄存器(XFR)访问使能
    CKCON = 0; //提高访问XRAM速度
    /*********************P0端口开始**********************/
    // 因为00为准双向口,01为推挽输出,10为高阻输入,11为开漏模式
    P0M0 = 0x00;                              //设置P0.0~P0.7为双向口模式
    P0M1 = 0x00;
    /*详细解释:P0M0 = 0x00 的意思是 P00到P07的M0都为0, P0M1 = 0x00 的意思是 P00到P07的M1都为0,
                         也就是说P00的M0和M1的组合值为00,即P00为准双向口, 同理P01到P07的M0和M1的组合值都为00,即都为准双向口*/
    /*********************P0端口结束**********************/

    /*********************P1端口开始**********************/

    P1M0 = 0xff;                              //设置P1.0~P1.7为推挽输出模式
    P1M1 = 0x00;
    /*详细解释: P10的M0为1,M1为0,即P10的M0和M1的组合值为01,也就是说P10为推挽输出。P11-P17也是同理。*/


    // P1M0 = 0xf0;                              //设置P1.4~P1.7为推挽输出模式,设置P1.0~P0.3为双向口模式
    // P1M1 = 0x00;
    /*********************P1端口结束**********************/


    P2M0 = 0x00;                              //设置P2.0~P2.7为高阻输入模式
    P2M1 = 0xff;
    // P2M0 = 0x00;                              //设置P2.0~P2.3为高阻输入模式,设置P2.4~P2.7为双向口模式
    // P2M1 = 0x0f;

    P3M0 = 0xff;                              //设置P3.0~P3.7为开漏模式
    P3M1 = 0xff;
    // P3M0 = 0x0f;                              //设置P3.0~P3.3为开漏模式,设置P3.4~P3.7为高阻输入模式
    // P3M1 = 0xff;

页: [1]
查看完整版本: 【官网例子分析系列】例子01--端口模式配置。