打印

技术深究

[复制链接]
918|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
星星ARM|  楼主 | 2015-5-29 08:02 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
在51单片机执行完(第一次)主程序为什么还会循环,并没有循环语句,为什么?

主程序就是简单的四句话如下:

   Void main(void)

   Led=0;
   延时;
  led=1;
  延时;

正常现象应该是灯亮一次灭掉,但是此程序为什么灯会一闪一闪,闪说明单片机再一次又一次的执行主函数在循环,没什么?

相关帖子

沙发
DianGongN| | 2015-5-29 08:32 | 只看该作者
这一段执行完了以后,会执行后面的空白flash中的程序,虽然你没有放程序,默认是FF。
FF也是指令,即MOV R7,A
所以,cpu在空白的地方反复执行MOV R7,A。一直到最后一个地址。
然后,程序计数器PC归零,再次进入你这个main

后面加一段无条件循环即可。
当然控制cpu进入停机模式亦可。

使用特权

评论回复
板凳
星星ARM|  楼主 | 2015-5-29 09:07 | 只看该作者
DianGongN 发表于 2015-5-29 08:32
这一段执行完了以后,会执行后面的空白flash中的程序,虽然你没有放程序,默认是FF。
FF也是指令,即MOV R7 ...

对,你说的没错是r7在做怪,刚看到一篇**说的也是这个问题,什么程序跑飞了,单片机复位了,这都不是原因,编译器编译的时候加载startupa51.h的文件,它里边有跳转语句。但是我又想如果我把这个文件删除了不编译到单片机内会如何??

使用特权

评论回复
地板
星星ARM|  楼主 | 2015-5-29 09:09 | 只看该作者
DianGongN 发表于 2015-5-29 08:32
这一段执行完了以后,会执行后面的空白flash中的程序,虽然你没有放程序,默认是FF。
FF也是指令,即MOV R7 ...

对,你说的没错是r7在做怪,刚看到一篇**说的也是这个问题,什么程序跑飞了,单片机复位了,这都不是原因,编译器编译的时候加载startup.a51的文件,它里边有跳转语句。但是我又想如果我把这个文件删除了不编译到单片机内会如何??

使用特权

评论回复
5
ayb_ice| | 2015-5-29 09:25 | 只看该作者
DianGongN 发表于 2015-5-29 08:32
这一段执行完了以后,会执行后面的空白flash中的程序,虽然你没有放程序,默认是FF。
FF也是指令,即MOV R7 ...

删掉也会加载默认的文件

即使不加载默认的文件,比如纯汇编写,也会如此,因为PC会自动加一的,哪怕执行51不认识的指令,51会当成NOP指令,除非遇上了死循环指令

使用特权

评论回复
6
NE5532| | 2015-5-29 12:10 | 只看该作者
MCU是永远不会停下来的,要不就真的实现人工智能了,楼主能看到循环,是拜51的指令系统设计得好,还有PC指针能“翻山”的特性。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

8

主题

90

帖子

0

粉丝