#include<reg52.h>包含了51单片机的地址定义,可以代替sfr定义
寄存器可以通过赋值十六进制数来控制8个二极管的亮灭
如P2=0xFE 就是P2的位依次为1111 1110
可以通过位左移再取反来实现流水灯 P2= ~(0x01<<x);
可以利用库函数进行左移,进一步简化程序。加上#include<intrins.h>
_crol_(P2,1) 定义字符型 左移
_cror_(P2,1) 定义字符型 右移
_irol_(P2,1) 定义整型 左移
_iror_(P2,1) 定义整型 右移
附一个昨天写的加减速流水灯
[C] 纯文本查看 复制代码 #include <reg52.h>
#include <intrins.h>
void main()
{
unsigned int i,a=0,b=0;//定义延时变量i 定义加减速变量a 循环次数变量b
//unsigned char x=0;//定义左移变量
P2=0XF8;
while (1)
{b=0;
/*while (a<25)
{
i=65535-2000*a;//加速程序
a++; //加速变量
while (i--);//延时程序
P2=_crol_(P2,1);//循环左移语句
}*/
while (a<65)
{
i=65535-1000*a;//加速程序
a++; //加速变量
while (i--);//延时程序
P2=_crol_(P2,1);//循环左移语句
}
while (b<50)
{
i=65535-1000*a;//加速程序
b++;
while (i--);//延时程序
P2=_crol_(P2,1);//循环左移语句
}
while (a>0)
{
i=65535-1000*a;//加速程序
a--; //减速变量
while (i--);//延时程序
P2=_crol_(P2,1);//循环左移语句
}
/*while (a>0)
{
i=65535-2000*a;//加速程序
a--; //减速变量
while (i--);//延时程序
P2=_crol_(P2,1);//循环左移语句
}*/
}
}
|