ZLG7290矩陣鍵盤控制forMSP40 作者: 時(shí)間:2016-11-27 來源:網(wǎng)絡(luò) 加入技術(shù)交流群 掃碼加入和技術(shù)大咖面對面交流海量資料庫查詢 收藏 /*************************************************************************//名稱:Read_IIC_Random()//參數(shù):startaddr-讀數(shù)據(jù)的首地址//返回值:讀出的數(shù)據(jù)//功能:讀數(shù)據(jù)到微控制器*************************************************************************/BYTERead_IIC_Random(BYTEstartaddr){BYTEtemp;do{Start();SendToBus(CHIP);//選片地址if(BackAns())//從機(jī)的回答信息continue;SendToBus(startaddr);//選擇芯片上的內(nèi)在地址if(BackAns())continue;Start();SendToBus(CHIP+1);if(!BackAns())break;}while(1);temp=ReadFromBus();//從線上讀數(shù)據(jù)NoAck();Stop();returntemp;}/*************************************************************************//名稱:AckToBus()//參數(shù):無//返回值:無//功能:向IIC發(fā)送應(yīng)答信號*************************************************************************/voidAckToBus(){SDA_DOWN;IIC_delay();SCL_UP;IIC_delay();SCL_DOWN;IIC_delay();}/*************************************************************************//名稱:NoAck()//參數(shù):無//返回值:無//功能:向IIC發(fā)送應(yīng)答信號*************************************************************************/voidNoAck(){SDA_UP;IIC_delay();SCL_UP;IIC_delay();SCL_DOWN;IIC_delay();}/*************************************************************************//名稱:Write_IIC_Serious()//參數(shù):data-待寫數(shù)據(jù)的指針,startaddr-待寫數(shù)據(jù)的起始地址,len-待寫數(shù)據(jù)的長度//返回值:無//功能:連續(xù)寫多個(gè)字*************************************************************************/voidWrite_IIC_Serious(char*data,BYTEstartaddr,BYTElen){do{Start();SendToBus(CHIP);//選片地址if(BackAns())//從機(jī)的回答信息continue;SendToBus(startaddr);//選擇芯片上的內(nèi)在地址if(BackAns())continue;SendToBus(data[0]);//傳輸數(shù)據(jù)if(BackAns())continue;SendToBus(data[1]);if(!BackAns())break;}while(1);Stop();}/*************************************************************************//名稱:Read_IIC_Curent()//參數(shù):data-待讀數(shù)據(jù)存放的指針,len-待讀數(shù)據(jù)的長度//返回值:無//功能:連續(xù)讀多個(gè)字*************************************************************************/voidRead_IIC_Curent(BYTE*data,BYTElen){inti;Start();SendToBus(CHIP+1);BackAns();//放松讀命令i=1;do{i++;data[i]=ReadFromBus();if(iAckToBus();elsebreak;}while(1);Stop();}/*************************************************************************//名稱:init_IIC()//參數(shù):無//返回值:無//功能:初始化I2C*************************************************************************/voidinit_IIC(){P2IE|=BIT7;P2IES|=BIT7;P2IFG&=~0x80;_EINT();}/*************************************************************************//名稱:zlg7290_cmd()//參數(shù):cmd-待寫入的命令//返回值:無//功能:ZLG7290純指令發(fā)送*************************************************************************/voidzlg7290_cmd(unsignedcharcmd){Write_IIC_Byte(cmd,0x07);return;}/*************************************************************************//名稱:IsKeyDown()//參數(shù):無//返回值:1-有鍵按下,0-無鍵按下//功能:ZLG7290純指令發(fā)送*************************************************************************/charIsKeyDown(){chartemp;temp=0;temp=Read_IIC_Random(0x00);if(temp&0x01){return1;}else{return0;}}/*************************************************************************//名稱:ReadKey()//參數(shù):無//返回值:讀取的鍵值//功能:讀取鍵值*************************************************************************/charReadKey(){returnRead_IIC_Random(0x01);}/*************************************************************************//名稱:ReadCnt()//參數(shù):無//返回值:連擊次數(shù)//功能:讀取連擊次數(shù)*************************************************************************/charReadCnt(){returnRead_IIC_Random(0x02);}
評論