51八只LED灯做流水灯实验Word文件下载.docx

上传人:b****4 文档编号:13822526 上传时间:2022-10-13 格式:DOCX 页数:13 大小:244.10KB
下载 相关 举报
51八只LED灯做流水灯实验Word文件下载.docx_第1页
第1页 / 共13页
51八只LED灯做流水灯实验Word文件下载.docx_第2页
第2页 / 共13页
51八只LED灯做流水灯实验Word文件下载.docx_第3页
第3页 / 共13页
51八只LED灯做流水灯实验Word文件下载.docx_第4页
第4页 / 共13页
51八只LED灯做流水灯实验Word文件下载.docx_第5页
第5页 / 共13页
点击查看更多>>
下载资源
资源描述

51八只LED灯做流水灯实验Word文件下载.docx

《51八只LED灯做流水灯实验Word文件下载.docx》由会员分享,可在线阅读,更多相关《51八只LED灯做流水灯实验Word文件下载.docx(13页珍藏版)》请在冰豆网上搜索。

51八只LED灯做流水灯实验Word文件下载.docx

P1.0低

clrp1.0

P1.0高

setbp1.0

P1.1低

clrp1.1

P1.1高

setbp1.1

P1.2低

clrp1.2

P1.2高

setbp1.2

P1.3低

clrp1.3

P1.3高

setbp1.3

P1.4低

clrp1.4

P1.4高

setbp1.4

P1.5低

clrp1.5

P1.5高

setbp1.5

P1.6低

clrp1.6

P1.6高

setbp1.6

P1.7低

clrp1.7

P1.7高

setbp1.7

返回到开始

ljmpstar

结束

end

这里用到了四条汇编指令:

clr、setb、ljmp、end;

clr:

是将其后面指定的位清为0;

setb:

是将其后面指定的位置成1;

ljmp:

是无条件跳转指令,意思是:

跳转到指定的标号处继续运行。

end:

是一条告诉编译器:

程序到此结束的伪指令。

伪指令只告诉编译器此程序到此有何要求或条件,它不参与和影响程序的执行。

这里需要说明的是,按汇编语法要求,所编制的程序(下称源程序)之格式和书写要求必须依下列原则:

1、源程序必须为纯文本格式文件,如用Windows“附件”中的“记事本”编写的文本文件;

2、源程序的扩展名应是*.ASM;

3、一行只能写一条语句,以回车作为本句的结束,每一语句行长度应少于80个字符(即40个汉字)。

4、每行的格式应为:

标号:

命令参数;

注释

即一行由四部份组成,各部份的顺序不能搞错,依实际要求可以缺省其中的一部份或几部份,甚至全部省去,即空白行。

需要使用标号时标号后面必须有“:

”(冒号),而命令语句和参数之间必须用空格分开,如果命令有多个参数,则参数与参数之间必须用“,”(逗号)分开,需要注释时注释前必须用“;

”(分号),“;

”后面的语句可以写任何字符,包括汉字用于解释前面的汇编语句,它将不参与汇编,不生成代码。

由于汇编程序对我们还不直观,所以在编写源程序时,应当养成多写注释的习惯,这样有助于今后源程序的阅读和维护。

标号是标志程序中某一行的符号名,编译后标号的数值就是标号所在行代码的地址。

在宏汇编ASM51中标号的长度不受限制,但标号中不能包含‘:

’或其它的一些特殊符号,也不能用汉字,可以用数字作标号,但必须用字母开头。

当标号作参数用(如标号作转移地址),在命令后面出现时,必须舍去‘:

’(如上面程序中的LJMPSTAR中的STAR是不能再有:

)。

每行只能有一个标号,一个标号只能用在一处,如果有两行用了同一个标号,则汇编时就会出错。

由于标号的长度没有限制,可以用有意义的英文或汉语拼音来说明行,使源程序读起来更方便。

源程序中的字母不区分大小写,也就是说star和STAR是一样的,请不要用大小写方式去区分不同的标号。

好拉!

规矩知道了,现在该来看看前面我们编写的源程序该怎样处理了:

编写源程序:

先将编译软件安装好(c51eval软件的安装)。

软件安装好我们就可以编写程序了。

第一步:

双击Uvw51图标,出现如图一所示的主界面

第二步:

新建文件

单击菜单栏内的“文件----新建”或者单击图标按钮则在上图所示的灰色区域内出现一个白色的编辑区,这时我们就中以在这里编辑程序了。

如图二所示。

图二

第三步:

编程程序

建立了一个新的编程文件后,我们就可以在这里编写我们所需要的程序了,下面我们就来编写前面所说的程序吧。

如图三所示:

第四步:

保存文件

程序编写好了,我们当然要记得保存了,要不我们编写程序就白费劲了。

好了,下面我们将上面编写的程序保存起来:

单击“文件----保存”或者单击图标,出现如图四所示的对话框:

图四

这时参照图五所示将对话框的内容设置好:

c51eval保存文件时默认的文件扩展是名*.C,请按图五所示改变为为*.a51:

图五

我们这里就先将文件保存在D/DDW文件夹中,文件名你可以随便取,这里先叫他为LED.a51;

需强调的是保存文件的文件夹和文件名不能使用中文!

即保存文件时不能以如下格式保存:

正确的保存路径:

D/DDW/LED.a51当然,保存的文件夹名DDW、编写的程序的文件名LED,你都可以随意的取一个,可以是D/ABC/000.a51。

这就取决于你的兴趣了。

错误的保存路径:

D/源程序/DDW/LED.a51,或者是D/DDW流水灯程序.a51。

总之在源程序的保存路径下不能有中文的出现,同时文件名不能取的太长。

第五步:

建立项目

将汇编的源程序保存后,还没有得到我们所需要的文件,这时我们还需要再建立项目,以便得到我们所需的hex文件。

新建项目的步骤如下:

首先先打开新建项目的对话框文件,如图六所示:

图六

点击新建项目后出现如图七所示的对话框,我们将对话框的参数设定好。

将文件名设置成与刚才源程序的文件名相同,即设为LED.prj,同时保存的路径跟前面的源程序保存的路径一样,在D/DDW上。

现在就可以把刚才建立的项目文件LED.prj添加到刚保存的LED.A51源程序上了,注意它们都在同一个根目录下。

图七

按图七所示操作后,会出现如图八所示的对话框:

图八

点击“(A)加”出现如图九所示画面:

图九

按图九所示完成操作后,软件会自动打开一个对话框,如图十所示:

图十

如图十所示点击保存后,系统会自动回复到汇编状态。

这时点击*创建所有图标*按钮,则进行了转换,并出现如图十一所示的状态显示画面:

图十一

完成上述操作后,在图十一,我们看到了创建成功了的提示画面,这时我们点击OK就大功告成了。

打开我们文件的保存路径:

我的电脑/D/DDW我们可以看到包含hex文件在内的所有相关程序文件了。

我们上面的项目文件也在其中了。

他的名字叫作LED.hex文件。

好啦,到此我们已将第一个流水灯程序编写、编译、烧写进行完啦,再下来就是将烧写好的AT89C51从编程器上取下,放到“SP-51实验板”学习套件的实验部份通电让LED1~LED8“流水”。

说明:

由于单片机的时钟高达12MHz,8个LED发光与熄灭的时间很短,实际实验结果凭我们的肉眼是看不到“流水”效果的!

那怎样才能让我们肉眼看到“流水”灯效果呢?

请继续学习下节课

 流水灯实验详解二

上一节的实验最后没有得到“流水”显示的效果,主要是单片机执行每条指令的时间很短,我们肉眼无法看到LED的熄灭与点亮。

单片机内部能按部就班的自动工作,正是在系统时钟的作用下,内部各逻辑硬件产生各种所需脉冲信号而实现的。

这个时钟信号(既晶体振荡信号)的周期称“振荡周期”。

我们这个实验中晶体使用的是12MHZ.在单片机中,要处理最短周期的一条指令需要由12个振荡周期(既晶振振荡周期)组成的,这个叫“机器周期”。

8051核的单片机,大多数指令只用一个机器周期(既单周期),也有双周期和四周期的指令。

本实验中用到的SETBP.x和CLRP.x均属于单周期指令,也就是说,执行一句SETBP.x用时仅1uS(微秒),CLRP.x也是1uS;

难怪我们前面的程序不能看到流水效果。

现在,将程序改动一下,在每点亮一个LED后,让程序干点别的事,也就是让它等一会再将该LED熄灭,继续执行下面的程序:

DDW:

;

程序开始

CLR

P1.0

LED1亮

ACALL

DELAY

调用延时子程序

SETB

LED1灭

P1.1

换灯,同上

?

P1.2

P1.3

P1.4

P1.5

P1.6

P1.7

LJMP

DDW

返回到开始循环

DELAY:

延时子程序

MOV

R1,#50

AD10:

 

R2,#100

AD11:

R3,#100

DJNZ

R3,$

R2,AD11

R1,AD10

RET

延时子程序结束,返回到调用处的下一句

END

请将上面的程序保存为1LED.asm,进行编译,并烧写到AT89S51中,之后将89S51安装到套件的实验部份插座上实验,这回显示的就是“流水灯”的效果了!

回过头,让我们看看延时子程序是怎样工作的:

单片机内部有不少寄存器,这些寄存器在单片机通电时,你可以给他写入数据(是单片机按你程序要求写的数据,而不是编程器写的),当第二次给他写入新数据时,前次的数据就被新数据覆盖;

当然也可以从寄存器中读取数据。

当单片机没有电源供给时,寄存器内部的数据也随即消失;

这些寄存器人们叫他RAM,而用编程器将我们编写的程序烧写到单片机中的存储器叫ROM;

现在,我们应该清楚:

RAM是让程序去使用的,ROM是我们编写的程序存放的地方!

前面说过,单片机内部有不少RAM,本实验用的AT89C51有多少寄存器?

我们现在不必关心,现在只须知道单片机内部有名叫R0~R7的这8个寄存器。

这8个寄存器每个都由8个单独的位寄存器组成,最大存放数据为二进制的11111111,十六进制=FF,十进制=255。

在使用时注意不要大于其有效范围。

上面延时程序中,先用到MOVR1,#50,MOV是移动的意思,该句是将50这个十进制数放到R1中;

50是立即数,按汇编语言要求前面要加“#”号,汇编语言还规定,十六进制数后面要加“?

H”,十六进制数的高位是字母时在字

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 党团工作 > 入党转正申请

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1