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

在实际的程序设计中,常常将那些需多次应用的、完成相同的某种基本运算或操作的程序段从整个程序中独立出来,单独编成一个程序段,需要时通过子程序调用指令进行调用。这样的程序段称为子程序。
  
  采用子程序能使整个程序结构简单,缩短程序的设计时间,减少占用的程序存储空间。调用子程序的程序称为主程序或调用程序。
  
  子程序在程序设计中非常重要,应熟练掌握子程序的设计方法。
  
  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 子程序

TITLE"KeyStrokeWakeUp"LISTP=16C54;******************************************************...

关键字: pic 子程序 按键

1、函数定位:假如要把C源文件 tools.c 中的函数 int BIN2HEX(int xx) { ... } 放在CODE MEMORY的0x1000处,先编译该工程,然后打开该工程的M51文件,在 *...

关键字: C51 keil 子程序 地址位

AVR单片机键盘子程序键盘扫描有中断方式和查询方式#include"jn8515def.h"/******以下是键盘排列图******|||PC0___1|__2|__3|__...

关键字: 单片机 子程序 方式 键盘

此串口处理程序是基于以下的协议写成的:帧内容FRAME=帧头FA+帧长度len(不包括帧头帧尾)+数据流data+帧尾FB。串口中断子程序里对整个数据流进行处理,而不是一个字节一个字节地处理,在中断中等待处理完所有的

关键字: C51 串口中断 子程序

/*------------------ 画点子程序 -----------------------------*/ //X Y为预想的坐标系(X:0-127,Y:0-63 按格算),Color 0灭,1亮,2翻转...

关键字: 12864 st7920控制器 子程序 画点 线

第一步 子VI的编辑:子VI是一个公式;X1+sqrt(X1)+ln(X1) 下面的是,子VI的输入和输出的设定因为新浪博客上传视频需要时间审核,这里再附上这个视频的百度云链接:http://pan.baidu.com...

关键字: LabVIEW 子程序 学习笔记
关闭
关闭