新闻中心

EEPW首页>嵌入式系统>设计应用> ZLG7290矩阵键盘控制forMSP40

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(i
  • AckToBus();
  • else
  • break;
  • }
  • 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);
  • }


  • 上一页 1 2 下一页

    关键词:ZLG7290矩阵键盘控制MSP4

    评论


    相关推荐

    技术专区

    关闭