单片机音响技术网
首页 | 热销产品 | 单片机入门 | 下载中心 | 技术文章 | Protel专区 | 电子制作 | 购物指南 | 发货查询 | 本站淘宝
动画01 当前位置:本站首页技术文章
文章搜索
pix
本站推荐产品
  • 单片机音响软件专业开发板
  • 详细介绍
  • TOPAV-2008单片机开发板 598元
pix
pix
pix
单片机技术文章精选
pix

单片机控制单个LED闪烁发光

单片机音响技术网 文章浏览次数:960

这个例子是让LED闪烁,即让LED交替亮与灭。要让接在P1.0引脚上的LED闪烁,实际上就是要LED亮一段时间,再灭一段时间,然后再亮,再灭。。。。换一个说法就是说P1.0周而复始地输出高电平、低电平。
单个闪烁程序如下:

;主程序

MAIN: SETB P1.0 (1)

CALL DELAY (2)

CLR P1.0 (3)

CALL DELAY (4)

JMP MAIN (5)


延时子程序

DELAY:MOV R7,#250 (6)

D1: MOV R6,#250 (7)

D2: DJNZ R6,D2 (8)

DJNZ R7,D1 (9)

RET (10)

END (11)
程序分析:
(1).将P1.0置位为高电平,即让LED熄灭.
(2).调用延时子程序.
(3)将P1.0置位为低电平,即让LED亮
(4).调用延时子程序
(5).跳转到主程序
(6).延时子程序开始,将立即数250传送给寄存器R7.
(7).将立即数250传送给寄存器R6.
(8).将R6中的内容减一后判断,若为0则程序向下执行;若不为0则跳转到D2处(即本行)执行.
(9).将R7中的内容减一后判断,若为0则程序向下执行,若不为0则跳转到D1处执行.
(10).返回调用子程序处.
(11).程序结束.

延时程序的分析

1) MOV

这条指令的意思是传递数据.在指令MOV R7,#250中,R7是接收者,250是被传递的数.这一条指令的意思是:将数据250送到R7中去.因此,执行完这条指令后,R7单元中的值是250.在250前面有个#号,这条指令称之为立即数传递指令,而#后面的数被称为立即数.

2) DJNZ

这条指令后面跟着的两个符号,一个是R6,,一个是D2.R6是寄存储器,D2是标号.DJNZ指令的执行过称如下:将后面第一个参数中的值减1,然后看这个值是否等于0.如果等于0,就往下一条知令执行,如果不等于0,则转移到第二个参数所指定的位置去执行,在这里是转移到由D2所标识的那条指令去执行.该条指令最终执行的结果是:指令被执行了250次(因为次前R6中已被送入了一个数:250).

在执行完DJNZ R6,D2(即R6中的值等于0)之后,转去执行下一条指令,即DJNZ R7,D1。由于R7中的值不为0,所以减1后转去D1标号处,即执行MOV R6,#250这条指令。这样,R6中又被送入了250这个数,然后再去执行DJNZ R6,D2,最终的结果是DJNZ R6,D2这条指令将被执行了250×250=62500次,从而实现了延时。

3)RET

子程序在执行过程中如果遇到这条指令,就会回到主程序,到调用这段程序指令的下一条指令继续执行。


摘录:半键纵横;   责任编辑:mcu51av 2007-11-10

上一篇:手把手教你建立Keil工程文件
下一篇:用单片机控制8个LED发光

pix

关于我们 | 联系我们 | 友情链接 | 网站地图 | 点击给我留言
Copyright © 2007 - 2008 单片机音响技术网 All rights reserved. 站长统计