在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,91精品国产91免费

<s id="cmphk"><label id="cmphk"></label></s>
    <span id="cmphk"><var id="cmphk"></var></span>
    <dfn id="cmphk"><var id="cmphk"></var></dfn>
    <menu id="cmphk"><thead id="cmphk"></thead></menu>

    <address id="cmphk"></address>

      <dfn id="cmphk"></dfn>
      
      
      <span id="cmphk"></span>

      <object id="cmphk"><tt id="cmphk"></tt></object>
      1. 新聞中心

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

        ZLG7290矩陣鍵盤控制forMSP40

        作者: 時(shí)間:2016-11-27 來源:網(wǎng)絡(luò) 收藏
        基于ZLG7290的矩陣鍵盤控制,適用于MSP430,采用中斷模式查詢按鍵。ZLG7290還具有數(shù)碼管顯示功能,本人水平有限,這里未能實(shí)現(xiàn)。
        [cpp]view plaincopyprint?
        1. /*****************************************************************
        2. //文件名:ZLG7290.c
        3. //描述:該文件定義與ZLG7290有關(guān)的各種接口、函數(shù),適用于MSP430F149
        4. //編寫人:小邪@清水
        5. //版本號(hào):1.01
        6. *****************************************************************/
        7. #include"msp430x14x.h"
        8. #include"ZLG7290.h"
        9. /*****************************************************************
        10. //關(guān)于接口的一些定義
        11. //需要根據(jù)實(shí)際應(yīng)用做出改變
        12. *****************************************************************/
        13. #defineIIC_Enable!(P2IN&BIT2)
        14. #defineSCL_UPPORTDIR&=~SCL
        15. #defineSDA_UPPORTDIR&=~SDA
        16. #defineSCL_DOWNPORTDIR|=SCL
        17. #defineSDA_DOWNPORTDIR|=SDA
        18. #definePORTDIRP3DIR//設(shè)置為P3口
        19. #definePORTINP3IN
        20. #definePORTOUTP3OUT
        21. #defineSDABIT0//設(shè)置SDA為Px.0
        22. #defineSCLBIT1//設(shè)置SCL為Px.1
        23. #defineRESBIT2//設(shè)置RES為P2.7(對(duì)應(yīng)430的中斷)
        24. #defineCHIP0x70//ZLG7290的IIC地址
        25. /*************************************************************************
        26. //名稱:IIC_delay()
        27. //參數(shù):無
        28. //返回值:無
        29. //功能:完成IIC設(shè)置中所需要的延時(shí)
        30. *************************************************************************/
        31. voidIIC_delay()
        32. {
        33. inti;
        34. i=0xff;
        35. while(i)
        36. {
        37. i--;
        38. _NOP();
        39. }
        40. i=0xff;
        41. while(i)
        42. {
        43. i--;
        44. _NOP();
        45. }
        46. }
        47. /*************************************************************************
        48. //名稱:SendToBus()
        49. //參數(shù):要發(fā)送的數(shù)據(jù)
        50. //返回值:無
        51. //功能:向線上發(fā)送數(shù)據(jù)(SCL必須在進(jìn)入函數(shù)前置為低)
        52. *************************************************************************/
        53. voidSendToBus(BYTEm)
        54. {
        55. BYTEi;
        56. for(i=0;i<8;i++)
        57. {
        58. if(m&0x80)
        59. SDA_UP;
        60. else
        61. SDA_DOWN;
        62. SCL_UP;
        63. IIC_delay();
        64. SCL_DOWN;
        65. m<<=1;
        66. }
        67. return;
        68. }
        69. /*************************************************************************
        70. //名稱:BackAns()
        71. //參數(shù):無
        72. //返回值:成功標(biāo)志,若成功則為1,否則為0
        73. //功能:接收應(yīng)答信號(hào)
        74. *************************************************************************/
        75. BYTEBackAns()
        76. {
        77. BYTEflag;
        78. SDA_UP;
        79. IIC_delay();
        80. SCL_UP;
        81. flag=0;
        82. IIC_delay();
        83. if((PORTIN&SDA))
        84. {
        85. flag=1;
        86. }
        87. SCL_DOWN;
        88. returnflag;
        89. }
        90. /*************************************************************************
        91. //名稱:Start()
        92. //參數(shù):無
        93. //返回值:無
        94. //功能:發(fā)送一個(gè)起始信號(hào)
        95. *************************************************************************/
        96. voidStart()
        97. {
        98. PORTOUT&=(~SCL)&(~SDA);
        99. SCL_UP;
        100. IIC_delay();
        101. SDA_UP;
        102. IIC_delay();
        103. SDA_DOWN;//開始位
        104. IIC_delay();
        105. SCL_DOWN;
        106. IIC_delay();
        107. }
        108. /*************************************************************************
        109. //名稱:Stop()
        110. //參數(shù):無
        111. //返回值:無
        112. //功能:發(fā)送一個(gè)停止信號(hào)
        113. *************************************************************************/
        114. voidStop()
        115. {
        116. SDA_DOWN;
        117. IIC_delay();
        118. SCL_UP;//停止位
        119. IIC_delay();
        120. SDA_UP;
        121. IIC_delay();
        122. SCL_DOWN;
        123. IIC_delay();
        124. }
        125. /*************************************************************************
        126. //名稱:Write_IIC_Byte()
        127. //參數(shù):data-待寫入的數(shù)據(jù),startaddr-待寫入的首地址
        128. //返回值:無
        129. //功能:向線上寫一個(gè)字節(jié)
        130. *************************************************************************/
        131. voidWrite_IIC_Byte(BYTEdata,BYTEstartaddr)
        132. {
        133. do
        134. {
        135. Start();
        136. SendToBus(CHIP);//選片地址
        137. if(BackAns())//從機(jī)的回答信息
        138. continue;
        139. SendToBus(startaddr);//選擇芯片上的內(nèi)在地址
        140. if(BackAns())
        141. continue;
        142. SendToBus(data);//傳輸數(shù)據(jù)
        143. if(!BackAns())
        144. break;
        145. }
        146. while(1);
        147. Stop();
        148. }
        149. /*************************************************************************
        150. //名稱:ReadFromBus()
        151. //參數(shù):無
        152. //返回值:讀出的數(shù)據(jù)
        153. //功能:從線上讀出數(shù)據(jù)
        154. *************************************************************************/
        155. BYTEReadFromBus()
        156. {
        157. inti,temp;
        158. temp=0;
        159. SDA_UP;//讀取數(shù)據(jù)之前要把SDA拉高
        160. IIC_delay();
        161. for(i=0;i<8;i++)
        162. {
        163. SCL_UP;
        164. IIC_delay();
        165. temp<<=1;
        166. if(PORTIN&SDA)
        167. temp|=0x01;
        168. else
        169. temp&=0xfe;
        170. SCL_DOWN;
        171. IIC_delay();
        172. }
        173. returntemp;
        174. }

        175. 上一頁 1 2 下一頁

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

        評(píng)論


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

        關(guān)閉