看板 ASM 關於我們 聯絡資訊
把讀寫sda的指令(如 pSDA = 1; )改成下列兩個 functions, 如此只要設定 mask 即可access不同的sda. 這個程式只做到 8-bit (P0), 要做到24-bit (P0-P2)需再擴充但應該不難. unsigned char sda_mask = 0x01; // p0.0 unsigned char p0_out = 0xFF; void set_sda(bit b) { if(b) p0_out |= sda_mask; else p0_out &= ~sda_mask; P0 = p0_out; } bit get_sda(void) { return(P0&sda_mask? 1: 0); } ※ 引述《fmdjyl (小D(滴))》之銘言: : 用i2c寫sda和scl : 今天用一堆ic要被控制~SCL全部都為同一隻. : 但sda會從p0.0~ p2.7 (共24 pin) : 又因不變動SDA動作的程式~~ : 如 : =============================== : void main(void) : { : while(1) : { : //該如何定義~才可以讓我的pSDA隨我所定義的port動作? : I2cStart(); : } : } : void I2cStart(void) : { : pSDA=1; : pSCL=1; : I2cWait( ); : pSDA=0; : I2cWait( ); : pSCL=0; : I2cWait( ); : } : ============================ : 我想執行pSDA前~是會是我所定義的port腳~請問該如何定義呢?? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 27.105.12.215
ksmrt0123:這有點問題... 不能直接用P0 11/08 14:50
修正一下, 多了一個 p0_out 變數 ※ 編輯: ksmrt0123 來自: 27.105.12.215 (11/08 14:52)
WolfLord:我很忙,你不要丟出這種搔癢的引誘我寫更複雜的 >"< 11/08 14:52
ksmrt0123:W大加油~ ^^ 11/08 14:53
fmdjyl:K大謝謝您的註解~~我再想想還有無其他方式~~ ^^ 11/08 15:02