历史上的今天
返回首页

历史上的今天

今天是: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.子程序的基本结构
  
  综上所述,典型的子程序的基本结构如下:
  720
  注意,上述子程序结构中,现场保护与现场恢复不是必需的,要根据实际情况而定。

推荐阅读

史海拾趣

Daburn公司的发展小趣事

在Daburn公司的发展历程中,质量控制一直是重中之重。公司建立了严格的质量管理体系,从原材料采购到生产流程再到成品检验,每一个环节都严格把控。此外,Daburn还注重持续改进,通过引入先进的生产设备和工艺,不断提高产品的质量和性能。这种对质量的执着追求让Daburn赢得了客户的信任和好评。

ASI [ASI Semiconductor, Inc]公司的发展小趣事

随着技术的不断进步和市场的不断扩大,ASI开始积极拓展全球市场。通过设立分支机构和与全球各地的客户建立合作关系,ASI的产品和服务逐渐覆盖了几十个国家。同时,ASI始终坚持以客户为中心的理念,不断提升客户服务的水平和质量。无论是售前咨询、技术支持还是售后服务,ASI都致力于为客户提供最优质、最专业的服务。

A-BRIGHT公司的发展小趣事

A-BRIGHT公司注重与产业链上下游企业的合作与共赢。公司与多家原材料供应商建立了长期稳定的合作关系,确保了原材料的稳定供应和质量。同时,A-BRIGHT也与多家知名的电子产品制造商展开合作,共同开发新产品,实现了资源共享和互利共赢。

Beckhoff Automation GmbH公司的发展小趣事

随着电子行业的全球化趋势日益明显,BCD Semi公司积极拓展国内外市场,与众多知名企业建立了紧密的合作关系。公司通过与合作伙伴共同研发、生产和销售半导体产品,实现了资源共享和优势互补,进一步提升了市场竞争力。同时,BCD Semi还积极参加国际电子展会和交流活动,展示公司的最新技术和产品,为公司的品牌建设和市场拓展奠定了坚实的基础。

FDK AMERICA公司的发展小趣事

随着全球电子市场的不断发展,FDK AMERICA公司意识到单靠国内市场已无法满足其发展需求。于是,公司积极寻求国际合作机会,与全球知名电子企业建立战略合作伙伴关系。通过合作,公司成功将产品打入国际市场,进一步扩大了市场份额。

Gamma Microelectronics ( APM )公司的发展小趣事

G24i在发展过程中始终注重国际合作与市场拓展。公司董事长Mr. Edward J Stevenson及其团队多次访问国内外知名科研机构和企业,就DSSC技术的研发、产业化等方面进行深入交流。同时,G24i还积极参加国际太阳能展会和论坛,展示其最新的技术成果和产品应用。这些努力不仅提升了G24i在国际市场上的知名度和影响力,也为公司赢得了更多的合作机会和市场份额。通过国际合作与市场拓展,G24i正逐步成为全球DSSC领域的领军企业之一。

问答坊 | AI 解惑

分立元件制作的耳聋助听器

注:本文介绍的助听器电路简单、材料容易获取,适合初学者学习制作时参考,同时也可用于轻度耳聋者临时配戴,建议耳聋患者到专门机构配备适合自己的助听器,以免因小失大! 一、工作原理   耳聋助听器的电路如图1所示,它实质上是一个由晶体三 ...…

查看全部问答>

实时的统计图

这个是实时的统计图,大致情况是这样的,虽然单片机是最火爆的板块,当然了不是嫉妒,单片机有自己的优势,但是既然是硬件肯定是要和其他的东西打交道,一些外围电路啊,什么的,放在其他的板块也可以啦,绘图pcb的也很多啦,呵呵,不要太热了,把 ...…

查看全部问答>

关于ucos在C167CR上的移植

我在micrum网站上下载的移植源码,但这个源码是移植到c164ci上的,用的编译器是TASKING C166/ST10  V2.0 R1。 我现在用的是Tasking v7.5 r2, 芯片是C167CR-LM, 因此需要做一些修改。 到目前为止,可以创建自己的任务,在没有时钟节拍的 ...…

查看全部问答>

如何用NdisUnchainBufferAtBack删掉PNDIS_PACKET后面两个buffer descriptors

NdisUnchainBufferAtBack函数可以用来移除包的缓冲描述符链的最后一个, 如果我想将包的缓冲描述符链的最后两个或者多个移除掉(至少保留首部的一个buffer descriptor),该怎么做?我试着两次调用NdisUnchainBufferAtBack,可是总蓝屏。 而且 ...…

查看全部问答>

RFID卡键盘口读卡器,怎么写程序读到其数据呢

RFID卡键盘口读卡器,怎么写程序读到其数据呢?…

查看全部问答>

去华强北买钽电容,杯具了;去网上目录分销,又杯具了!

钽电容缺货我也有所耳闻,最近公司做一批样机,可恶的Layout工程师竟然放了好多钽电容上去,还为了省事一律使用A Type。。。我无语了。   才5PCS的单,好不容易求着供应商帮我拿了物料,结果钽电容他是死也不给我(也不知道是没有还是不想给 ...…

查看全部问答>

zstack中发现PANID冲突的解决办法。

在同一空间如果同时存在多个zigbee网络,可能出现的一个问题就是网络ID(PANID)冲突,这问题会导致zigbee网络出现混乱。 在zigbee2004和zigbee2006这个问题没有解决办法,到了zigbee 2007协议有了描述,不过各厂家的解决不太一样。 就ZSTACK来说 ...…

查看全部问答>

FPGA处理音频问题

本人最近用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 ...…

查看全部问答>

热门技术资源搜集--3D打印机原理知识普及

     最近一段时间以来,EE论坛里面的《网友关注》帖子里的一篇《晒晒学校买的3D打印机》引起了大家的广泛关注,现在3D打印机可是一个非常热门的技术。前一阵子听说一个学生大牛DIY出来了一个3D打印机。另外现在社会上已经有3D ...…

查看全部问答>