用单片机C语言怎么写用状态机实现按键控制LED灯闪烁这个程序

2025-03-25 05:40:10
推荐回答(3个)
回答1:

#include 

#define uchar unsigned char

#define uint unsigned int

sbit key=P1^2;

sbit p1_6=P1^6;

      

void delay(uchar delay_time)

{

 uchar n;

 uint m;

 for (n=0;n

 {

  for(m=0;m<10000;m++);

 }

}

void keyscan()

{

if(key==0)

  {

   delay(5);

   if(key==0)

    while(!key)

    {

     p1_6 = 0;

     delay(20);

     p1_6 = 1;

     delay(20);

    }

  }  

}

void main()

    WDT_CONTR = 0x3C;          

 while(1)

 {

  keyscan();

  WDT_CONTR = 0x3C;

 }

}

这个功能可以用中断来实现,当然,现在我写的这个也可以实现。由于你用的晶振频率不知道,所以你自己修改一下延时时间,再把头文件改一下,就可以了,我试验了,可以实现改功能。

回答2:

用一个变量count计按键按下的次数 然后使用switch-case语句 变量是count 根据count的值确定led的状态

回答3:

按键控制LED闪烁,状态机就是检测按键,如果没有按下就不闪烁,如果按下就开始闪烁。楼主提的问题就是一个问题。你到底是想问状态机还是想问程序?

“用单片机C语言怎么写用状态机,实现按键控制LED灯闪烁,这个程序”
“用单片机C语言怎么写,用状态机实现,按键控制LED灯闪烁这个程序”
???