久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

標(biāo)題: 單片機(jī)學(xué)習(xí)筆記(八)PS/2電腦鍵盤 [打印本頁]

作者: 51hei人人    時(shí)間: 2016-3-12 16:47
標(biāo)題: 單片機(jī)學(xué)習(xí)筆記(八)PS/2電腦鍵盤
PS/2鍵盤是一種編碼鍵盤,只需要一根數(shù)據(jù)線和一根時(shí)鐘線就可以完成數(shù)據(jù)的輸入。
實(shí)驗(yàn)程序設(shè)計(jì)為,按鍵盤上的"J"鍵,繼電器閉合。
C語言源程序:
#include <reg52.h> //52單片機(jī)頭文件包含
#include <intrins.h>//常用移位函數(shù)頭文件包含
sbit key_data=P1^5; //定義鍵盤接口的數(shù)據(jù)腳
sbit key_clk=P3^2;//定義鍵盤接口的時(shí)鐘腳
sbit JDQ=P2^4; //定義繼電器連接引腳
bit BF=0; //定義位變量BF
unsigned char keyv=0; //定義無符號(hào)字符變量keyv并賦初值0
unsigned int intNum=0;//定義無符號(hào)整型變量intNum并賦初值0
unsigned char key_up=1;//定義無符號(hào)字符變量key_up并賦初值1
void ldedata(unsigned char scandata);//按鍵數(shù)據(jù)處理函數(shù)
void main() //主函數(shù)
{
    EA=1; //打開總中斷
    EX0=1;//打開0號(hào)中斷
    IT0=1;//中斷方式為下降沿觸發(fā)方式
    do{    //do-while循環(huán)
        if(BF)   //如果有鍵按下
            ldedata(keyv);//處理按鍵數(shù)據(jù)
        else
            EA=1;//否則打開中斷
    }while(1); //總為真不斷循環(huán)
}
void key_scan() interrupt 0  //中斷函數(shù)鍵盤輸入key_scan 中斷入口0
{
    if((intNum>0)&&(intNum<9))    //如果intNum>0并且intNum<9 就執(zhí)行if里面的語句
    {
        keyv=keyv>>1;     //將字符變量keyv右移一位
        if(key_data)      //判斷key_data 是否為真 即是否有數(shù)據(jù)
            keyv=keyv|0x80;    //有就將keyv與0x80進(jìn)行或運(yùn)算再賦值給keyv
    }
    intNum++;//將intNum的值自加1
    while(!key_clk)//鍵值是否處理完
    if(intNum>10)//判斷intNum是否大于10
    {
        intNum=0;//將intNum賦值為0
        BF=1;//將BF賦值為1
        EA=0;//關(guān)閉總中斷
    }
}
void ldedata(unsigned char scandata) //鍵盤數(shù)據(jù)處理函數(shù)
{
    if(!key_up) //鍵盤松開時(shí)
    {
        switch(scandata){ //處理鍵盤數(shù)據(jù)
        case 0xf0://沒按下任何鍵
            key_up=1;//按下
            break;//跳出
        case 0x12://左邊SHIFT
            break;//跳出
        case 0x59://右邊SHIFT
            break;//跳出
        default://缺省處理
            P1=~scandata;//將按下的鍵碼輸出給P2口驅(qū)動(dòng)燈亮,因發(fā)光二極采用共陽級(jí),所以取反輸出
            if(scandata==0x3b)//當(dāng)按下J鍵時(shí)
                JDQ=0;//打開繼電器
            if(scandata==0x29){//當(dāng)按下空格鍵時(shí)
                JDQ=1;//關(guān)閉繼電器
            }
            break;//跳出
        }
    }
    else{ //否則
        key_up=0;//按鍵按下
        switch(scandata){//處理按鍵
        case 0x12://左邊SHIFT
            break;//跳出
        case 0x59://右邊SHIFT
            break;//跳出
        }    
    }
    BF=0;//標(biāo)識(shí)字符表示處理完了
}
//實(shí)驗(yàn)結(jié)果 按下鍵盤j鍵繼電器打開 按下空格鍵繼電器關(guān)閉


作者: mcu451489053    時(shí)間: 2019-6-29 16:35
學(xué)習(xí)學(xué)習(xí)




歡迎光臨 (http://m.zg4o1577.cn/bbs/) Powered by Discuz! X3.1
主站蜘蛛池模板: 国产午夜精品视频 | 丁香五月网久久综合 | 久久久久国产精品 | 91视视频在线观看入口直接观看 | 欧美综合一区二区三区 | 久久久久久亚洲精品 | 日韩免费高清视频 | 男女羞羞视频在线观看 | 日本久久精 | 天天玩天天操天天干 | 中文字幕成人av | 麻豆a级片 | 中文字幕视频在线 | 亚洲午夜精品一区二区三区 | www.99热这里只有精品 | 日韩一区二区三区在线视频 | 国产精品美女久久久 | 日韩精品av一区二区三区 | 国产在线网址 | 欧美三区在线观看 | 男人的天堂久久 | 亚洲精精品 | 国产成人av在线 | 成人影院在线 | www.99re| 欧洲色综合| 精品久久久久久亚洲精品 | 日日综合 | 日韩中文字幕在线视频 | 亚洲国产精品一区二区三区 | 久久久精品一区 | 国产精品久久久久久久久图文区 | 一区免费视频 | 一区二区三区精品视频 | 欧美日韩在线观看一区 | www.久久久久久久久 | 天天拍夜夜爽 | 中文字幕日韩在线 | 91精品国产91久久综合桃花 | 看片国产 | 成年无码av片在线 |