//程序功能:流水灯控制左移 右移
//==============================================================
#include//头文件
L_M()//流水灯左移控制程序
R_M()//流水灯右移控制程序
//===============================================================
main() //主函数
{
while(1) //无限循环
{
L_M()//调用左移程序
R_M()//调用右移程序
}
}
//========左移控制程序==============================================
L_M() //左移主函数
{
unsigned char i,temp,a,b//声明无符号字符型变量A,TEMP I,B
unsigned int s//声明无符号整型变量S
temp=0xfe//左移初始值
P1=temp//P1输出信号点亮发光管
for( s=0s<30000s++)//延时程序
for (i=1i<8i++) //发光管移动的位数
{
a=temp<<扒弯i发光管左移i位
b=temp>>(8-i) //数据右移(8-I)位
P1=a|b //逻辑或运算,并输出到P1口
for(s=0s<30000s++)//延时程序
}
}
//================================================================
R_M()
{
unsigned char i,temp,a,b//声明无符号字符型变量A,TEMP I,B
unsigned int s//声明无符号整型变量S
temp=0x7f//左移初始值
P1=temp//P1输出信号点亮发光管
for(s=0s<30000s++)//延时程序信敏
for(i=1i<8i++) //发光管移动的位数
{ //发光管左移I位
a=temp>>春坦闷i
b=temp<<(8-i)//数据右移(8-I)位
P1=a|b//逻辑或运算,并输出到P1口
for(s=0s<30000s++)//延时程序
}
}
//=======================================================================
LED灯右移到最右边后向左移时是这样的:右移一位→第二个延时程序→第埋族一个延时程序→右移右移一位→第二个延时程序→第一个延时程序戚液迟,这样不断循环,循环到最左边,就开始了右移的程序。这样左移的延迟大高李一点的!
51单片机的左移右移,首先在开始要调用"intrins.h"的文件包,这个文件包含_cror_(右移),_crol_(左移);然后通过for语句来控制;
for(m=20m>0m--)
for(n=20n>0n--)
for(k=250k>0k--)
理解这三句,第一句是指:m=20m>0然后m--是真就执行:
for(n=20n>0n--)
for(k=250k>0k--)
这两句,m--一直减,减一陪咐次,里面就执行一次,这里是液宽20次。
流水灯的左右移,第一用"intrins.h"的文件包,第二要要会定义赋值芦埋纯变量,第三延时,这是关键。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)