|
|||||||||||
| 技術(shù)交流 | 電路欣賞 | 工控天地 | 數(shù)字廣電 | 通信技術(shù) | 電源技術(shù) | 測控之家 | EMC技術(shù) | ARM技術(shù) | EDA技術(shù) | PCB技術(shù) | 嵌入式系統(tǒng) 驅(qū)動編程 | 集成電路 | 器件替換 | 模擬技術(shù) | 新手園地 | 單 片 機(jī) | DSP技術(shù) | MCU技術(shù) | IC 設(shè)計 | IC 產(chǎn)業(yè) | CAN-bus/DeviceNe |
這里的高手多,求P89C669 I2C 軟件包 |
| 作者:yanbin 欄目:單片機(jī) |
剛學(xué)用P89C669,I2C部分怎么都調(diào)不通 那位高手做過,指點一二,謝謝了! |
| 2樓: | >>參與討論 |
| 作者: isoar 于 2005/12/14 17:48:00 發(fā)布:
做過,很麻煩,所以不想給你,路要你自己走 |
|
| 3樓: | >>參與討論 |
| 作者: yanbin 于 2005/12/15 8:32:00 發(fā)布:
這地方?jīng)]意思,以后少來了 后來調(diào)出來了 其實也就那么回事,被一些小問題擋住了 希望能給以后需要的人一點幫助 void dlms ( uint t ) { while ( t -- ); } void GetBus ( ) { I2CON = 0x44; I2CLH = I2CLL = 48; I2CON |= 0x20; //STA=1; /*ÉêÇë³ÉΪÖ÷»úÆð¶¯×ÜÏß*/ while( ( I2CON & 0x04 ) == 0 ); /*ΜÈ´ýÆðʼλΜÄ·¢ËÍ*/ } void SendByte(uchar c) { I2CON = 0x44; I2DAT = c; while( ( I2CON & 0x04 ) == 0 ); /*ΜÈ´ýÆðʼλΜÄ·¢ËÍ*/ } bit ISendByte(uchar sla,uchar c) { GetBus( ); /*Æô¶¯×ÜÏß*/ SendByte( sla ); /*·¢ËÍÆ÷¼þΜØÖ·,ÈôÎÞÓ¦´ðÔò·Μ»Ø*/ while ( I2STA != 0x18 ); /* dlms ( 100 ); if( I2STA!=0x18 ) {I2CON = 0x50; return(0);} */ SendByte( c ); /*·¢ËÍÊý¾Ý*/ while ( I2STA != 0x28 ); /* dlms ( 100 ); if( I2STA!=0x28 ) {I2CON = 0x50; return(0);} */ I2CON = 0x50; /*½áÊø×ÜÏß*/ I2CON = 0x00; /*½áÊø×ÜÏß*/ return ( 1 ); } |
|
| 4樓: | >>參與討論 |
| 作者: yanbin 于 2005/12/15 9:24:00 發(fā)布:
更正 void GetBus ( ) { I2CON = 0x40; I2CLH = I2CLL = 48; I2CON |= 0x20; //STA=1; while( ( I2CON & 0x08 ) ==0 ); } void SendByte(uchar c) { I2CON = 0x40; I2DAT = c; while( ( I2CON & 0x08 ) == 0 ); } bit ISendByte(uchar sla,uchar c) { GetBus( ); SendByte( sla ); if( I2STA!=0x18 ) {I2CON = 0x50; return(0);} SendByte( c ); if( I2STA!=0x28 ) {I2CON = 0x50; return(0);} I2CON = 0x50; I2CON = 0x00; return ( 1 ); } |
|
|
|
| 免費(fèi)注冊為維庫電子開發(fā)網(wǎng)會員,參與電子工程師社區(qū)討論,點此進(jìn)入 |
Copyright © 1998-2006 m.58mhw.cn 浙ICP證030469號 |