欢迎光临散文网 会员登陆 & 注册

51单片机100例实例之11例

2021-01-20 16:37 作者:技术流阿宅  | 我要投稿

//项目名称:4只按键控制led移位

//项目再创作者:科技小宅神

//完成时间:2021/01/20

proteus仿真图

#include <reg51.h>

#include <intrins.h>//c51内部移位函数

#define uchar unsigned char

#define uint unsigned int


//1毫秒延时程序

void DelayMS(uint x)

{

  uchar i;

 while(x--)

 {

   for(i=200;i>0;i--);

 }

}

//流水灯移动程序

void Move_LED()

{   //P1.4按下为低电平0,那么P0逐次右移一位(上移)

  if((P1 &= 0x10)==0) P0 = _cror_(P0,1);

 //P1.5按下为低电平0,那么P0逐次左移一位(下移)

 else if((P1 &= 0x20)==0) P0 = _crol_(P0,1);

 //P1.6按下为低电平0,那么P2逐次右移一位(上移)

 else if((P1 &= 0x40)==0) P2 = _cror_(P2,1);

 //P1.7按下为低电平0,那么P2逐次左移一位(下移)

 else if((P1 &= 0x80)==0) P2 = _crol_(P2,1);

}

//主程序

void main()

{

  uchar Recent_Key=0xff;

 P0=0xfe;//1111 1110 初始值

 P1=0xfe;//1111 1110 初始值

 P2=0xfe;//1111 1110 初始值 

 while(1)

 {

   if(Recent_Key != P1)//如果P1不全部等于0xff,即全部是11111111,全部接通,

  {

    Recent_Key=P1;//令P1口全部接通为高电平

   Move_LED();//执行流水灯移动程序

   DelayMS(10);//延时,不要太久

  }

 }

}

51单片机100例实例之11例的评论 (共 条)

分享到微博请遵守国家法律