求助,关于单片机执行顺序 点击:1049 | 回复:8



湛蓝小尔

    
  • 精华:1帖
  • 求助:142帖
  • 帖子:180帖 | 473回
  • 年度积分:14
  • 历史总积分:1399
  • 注册:2014年2月19日
发表于:2016-06-30 16:21:26
楼主
求助帖20分-未结帖

如题,想知道,单片机是怎样的执行程序。

是像plc那样从上往下,不停的刷新吗,


那如何理解a=3000;while(a--);P1^0=1;执行完,类似的时间延迟,才会执行P1^0=1呢,有点想不明白,是什么都不执行,停在那里(不执行,任何下方的语句)等延迟时间到吗,还是像plc一样,一遍一遍的刷新呢


想要用单片机学习一下,做个音乐盒,所以,先要了解下,程序原理,一方面也在搜集硬件资料。


谢谢大家了。




研讨会宣传员_3259

  • [版主]
  • 精华:3帖
  • 求助:110帖
  • 帖子:1927帖 | 14403回
  • 年度积分:102
  • 历史总积分:64749
  • 注册:2020年3月27日
发表于:2016-06-30 20:59:18
1楼

单片机是根据主程序的流程顺序执行的,另有中断程序可以穿插执行。你做音乐盒的找到对应的音乐转换软件,转换成音符的C代码,然后采用PWM控制输出,效果最佳。

研讨会宣传员_3259

  • [版主]
  • 精华:3帖
  • 求助:110帖
  • 帖子:1927帖 | 14403回
  • 年度积分:102
  • 历史总积分:64749
  • 注册:2020年3月27日
发表于:2016-06-30 21:05:35
2楼

如何理解

a=3000;

while(a--);

P1^0=1;

执行完,类似的时间延迟,才会执行P1^0=1呢,有点想不明白,是什么都不执行,停在那里(不执行,任何下方的语句)等延迟时间到吗


你说的这个就是a在那里一只在执行减法运算,减到0后再跳出while循环执行下一条指令P1^0=1;

npu2003

  • 精华:0帖
  • 求助:0帖
  • 帖子:3帖 | 9回
  • 年度积分:4
  • 历史总积分:294
  • 注册:2015年9月14日
发表于:2016-06-30 21:15:03
3楼

从程序来看,a先是赋值3000,然后从3000开始自减并判断是否为非0,当不等于0时,继续自减并判断是否为非0,直到a等于0时退出(这个过程可以理解为延时,延时时间与变量a的值有关),退出后,将P1.0输出高电平,但这种写法(P1^0=1)是不对的。

npu2003

  • 精华:0帖
  • 求助:0帖
  • 帖子:3帖 | 9回
  • 年度积分:4
  • 历史总积分:294
  • 注册:2015年9月14日
发表于:2016-06-30 21:17:02
4楼

至于做音乐盒的话,我一般用ISD系列语音芯片。

梦玉阿梦玉

  • 精华:0帖
  • 求助:0帖
  • 帖子:3帖 | 21回
  • 年度积分:0
  • 历史总积分:22
  • 注册:2016年4月05日
发表于:2016-07-02 10:31:14
5楼

逐条执行。首先a=3000,接下来进入while循环,所以执行a--,直到a=0,跳出循环执行P1^0=1,结束,一般裸奔的话还有一个大循环在,一直重复你这段程序

konglingshneg

  • 精华:0帖
  • 求助:3帖
  • 帖子:4帖 | 12回
  • 年度积分:3
  • 历史总积分:30
  • 注册:2016年7月13日
发表于:2016-07-13 16:17:42
6楼

恩恩,也可以这么说。要具体了解买本汇编书看看

  • 精华:0帖
  • 求助:0帖
  • 帖子:1帖 | 48回
  • 年度积分:0
  • 历史总积分:577
  • 注册:2007年11月24日
发表于:2016-09-03 17:48:19
7楼

单片机是要从主程序调用才可以执行的。

超级大白菜

  • 精华:0帖
  • 求助:0帖
  • 帖子:33帖 | 765回
  • 年度积分:9
  • 历史总积分:783
  • 注册:2015年9月29日
发表于:2017-12-06 16:01:35
8楼

学习了谢谢


热门招聘
相关主题

官方公众号

智造工程师