新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > ZLG7290矩陣鍵盤控制forMSP40

        ZLG7290矩陣鍵盤控制forMSP40

        作者: 時間:2016-11-27 來源:網絡 收藏
      1. /*************************************************************************
      2. //名稱:Read_IIC_Random()
      3. //參數:startaddr-讀數據的首地址
      4. //返回值:讀出的數據
      5. //功能:讀數據到微控制器
      6. *************************************************************************/
      7. BYTERead_IIC_Random(BYTEstartaddr)
      8. {
      9. BYTEtemp;
      10. do
      11. {
      12. Start();
      13. SendToBus(CHIP);//選片地址
      14. if(BackAns())//從機的回答信息
      15. continue;
      16. SendToBus(startaddr);//選擇芯片上的內在地址
      17. if(BackAns())
      18. continue;
      19. Start();
      20. SendToBus(CHIP+1);
      21. if(!BackAns())
      22. break;
      23. }
      24. while(1);
      25. temp=ReadFromBus();//從線上讀數據
      26. NoAck();
      27. Stop();
      28. returntemp;
      29. }
      30. /*************************************************************************
      31. //名稱:AckToBus()
      32. //參數:無
      33. //返回值:無
      34. //功能:向IIC發送應答信號
      35. *************************************************************************/
      36. voidAckToBus()
      37. {
      38. SDA_DOWN;
      39. IIC_delay();
      40. SCL_UP;
      41. IIC_delay();
      42. SCL_DOWN;
      43. IIC_delay();
      44. }
      45. /*************************************************************************
      46. //名稱:NoAck()
      47. //參數:無
      48. //返回值:無
      49. //功能:向IIC發送應答信號
      50. *************************************************************************/
      51. voidNoAck()
      52. {
      53. SDA_UP;
      54. IIC_delay();
      55. SCL_UP;
      56. IIC_delay();
      57. SCL_DOWN;
      58. IIC_delay();
      59. }
      60. /*************************************************************************
      61. //名稱:Write_IIC_Serious()
      62. //參數:data-待寫數據的指針,startaddr-待寫數據的起始地址,len-待寫數據的長度
      63. //返回值:無
      64. //功能:連續寫多個字
      65. *************************************************************************/
      66. voidWrite_IIC_Serious(char*data,BYTEstartaddr,BYTElen)
      67. {
      68. do
      69. {
      70. Start();
      71. SendToBus(CHIP);//選片地址
      72. if(BackAns())//從機的回答信息
      73. continue;
      74. SendToBus(startaddr);//選擇芯片上的內在地址
      75. if(BackAns())
      76. continue;
      77. SendToBus(data[0]);//傳輸數據
      78. if(BackAns())
      79. continue;
      80. SendToBus(data[1]);
      81. if(!BackAns())
      82. break;
      83. }
      84. while(1);
      85. Stop();
      86. }
      87. /*************************************************************************
      88. //名稱:Read_IIC_Curent()
      89. //參數:data-待讀數據存放的指針,len-待讀數據的長度
      90. //返回值:無
      91. //功能:連續讀多個字
      92. *************************************************************************/
      93. voidRead_IIC_Curent(BYTE*data,BYTElen)
      94. {
      95. inti;
      96. Start();
      97. SendToBus(CHIP+1);
      98. BackAns();//放松讀命令
      99. i=1;
      100. do
      101. {
      102. i++;
      103. data[i]=ReadFromBus();
      104. if(i
      105. AckToBus();
      106. else
      107. break;
      108. }
      109. while(1);
      110. Stop();
      111. }
      112. /*************************************************************************
      113. //名稱:init_IIC()
      114. //參數:無
      115. //返回值:無
      116. //功能:初始化I2C
      117. *************************************************************************/
      118. voidinit_IIC()
      119. {
      120. P2IE|=BIT7;
      121. P2IES|=BIT7;
      122. P2IFG&=~0x80;
      123. _EINT();
      124. }
      125. /*************************************************************************
      126. //名稱:zlg7290_cmd()
      127. //參數:cmd-待寫入的命令
      128. //返回值:無
      129. //功能:ZLG7290純指令發送
      130. *************************************************************************/
      131. voidzlg7290_cmd(unsignedcharcmd)
      132. {
      133. Write_IIC_Byte(cmd,0x07);
      134. return;
      135. }
      136. /*************************************************************************
      137. //名稱:IsKeyDown()
      138. //參數:無
      139. //返回值:1-有鍵按下,0-無鍵按下
      140. //功能:ZLG7290純指令發送
      141. *************************************************************************/
      142. charIsKeyDown()
      143. {
      144. chartemp;
      145. temp=0;
      146. temp=Read_IIC_Random(0x00);
      147. if(temp&0x01)
      148. {
      149. return1;
      150. }
      151. else
      152. {
      153. return0;
      154. }
      155. }
      156. /*************************************************************************
      157. //名稱:ReadKey()
      158. //參數:無
      159. //返回值:讀取的鍵值
      160. //功能:讀取鍵值
      161. *************************************************************************/
      162. charReadKey()
      163. {
      164. returnRead_IIC_Random(0x01);
      165. }
      166. /*************************************************************************
      167. //名稱:ReadCnt()
      168. //參數:無
      169. //返回值:連擊次數
      170. //功能:讀取連擊次數
      171. *************************************************************************/
      172. charReadCnt()
      173. {
      174. returnRead_IIC_Random(0x02);
      175. }


      176. 上一頁 1 2 下一頁

        關鍵詞: ZLG7290矩陣鍵盤控制MSP4

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 兰西县| 高阳县| 天等县| 巴彦县| 大港区| 南雄市| 怀柔区| 合山市| 靖远县| 五华县| 始兴县| 文山县| 电白县| 双桥区| 巴塘县| 湘阴县| 晋江市| 原平市| 怀柔区| 兴仁县| 尉氏县| 平陆县| 马关县| 凤阳县| 陇南市| 固镇县| 景泰县| 盐城市| 隆子县| 瓦房店市| 博客| 莱西市| 永川市| 米泉市| 陈巴尔虎旗| 合水县| 延长县| 涞源县| 柳林县| 木兰县| 邓州市|