51单片机少写了一个循环语句,为什么还能执行循环,错在哪里呢-查字典问答网
分类选择

来自慕志国的问题

  51单片机少写了一个循环语句,为什么还能执行循环,错在哪里呢?程序如下:#includevoiddelay(unsignedintt);sbitduan=P2^6;sbitwei=P2^7;unsignedchara;unsignedcharcodetable[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f

  51单片机少写了一个循环语句,为什么还能执行循环,错在哪里呢?程序如下:

  #include

  voiddelay(unsignedintt);

  sbitduan=P2^6;

  sbitwei=P2^7;

  unsignedchara;

  unsignedcharcodetable[]=

  {

  0x3f,0x06,0x5b,0x4f,

  0x66,0x6d,0x7d,0x07,

  0x7f,0x6f,0x77,0x7c,

  0x39,0x5e,0x79,0x71

  };

  voidmain()

  {

  wei=1;

  P0=0xc0;

  wei=0;

  for(a=0;a0;i--)

  for(j=200;j>0;j--);

  }

  这个程序应该是到显示FFFFFF,6个数码管都显示F就应该停止了吧.为什么会不停的又从0开始不停新循环呢,就好像加上了while(1).

3回答
2020-12-28 11:42
我要回答
请先登录
刘利雄

  程序会一直运行至程序存储器的结尾,然后再从头开始运行.因为程序容量不大,运行速度又很快,人还没有感觉出停顿,程序就又从头执行了.只要有电源,复位正常,有时钟,PC指针就会按照时钟的振荡而不停的自加,除非程序中有改...

2020-12-28 11:46:34
慕志国

  谢谢回答,那您的意思是说,单片机的程序在加电运行后,当main执行完,还会从头再继续执行,周而复始,不停止。如果想让其定在一个地方就要加while(1),是这个意思吗?

2020-12-28 11:50:36
刘利雄

  main()执行完也不一定就从头开始执行,你的程序这样,是因为程序简单,main后面没有别的代码了。如果有别的代码,就不一定能回到程序头了。C语言的程序编译完成后,打开汇编,能看到C程序编译后的汇编语言,想理解程序怎么执行的,顺着汇编语言一句一句的查就知道了。汇编对于理解单片机的结构和运行方式是C不能替代的。在程序遇到一些特殊的问题时,用汇编去检查也往往是最有效甚至是必须的。每种单片机都有其特定的结构和存储访问和映射方式,即使程序存储器是空的,也并不是所有的单片机都能回到程序的起点。

2020-12-28 11:54:18

最新问答

推荐文章

猜你喜欢

附近的人在看

推荐阅读

拓展阅读

  • 大家都在看
  • 小编推荐
  • 猜你喜欢
  •