- 1、本文档共28页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
单元四? 汇编语言程序设计
4.1?单片机计数 1
4.2? LED显示电路 5
4.1?单片机计数
〖学习目标〗: 通过学习任务七的完成方法,掌握MCS-51单片机汇编语言中的伪指令的功能特点。
〖任务描述〗: 利用实验开发板上的555振荡电路产生的4HZ的脉冲信号进行计数,要求每计十个数单灯向左移动一次。
4.1.1?硬件电路
1.硬件电路
硬件电路如图4.1所示,555振荡电路产生约4HZ的脉冲信号,经S3点接到单片机P3.4输入端,注意应将跳线JP1下面的两个端子(M与R)短接。
图4.1? 单片机计数电路原理图
2.工作原理
MCS-51单片机内部有两个16位的定时/计数器,都可以用于对外部事件进行计数。外部计数脉冲从P3.4或P3.5端口输人,程序设置定时/计数器工作在计数状态即可以对外部事件进行计数。
4.1.2?程序设计
??? ??????? ORG 0000H
??????????? LJMP??? MAIN
??? ??????? ORG 0030H
MAIN:?? ??? MOV TMOD,#06H
??? ??????? MOV TH0,#0F6H
??? ??????? MOV TL0,#0F6H
??? ??????? SETB??? TR0
??? ??????? MOV A,#0FEH
LOOP:?? ??? MOV P1,A
??? ??????? JBC TF0,MLOOP
??? ??????? SJMP??? LOOP
MLOOP:RL ?? A
??? ??????? SJMP??? LOOP
??? ??????? END
4.1.3?源程序的编辑、编译、下载
打开“伟福”模拟仿真软件进行程序的编辑、编译。
打开“ISP下载软件”将目标文件下载到ISP-4实验开发板上的AT89S51单片机芯片,观察程序运行结果。
4.1.4?相关知识
在前面的程序中,我们经常可以看到ORG、END这样的东西,但是从我们已经学完了51单片机的基本指令中,根本找不到它们。它们到底是什么呢?原来在单片机中,除了指令外还有伪指令。
1.什么是伪指令?有哪些常用伪指令?
随着单片机的广泛应用和开发以装置功能的不断完善与发展,汇编语言源程序都借助系统机(PC等)进行编辑、汇编和调试。因此,在编制汇编语言源程序时,常需应用伪指令。伪指令又称汇编程序控制译码指令,属说明性汇编指令。“伪”字体现在汇编时不产生机器指令代码,不影响程序的执行,仅产生供汇编时用的某些命令,在汇编时执行某些特殊操作。
不同的单片机及其开发装置所定义的伪指令不全相同。下面介绍几种常用的伪指令。
(1)为标号赋值伪指令
① 标号等值伪指令——EQU
格式:〈标号:〉EQU〈表达式〉
指令的含义为本语句的标号等值于表达式,亦即将表达式值赋予标号。这里的标号和表达式是必不可少的。
例如:
TTY:?? EQU 1080H
本语句向汇编程序指明,标号TTY已于前句赋值为1080H,则相当于TTY=1080H。用EOU语句给一个标号赋值以后,在整个源程序中该标号的值是固定而不能更改的。
② 定义标号值伪指令——DATA
格式:〈标号:〉DATA〈表达式〉
其含义是定义该标号的值为表达式值,同样,标号和表达式是不可缺少的。
例如:
COUNT1: DATA 2300H??? ?? ;定义COUNT1=2300H
COUNT2: DATA COUNT1+1?? ;定义COUNT2=2300H+1
由上可见,DATA和EQU的功能都是将表达成值赋给标号,但两者有区别,用DATA语句赋值的标号可以先用后定义,而用EQU语句赋值的标号,必须先定义后使用。
(2)数据存储说明伪指令
数据存储说明伪指令的作用是将数据存储在程序存储器单元中。
① 定义字节数据伪指令——DB或DEGB
格式:〈标号:〉DB〈表达式或表达式串〉
式中表达式或表达式串是指一个字节或用逗号隔开的一个字节数据。其含义是将表达式或表达式串所指定的字节数据存入从标号开始的连续存储单元中。标号为可选项,它表示数据存入程序存储器的起始地址。例如:
HERE:DB? 56H?????? ;将数据56H存入HERE所指示的单元中
DB?? OA7H
再如:
SECON:DB02H,36H,74H,0B4H,OFFH,…
上述语句表示将字节数据串按顺序存篇幅 标号SECON所指示的地址为起始顺序存储单元中。
作为本语句操作数控部分的表达式或表达式串,可以是数据表达式、ASCII码字符串、字节数据,字节数据串(其字节串长度限制在80B的数据内)。
② 定义字数据伪指令——DW或DEFW
格式:〈标号:〉DW〈表达式或表达式串〉
本语句的含义是将作为操作部分的字数据(2B)或字数据串存入由标号指定的首地址
文档评论(0)