可以通过左移函数_crol_()和右移函数_cror_()来实现LED等的来回流动。
具体实现方法可以参考如下程序:<pre t="code" l="cpp">#include <reg51h>
#include <intrinsh>
#define uint unsigned int
#define uchar unsigned char
void delay(uint a);
void main()
{
P1=0xfe;
while(1)
{
// 向左循环点亮LED
for(i=0; i<7; i++)
{
P1=_crol_(P1,1); // 左移一位,点亮下一位LED
delay(55);
}
// 向右循环点亮LED
for(i=0; i<7; i++)
{
P1=_cror_(P1,1); // 右移一位,,点亮上一位LED
delay(55);
}
}
}
// 延时函数,延时a毫秒
void delay(uint a)
{
uint x,y;
for(x=a;x>0;x--)
for(y=110;y>0;y--);
}
在四个灯循环点亮的状态下,每点亮一个灯需要延时,如果调用延时子程序,按键就显示不灵敏了,所以,采用定时器中断的方式控制延时,就不影响按键了。
#include<reg51h>
#include<intrinsh>
仿真图效果。
ORG 0000H
LJMP MAIN
ORG 000BH
LJMP T0ISR
ORG 0030H
MAIN:
MOV TMOD,#01H
MOV TH0,#HIGH(65536-50000)
MOV TL0,#LOW(65536-50000)
SETB TR0
SETB ET0
SETB EA
CLR P10
MOV R2,#10
SJMP $
T0ISR:
CLR TR0
MOV TH0,#HIGH(65536-50000)
MOV TL0,#LOW(65536-50000)
SETB TR0
DJNZ R2,T0E
CPL P10
MOV R2,#10
T0E:
RETI
END
以上就是关于led八位流水灯左右循环闪烁全部的内容,包括:led八位流水灯左右循环闪烁、51单片机按键控制按下K1四个led灯循环亮,再按一下全灭,c程序怎么写、用汇编语言编写51单片机程序,让LED灯亮一秒灭一秒,无限循环,时钟是6等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)