
循环一次的话可以:
for(i=0;i<8;i++)
{;}
要实现多次循环的话,就需要在适当的时候把i在赋值为0,这样就会在for中一直循环下去。
for(i=0;i<8;i++)
{
循环点亮led的代码
if(i<7) break; i=7的时候,程序执行第8次,这时只要在led循环后把i赋值为0,这样就可以再次进入到for循环中
i=0;
}
大概思路就这样,办法还有好多,可以自己想想 然后编程试试,多动手
害人害到底,帮你写一个吧。
ORG 00H
AJMP MAIN
ORG 30H
MAIN:
MOV R0,#5
MOV R1,#8
MOV R2,#2
MAIN0:
MOV P1,#0
ACALL D05S
MOV P1,#0FFH
ACALL D05S
DJNZ R0,MAIN0
MOV A,#01H
MAIN1:
MOV P1,A
ACALL D05S
RL A
DJNZ R1,MAIN1
MOV R1,#8
DJNZ R2,MAIN1
AJMP MAIN
D05S:
MOV R7,#10
MOV R6,#100
MOV R5,#250
DJNZ R5,$
DJNZ R6,$-4
DJNZ R7,$-8
RET
END
#include <REGX52H>
void Delay1ms(unsigned int count) /延时函数,延迟时间为count×1ms)/
{
unsigned int i,j;
for(i=0;i<count;i++)
for(j=0;j<120;j++);
}
main()
{
unsigned char LEDIndex = 0; /声明8位变量LEDIndex,用来指示8个LED中哪个被点亮,初始值为00000000/
bit LEDDirection = 1; /声明位变量LEDDirection,用来指示点亮的方向,初始值为1/
while(1) /一直循环执行大括号里面的语句/
{
if(LEDDirection) /当LEDDirection=1时,0000 0001左移LEDIndex位,取反后送给P2端口,点亮一个LED/
P2 = ~(0x01<<LEDIndex);
else /当LEDDirection=0时,1000 0000右移LEDIndex位,取反后送给P2端口,点亮一个LED/
P2 = ~(0x80>>LEDIndex);
if(LEDIndex==7) /当一次循环结束时,把LEDDirection取反,下次循环时将以相反的顺序点亮/
LEDDirection = !LEDDirection;
LEDIndex = (LEDIndex+1)%8; /LEDIndex+1对8取余,保证LEDIndex在0~7之间/
Delay1ms(500); /延时500ms,即LED的点亮间隔为05s/
}
}
电路很简单八个led灯接在p1口运行后看到的效果是 从第一个灯开始 随着时间变化 二进制数的递减 所有的灯都会依次的点亮,当全部的灯都被点亮后再重新开始这个过程 一直循环下去 单片机是不是很有趣?
下面是c语言程序源码
#include <reg51h>
void delay100ms(); //如果函数是在主函数后面定义,那么一定要在主函数前面声明
void main()
{
int i;
i=0xfe;
while(1)
{P1=i;
i--;
delay100ms();
if(i==0)
i=0xfe;
}
}
void delay100ms(void)//
{
unsigned char a,b,c;
for(c=19;c>0;c--)
for(b=20;b>0;b--)
for(a=230;a>0;a--)
以上就是关于八盏跑马灯循环点亮后 怎样让它再循环依次点亮~~~全部的内容,包括:八盏跑马灯循环点亮后 怎样让它再循环依次点亮~~~、用keil编写一个跑马灯的程序,要求效果8个跑马灯闪烁五次,然后再循环两圈,接着再闪烁五次后循环两圈、用AT89C51单片机的P2口控制8个Led的流水灯的C程序看不懂等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)