当前位置:首页 > 单片机 > 单片机
[导读]在实际的程序设计中,常常将那些需多次应用的、完成相同的某种基本运算或操作的程序段从整个程序中独立出来,单独编成一个程序段,需要时通过子程序调用指令进行调用。这样的程序段称为子程序。

在实际的程序设计中,常常将那些需多次应用的、完成相同的某种基本运算或操作的程序段从整个程序中独立出来,单独编成一个程序段,需要时通过子程序调用指令进行调用。这样的程序段称为子程序。

采用子程序能使整个程序结构简单,缩短程序的设计时间,减少占用的程序存储空间。调用子程序的程序称为主程序或调用程序。

子程序在程序设计中非常重要,应熟练掌握子程序的设计方法。

1.子程序的设计原则和应注意的问题

在编写子程序时应注意以下问题:

(1)子程序的第一条指令的地址称为子程序的入口地址,该指令前必须有标号。

(2)主程序调用子程序,是通过主程序或调用程序中的调用指令来实现的。在指令集中,有如下两条子程序调用指令:

①绝对调用指令ACALL addrll。这是一条双字节指令,addrll指出了调用的目的地址,PC指针中16位地址中的高5位不变,这意味着被调用的子程序的首地址与绝对调用指令的下一条指令的高5位地址相同,即只能在同一个2KB区内。

②长调用指令LCALL addr16。这是一条三字节指令,addr16为直接调用的目的地址,也就是说,子程序可放置在64KB程序存储器区的任意位置。

(3)子程序结构中必须用到堆栈,堆栈通常用来保护断点和现场保护。

(4)子程序返回主程序时,最后一条指令必须是RET指令,它的功能是把堆栈中的断点地址弹出送人PC指针中,从而实现子程序返回主程序断点处继续执行主程序。

(5)子程序可以嵌套,即主程序可以调用子程序,子程序又可以调用另外的子程序。

2.子程序的基本结构

综上所述,典型的子程序的基本结构如下:

 

注意,上述子程序结构中,现场保护与现场恢复不是必需的,要根据实际情况而定。

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

摘 要:对电流和电压信号进行谐波分析 ,确定谐波的严重程度和特征是防范和治理高次谐波的第一步 。据此研究了应用Matlab 软件中的快速傅里叶变换来求取供电系统电流电压信号的谐波幅值和相位的方法 ,并编成子程序 ,应...

关键字: 谐波分析 供电系统 子程序

汇编——子程序调用参数传递的三种方式(示例程序:三个数累加求和)

关键字: 子程序 格式

  PLC子程序调用方法   1、进入子程序请使用CALL指令,即是FUN67指令,在子程序中要使用标签:LBL指令即FUN65,子程序段结束后请使用RTS指令,即FUN68子程序返回指

关键字: plc 子程序

AT89S51最小系统制做

关键字: at89s51 最小系统

AT89c51与AT89S51单片机的区别

关键字: at89c51 at89s51 单片机

AT89S51的由来及与C51的区别

关键字: at89s51 C51 区别

AT89S51芯片的日渐流行,对我们单片机初学者来说是一个大好消息。因为做个AT89S51编程器非常容易,而且串行编程模式更便于做成在线编程器,给频繁烧片,调试带来了巨大的方便。

关键字: at89s51 编程器

串行口工作于方式2和方式3时,被定义为9位异步通信接口。每帧数据均为11位,1位起始位0,8位数据位(先低位),1位可程控为1或0的第9位数据和1位停止位。

关键字: at89s51 串行口 方式2 方式3

串行口的工作方式0为同步移位寄存器输入/输出方式。这种方式并不是用于两个AT8 9 S51单片机之间的异步串行通信,而是用于串行口外接移位寄存器,以扩展并行I/O口。

关键字: at89s51 串行口 工作方式0

1.访问程序存储器的控制信号AT89S51单片机访问片外扩展的程序存储器时,所用的控制信号有以下3种。(1) ALE——用于低8位地址锁存控制。(2) PSEN(的反)——...

关键字: at89s51 操作时序 程序存储器
关闭
关闭