ZLG7290矩阵键盘控制forMSP40 作者: 时间:2016-11-27 来源:网络 加入技术交流群 扫码加入和技术大咖面对面交流海量资料库查询 收藏 /*************************************************************************//名称:Read_IIC_Random()//参数:startaddr-读数据的首地址//返回值:读出的数据//功能:读数据到微控制器*************************************************************************/BYTERead_IIC_Random(BYTEstartaddr){BYTEtemp;do{Start();SendToBus(CHIP);//选片地址if(BackAns())//从机的回答信息continue;SendToBus(startaddr);//选择芯片上的内在地址if(BackAns())continue;Start();SendToBus(CHIP+1);if(!BackAns())break;}while(1);temp=ReadFromBus();//从线上读数据NoAck();Stop();returntemp;}/*************************************************************************//名称:AckToBus()//参数:无//返回值:无//功能:向IIC发送应答信号*************************************************************************/voidAckToBus(){SDA_DOWN;IIC_delay();SCL_UP;IIC_delay();SCL_DOWN;IIC_delay();}/*************************************************************************//名称:NoAck()//参数:无//返回值:无//功能:向IIC发送应答信号*************************************************************************/voidNoAck(){SDA_UP;IIC_delay();SCL_UP;IIC_delay();SCL_DOWN;IIC_delay();}/*************************************************************************//名称:Write_IIC_Serious()//参数:data-待写数据的指针,startaddr-待写数据的起始地址,len-待写数据的长度//返回值:无//功能:连续写多个字*************************************************************************/voidWrite_IIC_Serious(char*data,BYTEstartaddr,BYTElen){do{Start();SendToBus(CHIP);//选片地址if(BackAns())//从机的回答信息continue;SendToBus(startaddr);//选择芯片上的内在地址if(BackAns())continue;SendToBus(data[0]);//传输数据if(BackAns())continue;SendToBus(data[1]);if(!BackAns())break;}while(1);Stop();}/*************************************************************************//名称:Read_IIC_Curent()//参数:data-待读数据存放的指针,len-待读数据的长度//返回值:无//功能:连续读多个字*************************************************************************/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()//参数:无//返回值:无//功能:初始化I2C*************************************************************************/voidinit_IIC(){P2IE|=BIT7;P2IES|=BIT7;P2IFG&=~0x80;_EINT();}/*************************************************************************//名称:zlg7290_cmd()//参数:cmd-待写入的命令//返回值:无//功能:ZLG7290纯指令发送*************************************************************************/voidzlg7290_cmd(unsignedcharcmd){Write_IIC_Byte(cmd,0x07);return;}/*************************************************************************//名称:IsKeyDown()//参数:无//返回值:1-有键按下,0-无键按下//功能:ZLG7290纯指令发送*************************************************************************/charIsKeyDown(){chartemp;temp=0;temp=Read_IIC_Random(0x00);if(temp&0x01){return1;}else{return0;}}/*************************************************************************//名称:ReadKey()//参数:无//返回值:读取的键值//功能:读取键值*************************************************************************/charReadKey(){returnRead_IIC_Random(0x01);}/*************************************************************************//名称:ReadCnt()//参数:无//返回值:连击次数//功能:读取连击次数*************************************************************************/charReadCnt(){returnRead_IIC_Random(0x02);}
评论