|
以下是我之前采用拿來(lái)主義得到的,只對(duì)判斷后執(zhí)行部分稍作修改,應(yīng)用還不錯(cuò)。
/************************參數(shù)設(shè)置***************************/
void canshu() //EC11旋轉(zhuǎn)編碼器一定位一脈沖
{
static bit LastA = 0; //EC11旋轉(zhuǎn)編碼器的A引腳上一次的狀態(tài)
static bit LastB = 0; //EC11旋轉(zhuǎn)編碼器的B引腳上一次的狀態(tài)
if(KA != LastA) //判斷EC11旋轉(zhuǎn)編碼器A引腳是否等于上一次的狀態(tài)
{
if(KA == 0) //EC11旋轉(zhuǎn)編碼器旋轉(zhuǎn)后,判斷KA是否是低電平狀態(tài)
{
if(KB) //判斷KB引腳當(dāng)前狀態(tài),高電平則為正轉(zhuǎn)
{num++;}
else
{num--;}
}
LastA = KA; //更新編碼器上一個(gè)狀態(tài)暫存變量
LastB = KB; //更新編碼器上一個(gè)狀態(tài)暫存變量
}
}
現(xiàn)在看來(lái)LsaB變量似乎沒(méi)有用,有空了去掉它試試。對(duì)于正反向不同的EC11,我是通過(guò)調(diào)換num變量的加減方向來(lái)解決的。 |
|