P1口控制8个发光管,P2的0脚控制按键。
其次就是问如何通过按键的触发,跳出死循环?万分感谢!!!!!
我想用单片机的一个按键控制8个发光二极管的发光样式,要三种样式,样式都要是循环的,用C语言来编写,
答案:2 悬赏:0
解决时间 2021-03-06 00:17
- 提问者网友:幽瑟玉琼情殇
- 2021-03-05 17:23
最佳答案
- 二级知识专家网友:无字情书
- 2021-03-05 18:33
利用p2的触发信号来计数,不同的数字采用case语句做状态机来分别。
如下:
unsigned integer cnt1=0;;
.bss p20_reg;
while()
{
if(p20_reg){ //按键有按下
if(~P2.0) {cnt1++; cnt1=cnt1>2?cnt1=0:cnt1;}
}
switch(cnt1)
{
case 0:
//一种样式
break;
case 1:
//一种样式
break;
case 2:
//一种样式
break;
default:
break;
}
p20_reg=P2.0;
}
写了半天,给点分吧
如下:
unsigned integer cnt1=0;;
.bss p20_reg;
while()
{
if(p20_reg){ //按键有按下
if(~P2.0) {cnt1++; cnt1=cnt1>2?cnt1=0:cnt1;}
}
switch(cnt1)
{
case 0:
//一种样式
break;
case 1:
//一种样式
break;
case 2:
//一种样式
break;
default:
break;
}
p20_reg=P2.0;
}
写了半天,给点分吧
全部回答
- 1楼网友:浪者不回头
- 2021-03-05 19:39
#include
#define uint unsigned int
#define uchar unsigned char
sbit led = p0^0;
sbit k1 = p0^1;
void delay_1ms(uchar x)
{
uchar j;
while(x--){
for(j=0;j<125;j++)
{;}
}
}
void main()
{
while(1)
{
if(!k1)
{
delay_1ms(10);
if(!k1)
{
delay_1ms(10);
led=~led;delay_1ms(50);
}
}
}
}
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯