66问答网
所有问题
用C51在keil上面开发单片机程序时发现1.程序执行完main函数后会自动跳转到main函数开始重新执行。2.在程序
发现用判断语句条件在满足之后程序并不跳转(对于判断语句或者循环语句有什么注意事项,烦请各位大虾指导一下)。
先行谢过各位了。我有看汇编出来的程序,main函数结束确实是RET,为什么不是END语句呢
举报该问题
推荐答案 2010-12-21
1. 正式产品的C51程序应该是一个死循环。如果不是死循环,执行完main后,执行RET,将会将堆栈里的数据当做地址压入PC,程序跑错。最后会回到地址0000H,重新开始,进入main。你仿真在00H做中断,就会发现他回去了。
2. 你说的不清楚,跳转还是会跳转的。程序运行结果正确就说明没有错。除非你程序错误。如果你是在仿真时看到没有跳转,还是在那一行,那是他还有数据要处理,看汇编就知道了。
温馨提示:答案为网友推荐,仅供参考
当前网址:
http://66.wendadaohang.com/zd/n9ipnxs9n.html
其他回答
第1个回答 2010-12-21
以前我也有类似的情况,但是原因不一定都一样,一般是延时函数有问题,再去调试下吧!时间改改,不行再说!
第2个回答 2010-12-21
二楼说的很明白了我就不说了,抱歉 ,我是来打酱油的路过
相似回答
用C51在keil上面开发单片机程序时发现1.程序执行完main函数后会自动
跳...
答:
1. 正式产品的
C51程序
应该是一个死循环。如果不是死循环,
执行完main
后,执行RET,将会将堆栈里的数据当做地址压入PC,程序跑错。最后会回到地址0000H,重新开始,进入main。你仿真在00H做中断,就会发现他回去了。2. 你说的不清楚,跳转还是
会跳转
的。程序运行结果正确就说明没有错。除非你程序错误。
51
单片机
中if语句的一个问题
答:
单片机程序在执行完main程序后会跳回到
住main程序入口再重新执行的。把这个程序反汇编以后可以看到在C:0x0018行跳回主
函数
入口C0003 C:0x0000 02000F LJMP C:000F 4: void main(void)5: { 6: if(k)C:0x0003 E508 MOV A,k(0x08)C:0x0005 6004 JZ C:000B ...
...在main()函数里循环执行,这是怎么回事?当
main函数执行
结束后,
程序
就...
答:
keil
做了下仿真,虽然你的主
函数
结束了,但是你的计时器仍然在工作,单步下去,总会进入中断函数。但是在protues下你的定时器初值要设置合理,也就是在主函数结束前溢出,中断就能发生。然后一直会有定时中断.挺神奇的 还是烧在板上做吧
keilC51
汇编时寄存器在哪里定义
答:
keilC51 汇编编写
程序
时,寄存器是不用自己定义的,可以直接使用;C语言编写程序的时候,要把头文件包括进来如:#include<reg51.h>,头文件里定义了寄存器……
51
单片机
少写了一个循环语句,为什么还能
执行
循环,错在哪里呢?
程序
如下...
答:
除非程序中有改变PC指针的值的指令。所以当给一个内部没有程序的
单片机
上电,复位并供上时钟时,单片机不是静止的,而是一直在运行的,运行的方式是从头到尾的
执行程序
存储器中的指令。如果程序存储器中是全0,执行的是空指令,如果是全1,执行的是mov R7, A。
关于计算机和
单片机程序执行
过程的几个问题
答:
1,计算机有地址总线、数据总线,计算机一上电就从一个固定的地址取第一条指令,这一条指令一般为跳转指令。接下来计算机就会不停的取指令、执行指令,这些工作一般为流水线结构。每条指令取完后,去哪里取下一条指令,这个是CPU
自动完成
的,写C语言的同学就不用管了。2,烧程序的时候,C语言不能自...
大家正在搜
用keil编写51单片机程序步骤
用keil编写单片机程序
keil5创建51单片机工程
keil读取单片机程序
keil怎么把程序烧录进单片机
怎么把keil程序导入单片机
51单片机keil编程
keil5烧录51单片机
keil如何烧写到单片机
相关问题
怎样做明星?
请问这个明星是谁?
艺人被雪藏是什么意思
怎么给明星投票
wxy和YCY是哪个明星缩写?
全明星157啥意思?
为什么2020全明星总分157?
2020全明星157分啥意思?