c代码如下:
#include<reg51.h>
#include<intrins.h>
//包含循环左移函数
_cro_l头文件
unsigned
char
tmp
//中间变量
//////////////////////////////////////////////////////////////////////////////////////////////////
//
延时子程序
////////////////////////////////////////////////////////////////////////////////////////////////
void
delay(unsigned
int
cnt)
{
while(--cnt)
}
//////////////////////////////////////////////////////////////////////////////////////////////////
//
主函数
////////////////////////////////////////////////////////////////////////////////////////////////
main()
{
while(1)
//外层循环
{
tmp
=
0xfe
p1
=
tmp
while(1)
//内层循环,执行1、3、5、7亮灯循环
{
delay(30000)
//延时以便能观察到灯亮移动,自己可以调整时间,由晶振和实参决定
tmp
=
_crol_(tmp,2)
p1
=
tmp
if(tmp
==
0xbf)
//判断是否已经点亮到第7灯。是,则退出进入2、4、6、8循环
{
break
}
}
tmp
=
0xfd
p1
=
tmp
while(1)
//内层循环,执行2、4、6、8亮灯循环
{
delay(30000)
//延时以便能观察到灯亮移动,自己可以调整时间,由晶振和实参决定
tmp
=
_crol_(tmp,2)
p1
=
tmp
if(tmp
==
0x7f)
//判断是否已经点亮到第8灯。是,则退出进入1、3、5、7循环
{
break
}
}
}
}
低电平点亮START:MOV R0,#8
MOV R1,#8
SETB C
MOV A,#0FEH
MOV P1,A
S1:RLC A
CALL DELAY
MOV P1,A
DJNZ R0,S1
SETB C
MOV A,#0FEH
MOV P2,A
S2:RLC A
CALL DELAY
MOV P2,A
DJNZ R1,S2
AJMP START
DELAY:MOV R5,#0FFH //改变值变延时时间
LOOP2: MOV R4,#0FFH//改变值变延时时间
LOOP1:DJNZ R4,LOOP1
DJNZ R5,LOOP2
RET
END
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)