《例说8051:单片机程序设计案例教程》——1-4 实例演练-阿里云开发者社区

开发者社区> 开发与运维> 正文
登录阅读全文

《例说8051:单片机程序设计案例教程》——1-4 实例演练

简介:

本节书摘来异步社区《例说8051:单片机程序设计案例教程》一书中的第1章,第1.4节,作者:张义和,陈敌北,更多章节内容可以访问云栖社区“异步社区”公众号查看

1-4 实例演练

例说8051:单片机程序设计案例教程
单片机系统的设计中,软件与硬件息息相关,采用不同的电路设计,程序可能就不太一样。因此,在编写程序之前,必须确定电路的连接状态,例如要利用8051的Port 2来控制8个LED,让这8个LED分成两组(高四位与低四位),交互闪烁,其设计步骤如下:

  1. 如图1-19所示的电路中,当Port 2的引脚输出低电平(0)时,其所连接的LED因正向导通而亮;若将引脚输出高电平(1)时,其所连接的LED因反向截止而不亮。因此,我们的程序设计就要让Port 2输出为“00001111”,使左边四个LED亮,右边四个LED不亮。隔一段时间后,再将输出反相,即左边四个LED不亮,右边四个LED亮,……如此周而复始。
  2. 有了电路和思路后,随即可画出流程图,如图1-20所示。

c24636da2f7a075f8b44069566baf2cc9f993095
  1. 除简单的程序外,根据流程图来编写程序是一个较容易且保险的方法。若要编写程序,则进入文本编辑程序后,按行输入,其中每行“;”右边的部分是注释,是对该条指令的说明,只提供备注信息,不会影响源程序运行。在此建议尽量要求自己对自己所编写的程序进行注释,一方面可以增加该程序的可读性,另一方面则可养成良好的程序编写习惯。
ORG   0    ;程序从0地址开始

START: MOV   A, #0FH   ;让ACC的内容为00001111
LOOP: MOV   P2, A   ;从Port 2输出ACC的内容
     CPL   A    ;对ACC的内容取补码(即反相)
     CALL  DELAY   ;调用延迟子程序
      JMP   LOOP   ;跳到LOOP处执行
;=======================================================
DELAY:      ;延迟子程序
        MOV   R7, #20   ;R7寄存器加载次数20
D1:  MOV   R6, #25   ;R6寄存器加载次数25
     DJNZ   R6, $   ;本行执行R6次
     DJNZ   R7, D1   ;D1循环执行R7次
     RET     ;返回主程序
     END     ;结束程序
ch1.asm
  1. 通常我们会将所有开发工具都放在一个文件夹里(如D:8051),包括PE2、X8051、LINK、AVSIM51、TEST.BAT(前面所介绍的自动批处理文件),以及所编辑的源程序。当源程序编辑完成且存盘(ch1.asm)后,在命令提示符下输入:

74f6ddffc5fde216defba0ac7e67755e84296a03

屏幕将出现一连串操作,最后停止,如图1-21所示。

87b747111658a56f4eb7d4b44b07934786b0e5cb
  1. 此时产生了*.hex文件,可进一步进行软件仿真,同样是在命令提示符下输入:

bd2469be8b8c51244f2d297309dc59ebb78e1ed3

屏幕出现如图1-22所示画面。

  1. 此时按键即可进入软件仿真环境,如图1-23所示。

2a728663c5f400d20f36e839b193a4f18947c022
  1. 紧接着载入刚才编译完成的文件,按、键,再输入ch1.hex,按键即可载入ch1.hex,如图1-24所示。

7d51e5e7eeae612b187d5d206a921b68a5713718
  1. 此时屏幕左上角将显示所下载的程序,只要按screenshot键即可进行仿真,这时要注意看右下方“P2”的变化,如图1-25所示。
  2. 若要停止模拟,则screenshot按键两下;若要结束程序,则按screenshot键即可。

41e22ba2e195f6349d5fb46648541c3455b67a86

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

分享:
开发与运维
使用钉钉扫一扫加入圈子
+ 订阅

集结各类场景实战经验,助你开发运维畅行无忧

其他文章
最新文章
相关文章