标题:
单片机流水灯三种不同方法源程序(位运算+库函数+字符型数组)
[打印本页]
作者:
Lydia~
时间:
2018-10-28 08:08
标题:
单片机流水灯三种不同方法源程序(位运算+库函数+字符型数组)
流水灯程序(位运算):
#include <REGX51.H>
#define uchar unsigned char
#define uint unsigned int
unsigned char i;
unsigned char temp;
void Delayms(unsigned int ms)
{
unsigned int i,j;
for(i=0;i<ms;i++)
for(j=0;j<120;j++);
}
void main(void)
{
while(1)
{
temp = 0x01; //0x01=0000 0001
for(i=1;i<8;i++)
{
P2=~temp; //P2=1111 1110 对temp取反,保证每次循环只亮一个灯
temp=temp<<1; //按位左移,高位丢弃,低位补0
Delayms(200);
}
for(i=1;i<8;i++)
{
P2=~temp;
temp=temp>>1; //按位右移,高位补0,低位丢弃
Delayms(200);
}
}
}
复制代码
流水灯代码(库函数):
#include <REGX51.H>
#include <intrins.h>
#define uchar unsigned char
#define uint unsigned int
void Delayms(uint ms)
{
uchar t;
while(ms--)
{
for(t=0;t<120;t++);
}
}
void main()
{
uchar i,j;
P2 = 0xfe;
while(1)
{
for(i=0;i<7;i++)
{
P2 = _crol_(P2,1); //P1端口向左循环移动一位
Delayms(300);
}
for(j=0;j<7;j++)
{
P2 = _cror_(P2,1); //P1端口向右循环移动一位
Delayms(300);
}
}
}
复制代码
流水灯(字符型数组):
#include <REGX51.H>
#define uchar unsigned char
#define uint unsigned int
uchar code Pattern_P2[] =
{
0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f
};
void Delayms(uint ms)
{
uchar t;
while(ms--)
{
for(t=0;t<120;t++);
}
}
int main()
{
uchar i;
while(1)
{
for(i=0;i<8;i++)
{
P2=Pattern_P2[i];
Delayms(200);
}
for(i=8;i--;i>0)
{
P2=Pattern_P2[i];
Delayms(200);
}
}
}
复制代码
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1