用c语言控制两个灯的闪烁

Python017

用c语言控制两个灯的闪烁,第1张

delay()这个函数在哪?你没写啊,开头也没有声明。然后 如果你是想实现两个灯闪烁,你写的内容都要放在第一个while(1){} 里,因为while(1)这循环没有break语句,除了你调用子函数,其他的不会被执行到的。

开关控制的话就不用编程语言了好吗,因为开关是直接的物理连接,通过电路实现就好,那我就理解成你是想用单片机来实现吧,首先单片机与外设怎样连接我不考虑,因为你没说。那么我就当是我可以随意的使用单片机的输出吧,然后开关闭合理解成按键是高电平,再按一次取反。

#include<89c51.h>            //是不是这个头文件记不清了。。

#defineuint unsigned int 

#defineuchar unsigned char

#define LED1 P1_0

#define LED2 P1_1

#define KEY1 P0_1

 

/* 函数声明,延迟函数,LED灯初始化函数,按键KEY初始化,按键KEY查询函数*/

voidDelayMs(uint n)

voidLEDInit(void)

voidKEYInit(void)

ucharKEYScan(void)

 

/*主函数*/

void main()

{

   LED1 = 0

   LED2 = 1      //不同的接法可能导致结果不一样,有的高电平亮有的低电平

 while(1)         //具体看你自己的板子怎么接的

 {

  if(KEYScan())

    LED1 = ~LED1

    LED2 = ~LED2

 }

}

 

 

/*检测按键状态*/

ucharKEYScan(void)

{

 if(KEY1==0)

   DelayMs(100) // 延时一段时间,以免抖动

  if(KEY1==0)

  {

    DelayMs(100)

    while(KEY1==0)

    return 1

  }

 else

   return 0

}

 

 

/*延迟函数*/

voidDelayMs(uint n)

{

 int i

 while(n--)

 {

  for(i=587i>0i--) 

 }

}

以上代码是做CC2530实验的时候做的,修改了一下。

判断开关对应的端口电平,改变led对应端口即可。

交替闪烁就是在循环中让两个LED端口交替高低电平。

循环中加入延时。延时函数我用循环实现。题目没有要求精准延时,如精准需用中断。

#include <reg52.h>

#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 */

}