#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; } } 这个功能可以用中断来实现,当然,现在我写的这个也可以实现。由于你用的晶振频率不知道,所以你自己修改一下延时时间,再把头文件改一下,就可以了,我试验了,可以实现改功能。
用一个变量count计按键按下的次数 然后使用switch-case语句 变量是count 根据count的值确定led的状态
按键控制LED闪烁,状态机就是检测按键,如果没有按下就不闪烁,如果按下就开始闪烁。楼主提的问题就是一个问题。你到底是想问状态机还是想问程序?
“用单片机C语言怎么写用状态机,实现按键控制LED灯闪烁,这个程序”
“用单片机C语言怎么写,用状态机实现,按键控制LED灯闪烁这个程序”
???