找回密码
 立即注册
查看: 43|回复: 1

【官网例子分析系列】例子02--跑马灯。

[复制链接]
  • TA的每日心情
    开心
    17 小时前
  • 签到天数: 24 天

    [LV.4]偶尔看看III

    36

    主题

    204

    回帖

    362

    积分

    中级会员

    积分
    362
    发表于 2024-5-3 22:46:35 | 显示全部楼层 |阅读模式
    本帖最后由 durongze 于 2024-5-3 23:17 编辑

    注意事项:
        通常每个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:使能端口内部的下拉电阻
    ----------------------------------------------------------------------------------
    原理图:
    led-schematic-mcu.png led-schematic.png

    pnp.png

    ----------------------------------------------------------------------------------
    例子分析:
        WTST = 0;  //设置程序指令延时参数,赋值为0可将CPU执行指令的速度设置为最快
        EAXFR = 1; //扩展寄存器(XFR)访问使能
        CKCON = 0; //提高访问XRAM速度

        P0M1 = 0x30;   P0M0 = 0x30;   //设置P0.4、P0.5为漏极开路(实验箱加了上拉电阻到3.3V)
        P1M1 = 0x30;   P1M0 = 0x30;   //设置P1.4、P1.5为漏极开路(实验箱加了上拉电阻到3.3V)
        P2M1 = 0x3c;   P2M0 = 0x3c;   //设置P2.2~P2.5为漏极开路(实验箱加了上拉电阻到3.3V)
        P3M1 = 0x50;   P3M0 = 0x50;   //设置P3.4、P3.6为漏极开路(实验箱加了上拉电阻到3.3V)
        P4M1 = 0x3c;   P4M0 = 0x3c;   //设置P4.2~P4.5为漏极开路(实验箱加了上拉电阻到3.3V)
        P5M1 = 0x0c;   P5M0 = 0x0c;   //设置P5.2、P5.3为漏极开路(实验箱加了上拉电阻到3.3V)
        P6M1 = 0x00;   P6M0 = 0xff;   //设置为推挽输出
        P7M1 = 0x00;   P7M0 = 0x00;   //设置为准双向口

        P40 = 0;                //LED Power On

        while(1)
        {
            P60 = 0;                //LED On
            delay_ms(250);
            P60 = 1;                //LED Off

            P61 = 0;                //LED On
            delay_ms(250);
            P61 = 1;                //LED Off

            P62 = 0;                //LED On
            delay_ms(250);
            P62 = 1;                //LED Off

            P63 = 0;                //LED On
            delay_ms(250);
            P63 = 1;                //LED Off

            P64 = 0;                //LED On
            delay_ms(250);
            P64 = 1;                //LED Off

            P65 = 0;                //LED On
            delay_ms(250);
            P65 = 1;                //LED Off

            P66 = 0;                //LED On
            delay_ms(250);
            P66 = 1;                //LED Off

            P67 = 0;                //LED On
            delay_ms(250);
            P67 = 1;                //LED Off
        }


    回复 送花

    使用道具 举报

  • TA的每日心情
    开心
    17 小时前
  • 签到天数: 24 天

    [LV.4]偶尔看看III

    36

    主题

    204

    回帖

    362

    积分

    中级会员

    积分
    362
     楼主| 发表于 2024-5-3 23:15:38 | 显示全部楼层
    我有个疑问,那就是P1-P5,P7为什么要设置,看起来毫无关系啊。
    回复 支持 反对 送花

    使用道具 举报

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

    本版积分规则

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

    GMT+8, 2024-5-20 19:15 , Processed in 0.093404 second(s), 36 queries .

    Powered by Discuz! X3.5

    © 2001-2024 Discuz! Team.

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