【单片机到嵌入式之路】序列之三:苦逼的CPU .pdf

  • 浏览量:9790
  • 下载量:16
  • 资料大小:0 B
  • 日期:2014-01-09
  • 上传者:冰山一角
  • 分享
  • 评论
  • 举报
  • 收藏

资料描述

    软件平台
    硬件平台:单片机
    编译环境:keil


    二、苦逼的cpu


    【事故起因】:单片机是单核的,所以在做多线程问题的时候,我们要考虑的太多。但是大部分人都会让单片机一直工作,比如while死循环,然后就抱怨单片机太简单了,只能点灯,其它的事情就不行了。


    【现场分析】:1.单片机是单核的;


                              2.做多线程,方法两种:a.上操作系统,b.仿操作系统;


           3.自己想释放单片机的cpu,但是格局有限,就怪单片机;


          4.要想马儿跑,必须给马儿吃草。要想单片机多工作,必须优化代码,多下功夫。


    【案例列举】:单灯闪烁


    void main(void)


    {


    led_init();  //led初始化


    while(1)


    {


    led = on;      //led亮


    delay_ms(1000); //延时1s


    led = off;    //led灭


    delay_ms(1000); //延时1s


    }


    }


    【案例分析】:单灯闪烁分析





    声明几点:1.如果你只用单片机作为单灯闪烁,那么单片机就完全可以;


                  2.如果你不想玩那么高级,那么单机这样也是ok的;


      3.如果你想玩高级的,那么肯定不行。


      分析:咋一看,程序没有什么问题,但是暗藏玄机。


    1.程序被死循环卡死;


    2.死循环里面就是一个产生2s周期的频率,那么灯就是2s闪烁一次; 


    3.单片机就这样被你“征服”了。但是你这是把单片机浪费了。


    这是单片机cpu的苦啊,他是没有口啊,有口要骂人的哦!o(∩_∩)o哈哈~

















    三、单片机cpu的苦衷——请释放cpu


    1.硬件电路分析








    用上面的电路来做分析,当p1口为低电平的时候,led灯才亮,高电平则灭。


    1.软件分析


    由硬件可以知道,我们可以通过宏定义来对接口进行简单的定义


    #define  led_light  p1                 //le
评论(0)

登录后可评论,请 登录注册

   
相关资料
换一换