基于AT89S51子程序的设计

发布者:数字冒险最新更新时间:2018-03-10 来源: eefocus关键字:AT89S51  子程序 手机看文章 扫描二维码
随时随地手机看文章

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

关键字:AT89S51  子程序 引用地址:基于AT89S51子程序的设计

上一篇:ISP程序的设计思路
下一篇:关于AT89S51某些指令的说明

推荐阅读最新更新时间:2024-03-16 15:57

基于单片机的电脑弹簧机按键板的设计与实现
引言 电脑弹簧机是用来生产弹簧的专用设备。按键板,作为一个人机交互的操作界面,起着输入操作命令,编辑弹簧加工程序及修改数据的功能,对电脑弹簧机的操作控制起着重要作用。在实际应用中,为方便操作,需要将按键板的按键汉字化和直接化,这使得使用标准的PC键盘不太可能,所以开发一块便宜且通用的按键板就很有现实意义。在PC机中,键盘和主机的通信采用的是PS/2协议。由于电脑弹簧机的控制器是一个标准的工控PC机控制器,具有标准的键盘接口,为了使设计简单和通用,在这里使用这个标准的键盘接口,并采用PS/2协议来进行按键板和弹簧机的通信,设计时选用单片机AT89S51作为按键板的处理芯片进行按键的识别和数据的接收和发送。本文介绍的是设计并实现这个
[单片机]
基于单片机的电脑弹簧机按键板的设计与实现
基于AT89S51单片机的定时报警器电路图
设计一个单片机控制的简易定时报警器。要求根据设定的初始值(1-59 秒)进行倒计时,当计时到0 时数码管闪烁“00”(以1Hz 闪烁),按键功能如下:   (1)设定键:在倒计时模式时,按下此键后停止倒计时,进入设置状态;如果已经处于设置状态则此键无效。 (2)增一键:在设置状态时,每按一次递增键,初始值的数字增1。 (3)递一键:在设置状态时,每按一次递减键,初始值的数字减1。 (4)确认键:在设置状态时,按下此键后,单片机按照新的初始值进行倒计时及显示倒计时的数字。如果已经处于计时状态则此键无效。 图 定时报警器电路原理图
[模拟电子]
基于<font color='red'>AT89S51</font>单片机的定时报警器电路图
基于C51单片机的计时器设计原理图
  如下图所示,在 AT89S51 单片机的 P0 和 P2 端口分别接有两个共阴数码管 P0 口驱动显示秒时间的十位,而 P2 口驱动显示秒时间的个位。   1 . 把 “ 单片机系统 ” 区域中的 P0.0/AD0 - P0.7/AD7 端口用 8 芯排线连接到“ 四路静态数码显示模块 ” 区域中的任一个 a - h 端口上;要求: P0.0/A D0对应着 a , P0.1/AD1 对应着 b , …… , P0.7/AD7 对应着 h 。   2 . 把 “ 单片机系统 ” 区域中的 P2.0/A8 - P2.7/A15 端口用 8 芯排线连接到 “ 四路静态数码显示模块 ” 区域中的任一个 a - h 端口上;要求: P
[单片机]
基于C51单片机的计时器设计原理图
PIC单片机的查表程序设计
PIC的查表程序可以利用子程序带值返回的特点来实现。具体是在主程序中先取表数据地址放入W,接着调用子程序,子程序的第一条指令将W置入PC,则程序跳到数据地址的地方,再由“RETLW”指令将数据放入W返回到主程序。下面程序以F10放表头地址。 MOVLW  TABLE     ;表头地址→F10 MOVWF  10 ┋ MOVLW  1        ;1→W,准备取“1”的线段值 ADDWF  10,1      ;F10+W =“1”的数据地址 CALL  CONVERT MOVWF  6        ;线段值置到B口,点亮LED ┋ CONVERT MOVWF  2        ;W→PC TABLE RETLW  0
[单片机]
PIC单片机的查表程序设计
自制AT89S51编程器
AT89S51芯片的日渐流行,对我们单片机初学者来说是一个大好消息。因为做个AT89S51编程器非常容易,而且串行编程模式更便于做成在线编程器,给频繁烧片,调试带来了巨大的方便。 只要焊13根线就可以搞定这个电路。基本原理:RST置高电平,然后向单片机串行发送编程命令。P1.7(SCK)输入移位脉冲,P1.6(MISO)串行输出,P1.5(MOSI)串行输入(要了解详细编程原理可以去看AT89S51的数据手册)。使用并口发出控制信号,74373只是用于信号转换,因为并口直接输出高电平的电压有点没到位,使用其他芯片也可以,还有人提出直接接电阻。并口引脚1控制P1.7,引脚14控制P1.5,引脚15读P1.6,引脚16控制RST,
[单片机]
自制<font color='red'>AT89S51</font>编程器
EEPROM 存储电台PLL子程序
这是一个单片机控制的收音机程序完整代码和原理图下载地址: http://www.51hei.com/bbs/dpj-19294-1.html 下面我我截图的一个子程序. #include STC12C5620AD.H #include EEPROM.H #include Channel_Handle.H /********************** 声明外部变量**************************/ /********************** EEPROM 存储电台PLL*************************/ void EEPROM_Save_PLL(uchar Index,uint Udata
[单片机]
串行通信中断方式子程序
/*-----------------------------------------------------* *文件描述:本文件包含了串行通信的4子程序,分别为: * *(1)SCISend1:串行发送1字节 * *(2)SCISendN:串行发送n字节 * *(3)SCIRe1:串行接收1字节 * *(4)SCIReN:串行接收n字节 * // // #include SCI.h
[单片机]
AT89S51单片机原理与应用
一、AT89S51与AT89C51的区别 这里,初学者要澄清单片机实际使用方面的一个产品概念,MCS-51单片机是美国INTE公司于1980年推出的产品,典型产品有8031(内部没有程序存储器,实际使用方面已经被市场淘汰)、8051(芯片采用HMOS,功耗是630mW,是89C51的5倍,实际使用方面已经被市场淘汰)和8751等通用产品,一直到现在,MCS-51内核系列兼容的单片机仍是应用的主流产品(比如目前流行的89S51、已经停产的89C51等),各高校及专业学校的培训教材仍与MCS-51单片机作为代表进行理论基础学习。 有些文献甚至也将8051泛指MCS-51系列单片机,8051是早期的最典型的代表作,由于MCS-51单
[单片机]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved