» 首页 » 电脑_数码 » 编程 » 8个LED指示灯循环闪烁的程序(单片机)

8个LED指示灯循环闪烁的程序(单片机)

流水式的亮,有时间间隔


ORG 0000H
JMP MAIN
ORG 0030H

;************************************************
MAIN:
MOV A,#0FEH ;赋初始值
LOOP:
MOV R0,#07H ;移动次数
LOOPL:
MOV P0,A ;A中的值送P0口
MOV P2,A ;A中的值送P2口
RL A ;左移
CALL DELAY;调用延时
DJNZ R0,LOOPL

MOV R0,#07H ;移动次数
LOOPR:
MOV P0,A
MOV P2,A
RR A ;右移
CALL DELAY
DJNZ R0,LOOPR
JMP LOOP

;************************************************
DELAY:
MOV R6,#0FFH
DEL:
MOV R7,#0FFH
DJNZ R7,$
DJNZ R6,DEL
RET

;************************************************
END

该程序是P0 P2口的LED同时左移后再同时右移的流水灯程序。
我的博客上有,你可以去看看,有两个,延时的方法不一样.
/************************************************************
* LedRun
* Donald, DONG ELECT. LAB.
* 2008.4.28 [complete]
* --------------------------------------------------
* LED跑马灯程序,先全亮,然后移动
*
* P0: 8个LED
***********************************************************/
#include <reg52.h>

#ifndef _DG_TYPE_
#define _DG_TYPE_
typedef unsigned char uchar;
typedef unsigned int uint;
#endif

#define LED P0

void DelayMs(uint unMs);

void main()
{
char i;
LED = 0x00;
DelayMs(1000);

while(1){
LED = ~0x01;
for(i = 1; i <= 8; i++){
DelayMs(1000);
LED = ~(0x01 << i);
}
}
}

/************************************************************
* Name: DelayMs
* Func:
* 延时unMs个毫秒
* Para:
* uint unMs: 延时毫秒的个数
* Return: None
***********************************************************/
void DelayMs(uint unMs)
{
uint i, j;
for(i = unMs; i > 0; i--){
for(j = 120; j > 0; j--);
}
}

参考资料:blog.ednchina.com/dong_elec_lab

 相关问题
·8个LED指示灯循环闪烁的程序(单片机)
·interbase 与delphi连接时要配置什么文件吗?
·什么叫PI 图
·我现在手头有个asp的论坛源代码,access数据库的,怎么传到...
·急!!帮我写个MATLAB程序
·设计c++程序计算字符串s中包含字母数量大于n的单词个数
·free/turbo pascal 菜鸟问题
·8、 存在一个英文文本,编写程序对所有没有以大写字母开...
·谁有好的美女网站
·有哪些打包工具可以把VB里的控件打包了,安装时就自动注册...
·填写出下列触发器中缺少的关键字,使下面语句完整
·新安装的visual studio 2005 为什么只有库简介
·SQL语句 赋值
·条形统计图里,用1.5厘米长的直条表示6冬,用多少厘米长是...
·执行力有哪些内容

 《8个LED指示灯循环闪烁的程序(单片机)》答案收集时间:2008-06-14 14:38:51



©2007 电脑技术问答录