历史上的今天
今天是:2025年03月10日(星期一)
2018年03月10日 | 基于AT89S51子程序的设计
2018-03-10 来源:eefocus
在实际的程序设计中,常常将那些需多次应用的、完成相同的某种基本运算或操作的程序段从整个程序中独立出来,单独编成一个程序段,需要时通过子程序调用指令进行调用。这样的程序段称为子程序。
采用子程序能使整个程序结构简单,缩短程序的设计时间,减少占用的程序存储空间。调用子程序的程序称为主程序或调用程序。
子程序在程序设计中非常重要,应熟练掌握子程序的设计方法。
1.子程序的设计原则和应注意的问题
在编写子程序时应注意以下问题:
(1)子程序的第一条指令的地址称为子程序的入口地址,该指令前必须有标号。
(2)主程序调用子程序,是通过主程序或调用程序中的调用指令来实现的。在指令集中,有如下两条子程序调用指令:
①绝对调用指令ACALL addrll。这是一条双字节指令,addrll指出了调用的目的地址,PC指针中16位地址中的高5位不变,这意味着被调用的子程序的首地址与绝对调用指令的下一条指令的高5位地址相同,即只能在同一个2KB区内。
②长调用指令LCALL addr16。这是一条三字节指令,addr16为直接调用的目的地址,也就是说,子程序可放置在64KB程序存储器区的任意位置。
(3)子程序结构中必须用到堆栈,堆栈通常用来保护断点和现场保护。
(4)子程序返回主程序时,最后一条指令必须是RET指令,它的功能是把堆栈中的断点地址弹出送人PC指针中,从而实现子程序返回主程序断点处继续执行主程序。
(5)子程序可以嵌套,即主程序可以调用子程序,子程序又可以调用另外的子程序。
2.子程序的基本结构
综上所述,典型的子程序的基本结构如下:

注意,上述子程序结构中,现场保护与现场恢复不是必需的,要根据实际情况而定。
上一篇:ISP程序的设计思路
下一篇:关于AT89S51某些指令的说明
史海拾趣
|
注:本文介绍的助听器电路简单、材料容易获取,适合初学者学习制作时参考,同时也可用于轻度耳聋者临时配戴,建议耳聋患者到专门机构配备适合自己的助听器,以免因小失大! 一、工作原理 耳聋助听器的电路如图1所示,它实质上是一个由晶体三 ...… 查看全部问答> |
|
我在micrum网站上下载的移植源码,但这个源码是移植到c164ci上的,用的编译器是TASKING C166/ST10 V2.0 R1。 我现在用的是Tasking v7.5 r2, 芯片是C167CR-LM, 因此需要做一些修改。 到目前为止,可以创建自己的任务,在没有时钟节拍的 ...… 查看全部问答> |
|
如何用NdisUnchainBufferAtBack删掉PNDIS_PACKET后面两个buffer descriptors NdisUnchainBufferAtBack函数可以用来移除包的缓冲描述符链的最后一个, 如果我想将包的缓冲描述符链的最后两个或者多个移除掉(至少保留首部的一个buffer descriptor),该怎么做?我试着两次调用NdisUnchainBufferAtBack,可是总蓝屏。 而且 ...… 查看全部问答> |
|
钽电容缺货我也有所耳闻,最近公司做一批样机,可恶的Layout工程师竟然放了好多钽电容上去,还为了省事一律使用A Type。。。我无语了。 才5PCS的单,好不容易求着供应商帮我拿了物料,结果钽电容他是死也不给我(也不知道是没有还是不想给 ...… 查看全部问答> |
|
在同一空间如果同时存在多个zigbee网络,可能出现的一个问题就是网络ID(PANID)冲突,这问题会导致zigbee网络出现混乱。 在zigbee2004和zigbee2006这个问题没有解决办法,到了zigbee 2007协议有了描述,不过各厂家的解决不太一样。 就ZSTACK来说 ...… 查看全部问答> |
|
本人最近用FPGA对UDA1341进行AD采样,请问有人用过UDA1341吗,该芯片的AD和DA 可以同时使用吗,另外芯片的L3接口对控制AD和DA采样应该没什么作用吧,AD和DA 只要对其sysclk,bclk,ws,的时序操作对了就可以了吧?… 查看全部问答> |
|
求助:帮忙看看自己写的MSP430f149红外避障的程序,哪里错误了 帮忙看下写的430f149的红外避障程序哪里错误了,电机不能够转。但是自己也不到哪里错了。希望有经验的大神帮帮忙 #include \"msp430x14x.h\" #define uint unsigned int #define uchar uns ...… 查看全部问答> |
|
最近一段时间以来,EE论坛里面的《网友关注》帖子里的一篇《晒晒学校买的3D打印机》引起了大家的广泛关注,现在3D打印机可是一个非常热门的技术。前一阵子听说一个学生大牛DIY出来了一个3D打印机。另外现在社会上已经有3D ...… 查看全部问答> |




