教学篇-独立按键
admin · 技术文章 · 2024年09月27日

独立按键属于一种开关类器件,一端接地一端接IO口,所以单片机中读取到对应IO口为低电平表示按键已经按下,然后可以在代码中通过循环查询或者中断方式进行判断从而执行不同的代码


#include <reg52.h>

#include <intrins.h>

#define LED P2

sbit K1 = P1^4;

sbit K2 = P1^5;

sbit K3 = P1^6;

sbit K4 = P1^7;

sbit K5 = P3^5;

void Delay10ms(unsigned int);  //误差 0us

void main(void){

unsigned char n;

unsigned char i;

while(1){

if(K1 == 0){

  Delay10ms(1);

  //循环右移

  if(K1 == 0){

  LED = 0x7f;

  for(n=0;n<8;n++){

Delay10ms(50);

LED=_cror_(LED,1);

}

  }

  LED = 0xff;

}

//循环左移

if(K2 == 0){

Delay10ms(1);

if(K2 == 0){

LED = 0xfe;

  for(n=0;n<8;n++){

Delay10ms(50);

LED=_crol_(LED,1);

}

  }

  LED = 0xff;

  }

  //循环点亮

if(K3 == 0){

LED = 0x7f;

Delay10ms(1);

if(K3 == 0){

i = 0x7f;

  for(n=0;n<8;n++){

Delay10ms(50);

i = _cror_(i,1);

LED = LED & i;

}

  }

  LED = 0xff;

  }

  //闪缩7次

if(K4 == 0){

Delay10ms(1);

if(K4 == 0){

i = 0x80;

  for(n=0;n<8;n++){

LED = 0xaa;

Delay10ms(50);

LED = 0x55;

Delay10ms(50);

}

LED = 0xff;

  }

  }

  //灯全亮LED

  if(K5 == 0){

  Delay10ms(1);

if(K5 == 0){

LED = 0;

  }

  }

}

}

void Delay10ms(unsigned int c)  //误差 0us

{

    unsigned char a^b;

    for(;c>0;c--)

        for(b=38;b>0;b--)

            for(a=130;a>0;a--);

}


标签1 ( 15 )
标签2 ( 12 )
标签3 ( 4 )
标签4 ( 2 )
标签5 ( 7 )
标签6 ( 5 )
标签 ( 2 )