中科因仑“3+1”工程特种兵精英论坛
标题:
实验13-上下来回的流水灯
[打印本页]
作者:
张衍波
时间:
2015-5-5 16:17
标题:
实验13-上下来回的流水灯
1
#include <reg52.h>
#include <intrins.h>
#define uchar unsigned char
#define uint unsigned int
void DelayMS(uint x)
{
uchar t;
while(x--)
{
for(t=120;t>0;t--);
}
}
void main()
{
uchar i;
P0=0xFE;
while(1)
{
for(i=7;i>0;i--)
{
P0=_crol_(P0,1);
DelayMS(550);
}
for(i=7;i>0;i--)
{
P0=_cror_(P0,1);
DelayMS(550);
}
}
}
2
/********************************************************************
佳和科技
*********************************************************************/
//实例6:上下来回的流水灯:
#include<reg52.h> //包含单片机寄存器的头文件
#define uchar unsigned char//宏定义无符号字符型
#define uint unsigned int //宏定义无符号整型
/********************************************************************
初始定义
*********************************************************************/
uchar temp; //定义字符型变量
uchar a,b,i;
/********************************************************************
延时函数
*********************************************************************/
void delay()//延时程序
{
uchar m,n,s;
for(m=20;m>0;m--)
for(n=20;n>0;n--)
for(s=248;s>0;s--);
}
/********************************************************************
主函数
*********************************************************************/
main()
{
while(1) //无限循环
{
temp=0xfe; //11111110定义每次一个灯亮
P0=temp;//直接对1/0口赋值,使批输出低电平。
delay();//延时
/**********************************
LED从移动上到下移动
***********************************/
for(i=1;i<8;i++)//实现LED的从右到左移动
{
a=temp<<i; //左移i位
b=temp>>(8-i); //右移8-i位
P0=a|b;//按位或
delay();
}
/**********************************
LED从移动下到上移动
***********************************/
for(i=1;i<8;i++)//实现广告灯的从左到右移动
{
a=temp>>i; //右移i位
b=temp<<(8-i); //左移8-i位
P0=a|b;//按位或
delay();
}
}
}
/********************************************************************
结束
*********************************************************************/
[attach]2671[/attach]
欢迎光临 中科因仑“3+1”工程特种兵精英论坛 (http://bbs.enlern.com/)
Powered by Discuz! X3.4