간단한 타이머로 버튼의 떨림을 해소할 수 있으니 여러분의 많은 조언을 바랍니다!

1412 단어 단편기C51
/********************************
	          1
********************************/
 #include 

 #define uchar unsigned char
 
 sbit KEY = P1 ^ 0;											 //      
 bit KEYSTA = 1;											 //       
 uchar code DispCode[] = {0xc0,0xf9,0xa4,0xb0,				 //     
                          0x99,0x92,0x82,0xf8,
                          0x80,0x90,0x88,0x83,
                          0xc6,0xa1,0x86,0x8e};
void Timer0Init();											//        
void KeyProcess();											//      

void main()
{
	Timer0Init();
	KeyProcess();
}

void Timer0Init()
{
	TMOD |= 0x01;
	TH0 = 0xF8;			  //  2MS
	TL0 = 0xCD;
	EA =1;
	ET0 = 1;
	TR0 = 1;
}
void KeyProcess()
{
	bit lasttime = 1;						 //        ,    1;
	uchar count = 0;						 //       0;
	KEY = 0x01;								 //     ;
	P0 =  DispCode[count];					 //      ;
	while(1)
	{
		if (KEYSTA != lasttime)				 //  “      ” “       ”  ,       ;
		{
			if (lasttime == 1)				 //        ,          “  ”(lasttime == 1),       ,     ;
			{
				count++;
				if (count >= 16)			 //    16  ,         ;
				{
					count = 0;
				}
				P0 =  DispCode[count];		 //           ;
			}
			lasttime = KEYSTA;				 //       ,          ;
		}
	}
}

void Timer0IRQ() interrupt 1				//2MS    
{
	static keybuf = 0xFF;					//            ,   FF;         ;
	TH0 = 0xF8;			                    //      ;
	TL0 = 0xCD;
	
	keybuf = (keybuf < 
  


좋은 웹페이지 즐겨찾기