ZLG7290矩阵键盘控制forMSP40
时间:11-27
来源:互联网
点击:
- tartaddr-读数据的首地址
- //返回值:读出的数据
- //功能:读数据到微控制器
- *************************************************************************/
- 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);
- }
ZLG7290矩阵键盘控制MSP4 相关文章:
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)
- uClinux介绍(11-09)
- openwebmailV1.60安装教学(11-12)
- Linux嵌入式系统开发平台选型探讨(11-09)
- Windows CE 进程、线程和内存管理(二)(11-09)