chc3361831 发表于 2012-1-11 23:16:23

按键点动控制流水灯的51单片机程序

#include "reg51.h"



sbit P1_0=P1^0;
sbit P1_1=P1^1;
sbit P1_2=P1^2;

          sbit P0_0=P0^0;
sbit P0_1=P0^1;
sbit P0_2=P0^2;
sbit P0_3=P0^3;
sbit P0_4=P0^4;
sbit P0_5=P0^5;
sbit P0_6=P0^6;
sbit P0_7=P0^7;

void mdelay(unsigned int delaytime)
{unsigned int k=0;
   for(;delaytime>0;delaytime--)

{for(k=0;k<500;k++)
    {;}
}
}






void main()
{   unsigned char k;

        P1_0=1;
   P1_1=0;
    P1_2=0;
   
       
   for(;;)
{
        P3=0x0f;
    k=P3|0xfe;
       
       
       

        if(k!=0xff)
       
       
       
   {
      P0_0=~P0_0;
      mdelay(20);
      P0_0=~P0_0;

      P0_1=~P0_1;
       mdelay(20);
      P0_1=~P0_1;

   P0_2=~P0_2;
        mdelay(20);
    P0_2=~P0_2;


   P0_3=~P0_3;
   mdelay(20);
    P0_3=~P0_3;

    P0_4=~P0_4;
    mdelay(20);
    P0_4=~P0_4;

    P0_5=~P0_5;
   mdelay(20);
      P0_5=~P0_5;

    P0_6=~P0_6;
    mdelay(20);
    P0_6=~P0_6;

    P0_7=~P0_7;
    mdelay(20);
    P0_7=~P0_7;

}

       
}


}

raxfeer 发表于 2012-2-9 15:24:55

强烈建议不要用sbit声明来单个操作IO口,建议用“字节”的方式操作IO,比如说可以预声明一个char型数据,然用将此值直接赋值给IO口,而配合数组的使用,可以变化LED亮灭,想什么花样就什么花样,也可以使用位操作对8位io口进行操作、赋值。

前几天注_册的帐号,三天时间快到了,急于通过审核,有错误的地方还请指正……

hnqylgq 发表于 2019-10-19 15:12:15

楼上的编程思路很棒,要是有时间的话,可以传个例程给大家参考下就好了
页: [1]
查看完整版本: 按键点动控制流水灯的51单片机程序