LED流水灯实验
  • categories

LED流水灯实验

下载程序后“LED模块”的D1-D8指示左右点亮

代码一:

#include "reg52.h"
#include "intrins.h"
typedef unsigned int u16;	//对系统默认数据类型进行重定义
typedef unsigned char u8;
void delay_10us(u16 ten_us)
{
  while(ten_us--);	
}
void main()
{
  u8 i=0;
  LED_PORT=~0x01;
  delay_10us(50000);
  while(1)
   {
      //方法1:使用移位+循环实现流水灯
  //for(i=0;i<8;i++)
  // {
  // LED_PORT=~(0x01<<i);	//将1右移i位,然后取反将结果赋值到LED_PORT
  // delay_10us(50000);
  // }
    
      //方法2:使用循环+_crol_或_cror_函数实现流水灯
      for(i=0;i<7;i++)	 //将led左移一位
     {									  
        LED_PORT=_crol_(LED_PORT,1);
        delay_10us(50000); 	
     }
      for(i=0;i<7;i++)	//将led右移一位
     {
        LED_PORT=_cror_(LED_PORT,1);
        delay_10us(50000);	
     }	
   }		
}	

代码二:

#include "reg52.h"
typedef unsigned int u16;	//对系统默认数据类型进行重定义
typedef unsigned char u8;
void time (u16 i)
{
  u16 j,k;
  for(j=0;j<i;j++)
  {
    for(k=0;k<225;k++);
  }
}
void main()
{
  u8 p;
  for(p=0x01;p!=0x00;p<<=1)
  {
    P2=~p;
    time(5000);
  }
}

说明:

typedef [已存在的数据类型] [自定义变量]

  • 函 数 名 : delay_10us

  • 函数功能 : 延时函数,ten_us=1时,大约延时10us

  • 输 入 : ten_us

  • 输 出 : 无

  • 函 数 名 : time

  • 函数功能 : 延时函数,i=1时,大约延时2.25us

  • 输 入 : i

  • 输 出 : 无

  • 函 数 名 : main

  • 函数功能 : 主函数

  • 输 入 : 无

  • 输 出 : 无


comment: