meili 发表于 2022-10-27 16:03:26

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

<p>问题:51单片机少写了一个循环语句,为什么还能执行循环,错在哪里呢?程序如下:#includevoiddelay(unsignedintt);sbitduan=P2^6;sbitwei=P2^7;unsignedchara;unsignedcharcodetable[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f
<p>答案:↓↓↓<p class="nav-title mt10" style="border-top:1px solid #ccc;padding-top: 10px;">刘利雄的回答:<div class="content-b">网友采纳  程序会一直运行至程序存储器的结尾,然后再从头开始运行.因为程序容量不大,运行速度又很快,人还没有感觉出停顿,程序就又从头执行了.只要有电源,复位正常,有时钟,PC指针就会按照时钟的振荡而不停的自加,除非程序中有改...<p class="nav-title mt10" style="border-top:1px solid #ccc;padding-top: 10px;">慕志国的回答:<div class="content-b">网友采纳  谢谢回答,那您的意思是说,单片机的程序在加电运行后,当main执行完,还会从头再继续执行,周而复始,不停止。如果想让其定在一个地方就要加while(1),是这个意思吗?<p class="nav-title mt10" style="border-top:1px solid #ccc;padding-top: 10px;">刘利雄的回答:<div class="content-b">网友采纳  main()执行完也不一定就从头开始执行,你的程序这样,是因为程序简单,main后面没有别的代码了。如果有别的代码,就不一定能回到程序头了。C语言的程序编译完成后,打开汇编,能看到C程序编译后的汇编语言,想理解程序怎么执行的,顺着汇编语言一句一句的查就知道了。汇编对于理解单片机的结构和运行方式是C不能替代的。在程序遇到一些特殊的问题时,用汇编去检查也往往是最有效甚至是必须的。每种单片机都有其特定的结构和存储访问和映射方式,即使程序存储器是空的,也并不是所有的单片机都能回到程序的起点。
页: [1]
查看完整版本: 51单片机少写了一个循环语句,为什么还能执行循环,错在哪里呢?程序如下:#includevoiddelay(unsignedintt);sbitduan=P2^6;sbitwei=P2^7;unsignedchara;unsignedcharcodetable[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f