找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2775|回复: 0
打印 上一主题 下一主题
收起左侧

单片机汇编语言六 子程序调用 八位数码管显示Proteus仿真程序

[复制链接]
跳转到指定楼层
楼主
本实验用单片机实现用八位数码管显示0-7。目的是:1、掌握8051 CPU的子程序调用的相关指令;
     2、掌握子程序调用的汇编编程写法;
     3、了解数码管动态显示的方法
1、子程序概述  
子程序是指能被主程序或其它程序调用,具有独立完备功能的 程序段。微控制器系统的应用程序通常包含多个子程序。子程序的运用,能够提高编程效率、实现程序模块化,也便于程序的继承。调用子程序的程序称为主程序或调用程序。
断点地址:子程序调用指令的下一条指令地址;
子程序地址:子程序第一条指令的地址。
子程序调用:CALL指令自动将断点地址压入堆栈保护,然后将子程序地址送PC,实现子程序的调用;
子程序返回:子程序的最后一条RET指令,将使堆栈顶部的断点地址弹出到PC,实现子程序的返回。

子程序嵌套:在子程序中,调用其它子程序的情况,称为子程序嵌套调用
              
2、子程序编写的注意点
1)子程序的第1条指令必须有标号,表示该子程序的名称,也是子程序的符号地址。要有子程序的功能说明。
2)要明确子程序的调用条件和出口状态
• 调用条件:调用子程序需要准备的参数(如要处理的数,或存放的寄存器或内存地址等);
• 出口状态:调用子程序后的结果(结果形式或存放地址等)。
3)保护现场和恢复现场
保护现场:子程序前部,将不允许被破坏的内容保护起来;
恢复现场:子程序返回前,将保护的内容恢复到保护前的状况;
要注意堆栈的“先进后出”操作规则,以保证现场保护和恢复的正确。
4)子程序的正确返回
子程序的最后一条指令必须是RET指令。
子程序中,对堆栈的入栈和出栈操作次数必须相等,以保证返回后堆栈指针SP的值与调用时一致。
   

3、数码管简介
七段数码管是电子开发过程中常用的输出显示设备。在实验系统中使用的是两个四位一体、共阴极型七段数码管。其单个静态数码管如下图4-1所示。

4-1  静态七段数码管
由于七段数码管公共端连接到GND(共阴极型),当数码管的中的那一个段被输入高电平,则相应的这一段被点亮。反之则不亮。四位一体的七段数码管在单个静态数码管的基础上加入了用于选择哪一位数码管的位选信号端口。八个数码管的a、b、c、d、e、f、g、h、dp都连在了一起,8个数码管分别由各自的位选信号来控制,被选通的数码管显示数据,其余关闭。



仿真原理图如下(proteus仿真工程文件可到本帖附件中下载)


单片机源程序如下:
  1. ORG 0000H
  2. LJMP MAIN

  3. ORG 0100H
  4. MAIN:
  5. MOV R1,#0FEH
  6. MOV R2,#00H
  7. MOV R3,#08H
  8. MOV A,#00H

  9. LOOP:
  10. MOV DPTR,#TABLE
  11. MOV A,R2
  12. MOVC A,@A+DPTR
  13. MOV R0,A
  14. INC R2

  15. MOV P3,R1
  16. MOV P2,R0
  17. LCALL DELAY

  18. MOV A,R1
  19. RL A
  20. MOV R1,A

  21. DJNZ R3,LOOP
  22. LJMP MAIN

  23. DELAY1ms:PUSH 30H
  24. MOV 30H,#0F8H    ;F8
  25. DD:NOP
  26. NOP
  27. DJNZ 30H,DD   
  28. POP 30H
  29. RET

  30. DELAY:
  31. MOV R5,#255
  32. D1:MOV R6,#255
  33. D2:NOP
  34. NOP
  35. DJNZ R6,D2
  36. DJNZ R5,D1
  37. RET

  38. TABLE:DB 3fH,06H,5bH,4fH,66H,6dH,7dH,07H,7fH,6fH,77H,7cH,39H,5eH,79H,71H
  39. END
复制代码
仿真代码51hei附件下载:
实验六工程.7z (52.94 KB, 下载次数: 11)

评分

参与人数 1黑币 +40 收起 理由
admin + 40 共享资料的黑币奖励!

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏1 分享淘帖 顶 踩
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表