百度知道 - 信息提示
在线等,急,用C语言编程,实现单片机控制两个LED灯:当S1开关闭合时,两个LED灯交替闪烁?
判断开关对应的端口电平,改变led对应端口即可。
交替闪烁就是在循环中让两个LED端口交替高低电平。
循环中加入延时。延时函数我用循环实现。题目没有要求精准延时,如精准需用中断。
#include
#define uInt unsigned int
sbit D1=P2^0;
sbit D2=P2^1;
sbit S1=P3^2;
void mDelayuS( uInt us );
void main()
{
if(S1)
D1=D2=0;
while(S1==0) D1=!D2,mDelayuS(1000),D2=D1;
}
void mDelayuS( uInt us )
{
while ( us -- ); /* 24MHz MCS51 */
}
51单片机怎么用c语言写一个按钮控制一个led的闪烁,按一下开始闪烁,再按就灭掉
bit flash;//闪烁标志位
sbit led=P0^0;
sbit P01=P0^1;
sbit P02=P0^2;
void main()
{
P01=P02=0;
flash=0;
led=0;
while(1)
{
scankey();
ledflash();
}
}
void scankey()//键盘扫描
{
P01=1;//行线给1
if(P02)//如果P02也是1则说明接通
{
delay(10);//去抖动10MS
if(P02)//再次确定按键按下
{
while(P02){flash=flash}//按住按键的动作
flash=~flash;//按键按下后执行动作
}
}
}
void ledflash()
{
if(flash)
{
led=1;//点亮
delay(100);//延时100MS
led=0;//熄灭
}
else led=0;
}
void delay(unsigned int i)
{自己根据单片机频率写个1MS带形参的演示程序}
这个程序是现写的。。应该能执行,有些细节没有写,自己修改下,只是个大框而已(比如函数声明,定义端口什么的)