1. 仓库不够大
2.
3. 程序跳转、查表等没设置好页
4.GOTO和CALL指令的不同运用 在PIC的汇编程序中,CALL与GOT0指令运用的场台不同。CALL是用来调用子程序的,在调用完子程序后回来到调用前的程序;而GOTO是无条件搬运,即由此状况进入别的一个状况而不需要回来。 为了使程序愈加具有可读性,使流程愈加明晰、合理,一般程序都选用模块化程序设计,行将程序依照功用分红不同的子程序,而主程序则适当简练,只须选用CALL指令对子程序进行调用。 因为PIC单片机的仓库有限,在程序中不能无止境地运用GOTO指令,不然会使仓库溢出,程序无法正常运转。但是在有些时分,例如当程序呈现分支时,则不得不运用GOTO指令。关于PICl6F7x系列单片机,程序呈现分支时只能经过STATUS寄存器的Z位或C位进行判别。这时在两种状况的前一种状况下,有必要运用GOTO指令进行搬运;不然在履行完第一种状况后,紧接着又履行第二种状况。程序如下: BTFSS STATUS,Z GOTO A GOTO B 在跳转到A时,有必要运用GOTO指令;不然履行完这条句子今后,紧接着履行GOTO B。这样不管Z为何值,程序都将跳转到B。而关于GOT0 B,则能够不用运用GOTO指令。 在上面这种状况下,因为GOTO只在子程序内部进行跳转,小程序内部循环占用仓库的级数不多,因而运用GOTO指令是可行的。但是在大的程序中运用GOTO指令,将有或许无法回来到调用前的下一条指令。 因而,笔者主张,在运用汇编语言进行程序设计时,应该将程序
仓库溢出总结
1堆栈不够大2子程序中有没有直接或条件跳出子程序体的语句。如果有的话在运行N次子程序后就会产生堆栈溢出现象3程序跳转、查表等没
声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/zhishi/shuzi/257216.html