原创 我的第二个单片机小程序

2008-6-8 21:53 2946 7 7 分类: MCU/ 嵌入式

        其实这个程序已经写好好几天了,可是一直没有调出应有的结果,还是从书上抄的,自己研究了好长时间就是没有发现什么错误,但是就是结果不对,今天又反复调了好长时间,然后就胡乱点了下其他的按钮,呵呵,结果就出来了,原来不是我的程序错了,还是我不熟悉KEIL的原因,还不是很熟悉怎么调试。


        一会去上网查一下相关的说明,希望下次不要再出现这么低级的错误。加油!


第二个单片机程序如下:


#include <Reg52.h>
sbit Switch_pin=P1^0;
#define Output_port P2
#define SWITCH_NOT_PRESSED (bit) 0
#define SWITCH_PRESSED (bit) 1
void SWITCH_Init(void);
bit SWITCH_Get_Input(const unsigned char DEBOUNCE_PERIOD);
void DISPLAY_SWITCH_STATUS_Init(void);
void DISPLAY_SWITCH_STATUS_Update(const bit);
void DELAY_LOOP_Wait(const unsigned int DELAY_MS);


void main (void)
{
   bit Sw_state;
   SWITCH_Init();
   DISPLAY_SWITCH_STATUS_Init();
   while(1)
   {
    Sw_state=SWITCH_Get_Input(30);
    DISPLAY_SWITCH_STATUS_Update(Sw_state);
   }
}


void SWITCH_Init(void)
{
 Switch_pin=1;
}


bit SWITCH_Get_Input(const unsigned char DEBOUNCE_PERIOD)
{
  bit Return_value=SWITCH_NOT_PRESSED;
  if (Switch_pin==0)
  {
    DELAY_LOOP_Wait(DEBOUNCE_PERIOD);
   if(Switch_pin==0)
   {
     Return_value=SWITCH_PRESSED;
    } 
     
  }
   return Return_value; 


}



void DISPLAY_SWITCH_STATUS_Init(void)
{
 Output_port=0x0F;
}



void DISPLAY_SWITCH_STATUS_Update(const bit SWITCH_STATUS)
{


 if(SWITCH_STATUS==SWITCH_PRESSED)
  {
   Output_port=0x0F;
   Switch_pin=0;
 }
 else
  {
   Switch_pin =1;
   Output_port=0xF0;
  }
}



void DELAY_LOOP_Wait(const unsigned int DELAY_MS)
{
  unsigned int x,y;
  for (x=0;x<DELAY_MS;x++)
   {
    for(y=0;y<=120;y++);
   }
}

PARTNER CONTENT

文章评论0条评论)

登录后参与讨论
EE直播间
更多
我要评论
0
7
关闭 站长推荐上一条 /3 下一条