铁血匠心的笔记 https://passport2.21ic.com/?550600 [收藏] [复制] [RSS]

日志

最新修改的流水灯简易程序

已有 1286 次阅读2009-4-1 12:30 |系统分类:单片机| 单片机, 流水灯, C语言

/************************************************************************/
/*罗列快乐*/
/*网站地址:
http://2099.5d6d.com*/
/*模块名:流水灯模块 流水灯型号:红光LED*/
/*创建人:张东 日期:2009-3-23*/
/*修改人:张东 日期:2009-4-1*/
/*功能描述:1.P1口所有LED间隔1000ms闪烁
   2.P1口所有LED呈交替流水状
   3.P1口流水灯-左移,循环3次
   4.P1口流水灯-右移,循环3次
   5.P1口由两边向中间流水,循环3次
   6.P1口由中间向两边流水,循环3次*/
/*其他说明:*/
/*版本:*/
#include"reg51.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--)        
  {
   P1=0x00;           //点亮P1口所有LED,延时1000ms
   delay(1000);
   P1=0xff;           //熄灭P1口所有LED,延时1000ms
   delay(1000);
  }
  for(i=3;i>0;i--)       //奇偶交替成流水灯状态
  {
   P1=0x55;      
   delay(1000);
   P1=0xaa;
   delay(1000);
  } 
  P1=0xff;
  delay(300);
  for(i=3;i>0;i--)       //P1口单灯左移流水,循环3次
  {
   k=0xfe;
   for(j=0;j<8;j++)
   {
    P1=k;      
    delay(200);
    k=_crol_(k,1);
   }
  }
  P1=0xff;
  delay(300);
  for(i=3;i>0;i--)       //P1口单灯右移流水,循环3次
  {
   k=0xfe;
   for(j=0;j<8;j++)
   {
    P1=k;      
    delay(300);
    k=_cror_(k,1);
   }
  }
  P1=0xff;
  delay(300);
  for(j=0;j<3;j++)           //P1口由两边向中间流水,循环3次
  {
   P1=0x7e;      
   delay(300);
   P1=0xbd;
   delay(300);
   P1=0xdb;      
   delay(300);
   P1=0xe7;
   delay(300);
  }
  P1=0xff;
  delay(300);
  for(j=0;j<3;j++)          //P1口由中间向两边流水,循环3次
  {
   P1=0xe7;      
   delay(300);
   P1=0xdb;
   delay(300);
   P1=0xbd;      
   delay(300);
   P1=0x7e;
   delay(300);
  }
  P1=0xff;
  delay(300);
  k=0xfe;             //赋初值
  for(j=0;j<8;j++)
  {
   for(i=0;i<8-j;i++)        //左移
   {
    P1=k;             //点亮小灯
    delay(200);       //延时200毫秒
    k=_crol_(k,1);       //将a变量循环左移一位
   }
   k=_crol_(k,j);         //补齐,方便下面的左移一位
   P1=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时
}


路过

鸡蛋

鲜花

握手

雷人

评论 (0 个评论)