STC89C52 的单片机用C语言如何用循环移位、位操作和调用函数来实现流水灯从左到右再从右到左亮

kuaidi.ping-jia.net  作者:佚名   更新日期:2024-06-30
求用STC89C52RC单片机实现流水灯(C语言)

用STC89C52RC单片机实现流水灯,这是最简单的程序,用左移函数_corl_( )实现很容易。P0口接8个LED灯,用proteus 仿真时的仿真图和仿真效果如下。

给你这个双向流水灯C语言程序,经过调试成功的,按程序的内容配置硬件即可。
#include
void delay(unsigned int i);
char led;

main()
{
unsigned char i;
while(1)
{
led=0xfe;
for(i=0; i<8; i++)
{
P2=led;
delay(500);
led=led<<1;
led=led|0x01;
if(led==0x7f) break;
}
for(i=0; i<8; i++)
{
P2=led;
delay(500);
led=led>>1;
led=led|0x01;
if(led==0x80);
}
}
}

void delay(unsigned int i)
{
unsigned char j;
for(i; i>0; i--)
for(j=255; j>0;j--);
}

//是不是下面这个最简单:
//------------------------------------
#include<reg51.h>
#include<intrins.h>
void main (void)
{
unsigned char mask = 1, j = 0;
unsigned int i;
while (1) {
if (j < 7) mask = _crol_(mask, 1);
else mask = _cror_(mask, 1);
P1 = ~mask; for(i = 0; i < 30000; i++);
P1 = 0xff; //for(i = 0; i < 10000; i++);
j++;
j = j % 14;
}
}
//------------------------------------完

void delay()
{
unsigned int i;
for(i=0;i<1500;i++)

}
void fun(void)
{
unsigned char i;
for (i=0;i<8;i++)
{
P0=1<<i;
delay();
}
while(--i)
{
P0=1<<i;
delay();
}
}
void main()
{
while(1)
{
fun();
}
}

用<< >>就行