新聞中心

        EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > CCS PICC實(shí)現(xiàn)的矩陣鍵盤掃描

        CCS PICC實(shí)現(xiàn)的矩陣鍵盤掃描

        作者: 時(shí)間:2012-10-27 來(lái)源:網(wǎng)絡(luò) 收藏

        網(wǎng)上關(guān)于 的參考程序較少,本人近來(lái)做了此類實(shí)驗(yàn),這里將把程序公開(kāi)至此以便和學(xué)習(xí) 的網(wǎng)友交流!

        例:

        unsigned char key()
        {
        #use fast_io(C)
        unsigned char k1,k2,k3;
        set_tris_c(0x00);
        output_c(0x0f);
        set_tris_c(0x0f);
        k1=input_c()0x0f;
        set_tris_c(0x00);
        output_c(0xf0);
        set_tris_c(0xf0);
        k2=input_c()0xf0;
        k3=k1|k2;
        return(k3);
        }//此程序只是最基本的矩陣掃描,忽略了抖鍵、干擾和多鍵同時(shí)按下的情況!

        /*需要注意的是: 中庫(kù)函數(shù)output_x()、input_x()都會(huì)整個(gè)的將TRIS端口方向控制寄存器改為輸出或輸入,而時(shí)要求:端口輸出0x0f,然后高四位設(shè)置為輸出低四位設(shè)置為輸入,結(jié)果和0x0f相與屏蔽無(wú)效位,檢測(cè)是否有0出現(xiàn),如果有,即有按鍵按下,轉(zhuǎn)到掃描處理,如果沒(méi)有,低四位應(yīng)該為0x0f。接著端口輸出0xf0,然后高四位設(shè)置為輸入低四位設(shè)置為輸出,結(jié)果和0xf0相與屏蔽無(wú)效位,檢測(cè)是否有0出現(xiàn),如果有,即有按鍵按下,轉(zhuǎn)到掃描處理,如果沒(méi)有,高四位應(yīng)該為0xf0。PIC單片機(jī)與51系列單片機(jī)不同,如果使用過(guò)程中不注意設(shè)置端口方向,將得不到正確的值。CCS PICC中庫(kù)函數(shù)output_x()、input_x()能自動(dòng)將整個(gè)TRIS端口方向控制寄存器改為輸出或輸入,但在矩陣掃描中,需要手動(dòng)設(shè)置方向控制寄存器,本例中就使用#use fast_io(C)、set_tris_x()這些語(yǔ)句來(lái)設(shè)置方向控制寄存器。本人在這個(gè)例子中走了不少?gòu)澛贰?/



        關(guān)鍵詞: CCS PICC 矩陣鍵盤掃描

        評(píng)論


        相關(guān)推薦

        技術(shù)專區(qū)

        關(guān)閉
        主站蜘蛛池模板: 西和县| 西昌市| 东乡| 宝山区| 藁城市| 涟源市| 甘肃省| 丹阳市| 都江堰市| 丰台区| 瑞安市| 济南市| 景德镇市| 陕西省| 红原县| 玉溪市| 始兴县| 昌邑市| 宝清县| 阳原县| 商南县| 定安县| 卢氏县| 大名县| 保山市| 松滋市| 博客| 齐河县| 岑溪市| 五常市| 新田县| 容城县| 宁乡县| 鄂托克旗| 仲巴县| 兰西县| 行唐县| 南开区| 辽中县| 土默特右旗| 民勤县|