问:基于STC15W4K32S4系列单片机,怎么用c语言编程:利用一位按键控制发光二极管逐一亮起(

问:基于STC15W4K32S4系列单片机,怎么用c语言编程:利用一位按键控制发光二极管逐一亮起(此过程先亮的发光二极管保存点亮),再逐一熄灭;求大神帮忙!

第1个回答  2016-11-19
#include<reg51.h>
sbit key=P1^0;
sbit led1=P0^0;
sbit led2=P0^1;
sbit led3=P0^2;
sbit led4=P0^3;
unsigned char a;
main()
{
while(1)
{
if(key==0)
{
while(key==0);
a++;
a%=9;
}
switch(a)
{
case 1:led1=0;led2=1;led3=1;led4=1;break;
case 2:led1=0;led2=0;led3=1;led4=1;break;
case 3:led1=0;led2=0;led3=0;led4=1;break;
case 4:led1=0;led2=0;led3=0;led4=0;break;
case 5:led1=0;led2=0;led3=0;led4=1;break;
case 1:led1=0;led2=0;led3=1;led4=1;break;
case 7:led1=0;led2=1;led3=1;led4=1;break;
case 8:led1=1;led2=1;led3=1;led4=1;break;
default:break;
}
}
}追问

大神收徒吗,留个扣扣,我愿意交学费

追答

你可以私信我,欢迎交流。

追问

请问这个警告怎么消除呢

喔喔,空格,知道了谢谢

为什么点了单片机器按键,没有像条件一样运行呢?是不是还要计时器还是什么?

追答

不是,这程序执行流程是,按一下键,亮一个灯,按两下,亮两个灯....一次执行123.。。。。。必须按键

追问

可是我按一下它就熄灭了也..没有保存亮着...而且按一个键只有那个键的等会亮,其他的LED不亮

追答

追问

如果是按一次键,用定时器让他自动亮灭,要怎么编程呢?老师其实要求我们是一次按键操作用定时器

追答

#include
sbit key=P1^0;
sbit led1=P0^0;
sbit led2=P0^1;
sbit led3=P0^2;
sbit led4=P0^3;
unsigned char a;
void t0isr() interrupt 1
{
TH0=(65536-60000)/256;
TL0=(65536-60000)%256;
a++;
a%=9;
switch(a)
{
case 1:led1=0;led2=1;led3=1;led4=1;break;
case 2:led1=0;led2=0;led3=1;led4=1;break;
case 3:led1=0;led2=0;led3=0;led4=1;break;
case 4:led1=0;led2=0;led3=0;led4=0;break;
case 5:led1=0;led2=0;led3=0;led4=1;break;
case 1:led1=0;led2=0;led3=1;led4=1;break;
case 7:led1=0;led2=1;led3=1;led4=1;break;
case 8:led1=1;led2=1;led3=1;led4=1;break;
default:break;
}
}
main()
{
TMOD=0x01;
TH0=(65536-60000)/256;
TL0=(65536-60000)%256;
ET0=1;
EA=1;
while(1)
{
if(key==0)
{
while(key==0);
TR0=~TR0;
}
}
}

追问

好的,我完饭回去试试。我在想你第一个编程里面我到底哪里出错了,为什么不是预期的效果

本回答被提问者和网友采纳
相似回答