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

流水式的亮,有时间间隔

1:设置一个变量zhidaoi,它可以从0循环到3

2:检测一个已取消缓冲的键。按“+1”

3:当I值为每个值时,执行相应的模式。

水量灯参考程序

#include

#include

#定义uchar无符号字符

Ucharj,温度;

无效延迟(无符号整型ms)

Uchart;

(女士)

对于(t = 0;T < 123;T + +);

Voidmain()

P1=0XFF;

延迟(500);

Temp=0xfe;//奇怪,led连接在P2.3~P2.6

对于(j = 0;J < 4;J + +)

P1=temp;

延迟(500);

Temp=_crol_(Temp,1);

P1=0XFF;

(1);

扩展资料:

注意事项:

#include“reg52。这个文件为单片机定义了一些特殊的功能寄存器

Typedef无符号int在16以下;//以声明的方式定义数据类型

无符号charu8;

//LED灯

Sbitleda=P0;

Sbitled1=P0^0;

Sbitled2=P0^1;

Sbitled3=P0^2;

Sbitled4=P0^3;

Sbitled5=P0^4;

Sbitled6=P0^5;

Sbitled7=P0^6;

Sbitled8=P0^7;

无效延迟(16岁以下)

,(我);

Voidmain()

而(1)

勒达=1;//所有的灯都亮着

//从左到右熄灭

Led1=0;

延迟(50000);//延迟时间约为450毫秒

Led2=0;

延迟(50000);//延迟时间约为450毫秒

Led3=0;

延迟(50000);//延迟时间约为450毫秒

Led4=0;

延迟(50000);//延迟时间约为450毫秒

Led5=0;

延迟(50000);//延迟时间约为450毫秒

Led6=0;

延迟(50000);//延迟时间约为450毫秒

Led7=0;

延迟(50000);//延迟时间约为450毫秒

Led8=0;

延迟(100000);//延迟大约900毫秒

//从右到左照明

Led8=1;

延迟(50000);//延迟时间约为450毫秒

Led7=1;

延迟(50000);//延迟时间约为450毫秒

Led6=1;

延迟(50000);//延迟时间约为450毫秒

Led5=1;

延迟(50000);//延迟时间约为450毫秒

Led4=1;

延迟(50000);//延迟时间约为450毫秒

Led3=1;

延迟(50000);//延迟时间约为450毫秒

Led2=1;

延迟(50000);//延迟时间约为450毫秒

Led1=1;

延迟(50000);//延迟时间约为450毫秒

勒达=1;//所有的灯都亮着

温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2018-03-06
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同时左移后再同时右移的流水灯程序。本回答被提问者和网友采纳
第2个回答  2008-06-03
我的博客上有,你可以去看看,有两个,延时的方法不一样.