色婷婷AⅤ一区二区三区|亚洲精品第一国产综合亚AV|久久精品官方网视频|日本28视频香蕉

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > ZLG7290矩陣鍵盤控制forMSP40

          ZLG7290矩陣鍵盤控制forMSP40

          作者: 時間:2016-11-27 來源:網(wǎng)絡(luò) 收藏
        1. /*************************************************************************
        2. //名稱:Read_IIC_Random()
        3. //參數(shù):startaddr-讀數(shù)據(jù)的首地址
        4. //返回值:讀出的數(shù)據(jù)
        5. //功能:讀數(shù)據(jù)到微控制器
        6. *************************************************************************/
        7. BYTERead_IIC_Random(BYTEstartaddr)
        8. {
        9. BYTEtemp;
        10. do
        11. {
        12. Start();
        13. SendToBus(CHIP);//選片地址
        14. if(BackAns())//從機(jī)的回答信息
        15. continue;
        16. SendToBus(startaddr);//選擇芯片上的內(nèi)在地址
        17. if(BackAns())
        18. continue;
        19. Start();
        20. SendToBus(CHIP+1);
        21. if(!BackAns())
        22. break;
        23. }
        24. while(1);
        25. temp=ReadFromBus();//從線上讀數(shù)據(jù)
        26. NoAck();
        27. Stop();
        28. returntemp;
        29. }
        30. /*************************************************************************
        31. //名稱:AckToBus()
        32. //參數(shù):無
        33. //返回值:無
        34. //功能:向IIC發(fā)送應(yīng)答信號
        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. //參數(shù):無
        48. //返回值:無
        49. //功能:向IIC發(fā)送應(yīng)答信號
        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. //參數(shù):data-待寫數(shù)據(jù)的指針,startaddr-待寫數(shù)據(jù)的起始地址,len-待寫數(shù)據(jù)的長度
        63. //返回值:無
        64. //功能:連續(xù)寫多個字
        65. *************************************************************************/
        66. voidWrite_IIC_Serious(char*data,BYTEstartaddr,BYTElen)
        67. {
        68. do
        69. {
        70. Start();
        71. SendToBus(CHIP);//選片地址
        72. if(BackAns())//從機(jī)的回答信息
        73. continue;
        74. SendToBus(startaddr);//選擇芯片上的內(nèi)在地址
        75. if(BackAns())
        76. continue;
        77. SendToBus(data[0]);//傳輸數(shù)據(jù)
        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. //參數(shù):data-待讀數(shù)據(jù)存放的指針,len-待讀數(shù)據(jù)的長度
        90. //返回值:無
        91. //功能:連續(xù)讀多個字
        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. //參數(shù):無
        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. //參數(shù):cmd-待寫入的命令
        128. //返回值:無
        129. //功能:ZLG7290純指令發(fā)送
        130. *************************************************************************/
        131. voidzlg7290_cmd(unsignedcharcmd)
        132. {
        133. Write_IIC_Byte(cmd,0x07);
        134. return;
        135. }
        136. /*************************************************************************
        137. //名稱:IsKeyDown()
        138. //參數(shù):無
        139. //返回值:1-有鍵按下,0-無鍵按下
        140. //功能:ZLG7290純指令發(fā)送
        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. //參數(shù):無
        159. //返回值:讀取的鍵值
        160. //功能:讀取鍵值
        161. *************************************************************************/
        162. charReadKey()
        163. {
        164. returnRead_IIC_Random(0x01);
        165. }
        166. /*************************************************************************
        167. //名稱:ReadCnt()
        168. //參數(shù):無
        169. //返回值:連擊次數(shù)
        170. //功能:讀取連擊次數(shù)
        171. *************************************************************************/
        172. charReadCnt()
        173. {
        174. returnRead_IIC_Random(0x02);
        175. }


        176. 上一頁 1 2 下一頁

          關(guān)鍵詞: ZLG7290矩陣鍵盤控制MSP4

          評論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉