标题: 单片机做流水灯C程序 [打印本页]
作者: liuyang 时间: 2012-3-19 03:22
标题: 单片机做流水灯C程序
程序原是控制P1口现在经我改成P2口,学单片机的你 知道怎么改的......废话不多说 下面是原代码:
#include<reg52.h> //包含头文件
#include<intrins.h> //包含有左右循环移位子函数的库
#define uchar unsigned char
#define uint unsigned int
void delay(uint);
void main()
{
while(1)
{
uchar i,j,k;
for(i=3;i>0;i--)
{
P2=0x00; //点亮P1口所有LED,延时1000ms
delay(1000);
P2=0xff; //熄灭P1口所有LED,延时1000ms
delay(1000);
}
for(i=3;i>0;i--) //奇偶交替成流水灯状态
{
P2=0x55;
delay(1000);
P2=0xaa;
delay(1000);
}
P2=0xff;
delay(300);
for(i=3;i>0;i--) //P1口单灯左移流水,循环3次
{
k=0xfe;
for(j=0;j<8;j++)
{
P2=k;
delay(200);
k=_crol_(k,1);
}
}
P2=0xff;
delay(300);
for(i=3;i>0;i--) //P1口单灯右移流水,循环3次
{
k=0xfe;
for(j=0;j<8;j++)
{
P2=k;
delay(300);
k=_cror_(k,1);
}
}
P2=0xff;
delay(300);
for(j=0;j<3;j++) //P1口由两边向中间流水,循环3次
{
P2=0x7e;
delay(300);
P2=0xbd;
delay(300);
P2=0xdb;
delay(300);
P2=0xe7;
delay(300);
}
P2=0xff;
delay(300);
for(j=0;j<3;j++) //P1口由中间向两边流水,循环3次
{
P2=0xe7;
delay(300);
P2=0xdb;
delay(300);
P2=0xbd;
delay(300);
P2=0x7e;
delay(300);
}
P2=0xff;
delay(300);
k=0xfe; //赋初值
for(j=0;j<8;j++)
{
for(i=0;i<8-j;i++) //左移
{
P2=k; //点亮小灯
delay(200); //延时200毫秒
k=_crol_(k,1); //将a变量循环左移一位
}
k=_crol_(k,j); //补齐,方便下面的左移一位
P2=0xff; //全部关闭
k=k<<1; //左移一位让多一个灯点亮
}
}
}
void delay(uint xms) //延时函数
{
uint i,j;
for(i=xms;i>0;i--) //外层for中变量为多少,就延时约多少ms
for(j=110;j>0;j--); //当内层for语句中变量恒定值为110时
}
作者: 51mcu 时间: 2012-3-20 17:22
最好增加一些简单的功能说明.
欢迎光临 (http://www.51hei.com/bbs/) |
Powered by Discuz! X3.1 |