|
- #include <reg52.h>
- sbit bA_Key01_IoStatus = P1^0;
- sbit bB_Key02_IoStatus = P1^1;
- /*************************************************************
- 1us延時(shí)子函數(shù)
- **************************************************************/
- void Delay1us(uint32 dly)
- {
- uint32 i;
- for(; dly>0; dly--)
- for(i=20; --i;) ;
- }
- /*
- 掃描編碼器子函數(shù)
- 在編碼器引腳A為低電平期間:
- 編碼器引腳B從0到1為正轉(zhuǎn),編碼器引腳B從1到0為反轉(zhuǎn)。
- */
- void PWM_key(void)
- {
- uint8 Curr_encoder_b; //定義一個(gè)變量來儲存當(dāng)前B信號
- uint8 Last_encoder_b; //定義一個(gè)變量來儲存上次B腳信號
-
- if( bA_Key01_IoStatus && bB_Key02_IoStatus) //編碼器無轉(zhuǎn)動退出
- {
- return;
- }
- //-----------------------------------
- if(!bB_Key02_IoStatus)
- {
- Last_encoder_b = bA_Key01_IoStatus; //記錄B信號
- Delay1us(1000); //延時(shí)約 1ms
- Curr_encoder_b = bA_Key01_IoStatus; //記錄等待期間的B信號(指當(dāng)前B信號)
-
- if( (Last_encoder_b == 0)&&(Curr_encoder_b== 1) ) //B從0到1為正轉(zhuǎn)
- {
-
- }
- else if( (Last_encoder_b == 1)&&(Curr_encoder_b == 0) ) //B從1到0為反轉(zhuǎn)
- {
-
- }
- }
- }
復(fù)制代碼
|
|