<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > 我的MIDI鍵盤(pán)程序

我的MIDI鍵盤(pán)程序

作者: 時(shí)間:2016-11-29 來(lái)源:網(wǎng)絡(luò ) 收藏
#include //89s52頭文件
#define io_74hc165_SH_LD   P1_0  //硬件設置#define io_74hc165_CLK     P1_1#define io_74hc165_SDA     P1_2#define io_74hc164_SCK  P1_3#define io_74hc164_SDA  P1_4#ifndef RW_DEFINED#define RW_DEFINEDvoid _snop_(){}#endif//Crystal at 12.0MHz 1MIPS#define I2C_SDA P3_2                          // 將p3.2口模擬數據口,必須要這樣。中斷接受數據#ifdef I2C_SCL#else#define I2C_SCL P1_6                          // 將p1.1口模擬時(shí)鐘口,默認#endif#ifdef SlaveAddress#else#define SlaveAddress 0x02		  //地址#endif#ifdef MasterAddress#else#define MasterAddress 0x01		  //主機地址#endif#define delayNOP(); {_snop_();_snop_();_snop_();_snop_();};unsigned char s_control;unsigned char s_note;unsigned char s_svel;bit	nm;bit   SystemError;                // 從機錯誤標志位//--------------------------------------------------------------------------------------------------// 函數名稱(chēng): iic_start()// 函數功能: 啟動(dòng)I2C總線(xiàn)子程序//--------------------------------------------------------------------------------------------------void iic_start(void){ 	EA=0;            //時(shí)鐘保持高,數據線(xiàn)從高到低一次跳變,I2C通信開(kāi)始I2C_SDA = 1;I2C_SCL = 1;delayNOP();      // 延時(shí)5usI2C_SDA = 0;delayNOP();I2C_SCL = 0;}//--------------------------------------------------------------------------------------------------// 函數名稱(chēng): iic_stop()// 函數功能: 停止I2C總線(xiàn)數據傳送子程序//--------------------------------------------------------------------------------------------------void iic_stop(void){I2C_SDA = 0;   	   //時(shí)鐘保持高,數據線(xiàn)從低到高一次跳變,I2C通信停止I2C_SCL = 1;delayNOP();I2C_SDA = 1;delayNOP();I2C_SCL = 0;EA=1;}//--------------------------------------------------------------------------------------------------// 函數名稱(chēng): slave_ACK// 函數功能: 從機發(fā)送應答位子程序//--------------------------------------------------------------------------------------------------void slave_ACK(void){I2C_SDA = 0;I2C_SCL = 1;delayNOP();I2C_SDA = 1;I2C_SCL = 0;}//--------------------------------------------------------------------------------------------------// 函數名稱(chēng): slave_NOACK// 函數功能: 從機發(fā)送非應答位子程序,迫使數據傳輸過(guò)程結束//--------------------------------------------------------------------------------------------------void slave_NOACK(void){I2C_SDA = 1;I2C_SCL = 1;delayNOP();I2C_SDA = 0;I2C_SCL = 0;}//--------------------------------------------------------------------------------------------------// 函數名稱(chēng): check_ACK// 函數功能: 主機應答位檢查子程序,迫使數據傳輸過(guò)程結束//--------------------------------------------------------------------------------------------------void check_ACK(void){ I2C_SDA = 1;      // 將p1.0設置成輸入,必須先向端口寫(xiě)1I2C_SCL = 1;F0 = 0;if(I2C_SDA == 1)    // 若I2C_SDA=1表明非應答,置位非應答標志F0F0 = 1;I2C_SCL = 0;}//--------------------------------------------------------------------------------------------------// 函數名稱(chēng): IICSendByte// 入口參數: ch// 函數功能: 發(fā)送一個(gè)字節//--------------------------------------------------------------------------------------------------void IICSendByte(unsigned char ch){unsigned char idata n=8;     // 向I2C_SDA上發(fā)送一位數據字節,共八位while(n--){if((ch&0x80) == 0x80)    // 若要發(fā)送的數據最高位為1則發(fā)送位1{I2C_SDA = 1;    // 傳送位1I2C_SCL = 1;delayNOP();I2C_SDA = 0;I2C_SCL = 0;}else{I2C_SDA = 0;    // 否則傳送位0I2C_SCL = 1;delayNOP();I2C_SCL = 0;}ch = ch<<1;    // 數據左移一位}}//--------------------------------------------------------------------------------------------------// 函數名稱(chēng): IICreceiveByte// 返回接收的數據// 函數功能: 接收一字節子程序//--------------------------------------------------------------------------------------------------unsigned char IICreceiveByte(void){unsigned char idata n=8;    // 從I2C_SDA線(xiàn)上讀取一上數據字節,共八位unsigned char tdata=0;while(n--){I2C_SDA = 1;I2C_SCL = 1;tdata = tdata<<1;    // 左移一位,或_crol_(temp,1)if(I2C_SDA == 1)tdata = tdata|0x01;    // 若接收到的位為1,則數據的最后一位置1elsetdata = tdata&0xfe;    // 否則數據的最后一位置0I2C_SCL=0;}return(tdata);}bit IICwaitACK(){ //10us不屬于超時(shí)unsigned char i=0;bit j=0;I2C_SDA=1;//輸入狀態(tài)while (i!=10){if (I2C_SCL==1) //先SCL=1 SDA=0后SCL=0 SDA=1{j=1;break;}i++;}return j;}				   
				
            
                
			
							
上一頁(yè) 1 2 3 下一頁(yè)

關(guān)鍵詞: MIDI鍵盤(pán)程

評論


技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>