PIC單片機(jī)人機(jī)接口模塊獨(dú)立式按鍵的程序設(shè)計(jì)
掃描二維碼
隨時(shí)隨地手機(jī)看文章
下面是查詢方式下的鍵盤(pán)程序,程序中沒(méi)有使用散轉(zhuǎn)指令,也沒(méi)有軟件防抖動(dòng)措施,只包括按鍵查詢、鍵功能程序轉(zhuǎn)移。fp0~fp7為功能程序入口地址標(biāo)號(hào),prom0~prom7分別為每個(gè)按鍵的功能程序。 程序清單(設(shè)i/o口為p1口)如下: 由此程序可以看出,各按鍵由軟件設(shè)置了優(yōu)先級(jí),優(yōu)先級(jí)順序依次為0~7?! ”竟?jié)所講的模塊中,在按鍵按下或彈起時(shí)經(jīng)常會(huì)出現(xiàn)一些毛刺,所以在首次檢測(cè)到輸入的值后應(yīng)添加一個(gè)延時(shí)程序delay?! ∵@個(gè)延時(shí)程序延時(shí)100ms左右,延時(shí)后再檢測(cè)輸入的值,如果改變了,則證明此時(shí)按鍵按下或彈起時(shí)讀出的值是不準(zhǔn)確的,再調(diào)用延時(shí)程序delay,延時(shí)100ms之后,再繼續(xù)查看。 本例采用4mhz的品振,時(shí)鐘周期是250ms,由于pic單片機(jī)的指令周期是4倍時(shí)鐘周期,即1μs,要延時(shí)100ms,可以設(shè)置兩層循環(huán),另外,跳轉(zhuǎn)指令goto需要兩個(gè)指令周期,自減1并且判斷指令decfsz需要一個(gè)指令月期,所以要進(jìn)行100000/(2+1)約為33333個(gè)指令周期?! ‖F(xiàn)設(shè)內(nèi)部循環(huán)為256次,則外部循環(huán)約為130次,因?yàn)楸纠龑?duì)延時(shí)的精度要求并不很高,所以本例中的設(shè)計(jì)只進(jìn)行了近似的計(jì)算,程序流程如圖所示?! D 程序流程 ?。?)主程序?! ∈紫仍O(shè)置端口c為輸入口,端口d為輸出口,然后循環(huán)檢測(cè)端口c的狀態(tài),若有鍵按下,則延時(shí)去抖動(dòng),再由端口d顯示?! 。?)延時(shí)子程序 入口參數(shù):count1存放外部循環(huán)次數(shù),count2存放內(nèi)部循環(huán)次數(shù)。 歡迎轉(zhuǎn)載,信息來(lái)源維庫(kù)電子市場(chǎng)網(wǎng)()