- 1、本文档共12页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
51八只LED灯做流水灯实验
第一节:
单片机在上电初始后, 其各端口输出为高电平。 如果我们现在想让接在 P1.0 口的LED1亮,那么我们只要 把P1.0 口的电平变为低电平就可以了。想让 LED1灭,LED0亮,只需将P1.0升高,P1.1变低,LED1 就熄灭LED2随后既点亮!依始类推如下所示 8只LED变会一亮一暗的做流水灯了。本实验在 SP-51
实验板”学习套件上的相关图纸:
P1.0 低、P1.0 高、P1.1 低、P1.1 高、P1.2 低、P1.2 高、P1.3 低、P1.3 高、P1.4 低、P1.4 高、P1.5 低、
P1.5高、P1.6低、P1.6高、P1.7低、P1.7高、返回到开始、程序结束。
我们不能说P1.1你变低,它就变低了。因为单片机听不懂我们的汉语的,只能接受二进制的 “、0……代”
码。我们又怎样来用二进制语议论使单片机按我们的意思去工作呢?为了让单片机工作,只能将程序写为
二进制代码交给其执行;早期单片机开发人员就是使用人工编写的二进制代码交给单片机去工作的。 今天,
我们不必用烦人的二进制去编写程序,完全可以将我们容易理解的 程序语言”通过 翻译'软件 翻译”成单片
机所需的二进制代码,然后交给单片机去执行。这里的 程序语言”目前主要有汇编和 C两种;在这里我们 所说的翻译'软件,同行们都叫它为 编译器”,将程序语言”通过编译器产生单片机的二进制代码的过程叫 编译。前面说到,要想使 LED1变亮,只需将对应的单片机引脚电平变为低电平就可以了。现在让我们将 上面提到的8只LED流水灯实验写为汇编语言程序。
汉语”语言
汇编语言
开始:
star:
P1.0 低
clr p1.0
P1.0 高
setb p1.0
P1.1 低
clr p1.1
P1.1 高
setb p1.1
P1.2 低
clr p1.2
P1.2 高
setb p1.2
P1.3 低
clr p1.3
P1.3 高
setb p1.3
P1.4 低
clr p1.4
P1.4 高
setb p1.4
P1.5 低
clr p1.5
P1.5 高
setb p1.5
P1.6 低
clr p1.6
P1.6 高
setb p1.6
P1.7 低
clr p1.7
P1.7 高
setb p1.7
返回到开始
ljmp star
结束
end
这里用到了四条汇编指令:clr、 setb、 Ijmp、end ;
clr :是将其后面指定的位清为 0;
setb :是将其后面指定的位置成 1 ;
Ijmp :是无条件跳转指令,意思是:跳转到指定的标号处继续运行。
end :是一条告诉编译器:程序到此结束的伪指令。伪指令只告诉编译器此程序到此有何 要求或条件,它
不参与和影响程序的执行。这里需要说明的是,按汇编语法要求,所编制的程序(下称源程序)之格式和 书写要求必须依下列原则:
1、源程序必须为纯文本格式文件,如用 Windows '附件冲的记事本”编写的文本文件;2、源程序的扩展
名应是*.ASM ; 3、一行只能写一条语句,以回车作为本句的结束, 每一语句行长度应少于 80个字符(即 40个汉字)。4、每行的格式应为:标号: 命令参数;注释
即一行由四部份组成,各部份的顺序不能搞错,依实际要求可以缺省其中的一部份或几部份,甚至全部省
去,即空白行。需要使用标号时标号后面必须有 :“”(冒号),而命令语句和参数之间必须用空格分开,
如果命令有多个参数,则参数与参数之间必须用 ,“ ”(逗号)分开,需要注释时注释前必须用 ;”(分号),
;'”后面的语句可以写任何字符,包括汉字用于解释前面的汇编语句,它将不参与汇编,不生成代码。由
于汇编程序对我们还不直观,所以在编写源程序时,应当养成多写注释的习惯,这样有助于今后源程序的 阅读和维护。
标号是标志程序中某一行的符号名,编译后标号的数值就是标号所在行代码的地址。在宏汇编 ASM51中
标号的长度不受限制,但标号中不能包含 :’或其它的一些特殊符号,也不能用汉字,可以用数字作标号,
但必须用字母开头。当标号作参数用(如标号作转移地址),在命令后面岀现时,必须舍去 :’’(如上面程
序中的 LJMP STAR中的STAR 是不能再有:)。
每行只能有一个标号,一个标号只能用在一处,如果有两行用了同一个标号,则汇编时就会出错。由于标
号的长度没有限制,可以用有意义的英文或汉语拼音来说明行,使源程序读起来更方便。
源程序中的字母不区分大小写,也就是说 star和STAR是一样的,请不要用大小写方式去区分不同的标
号。好拉!规矩知道了,现在该来看看前面我们编写的源程序该怎样处理了:
编写源程序:
先将编译软件安装好(c51eval软件的安装)。软件安装好我们就可以编写程序了。
文档评论(0)