其实这个程序已经写好好几天了,可是一直没有调出应有的结果,还是从书上抄的,自己研究了好长时间就是没有发现什么错误,但是就是结果不对,今天又反复调了好长时间,然后就胡乱点了下其他的按钮,呵呵,结果就出来了,原来不是我的程序错了,还是我不熟悉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++);
}
}
文章评论(0条评论)
登录后参与讨论