Re: [問題] PORT腳一直變更~要如何定義(C)

看板ASM (組合語言)作者 (ksmrt)時間13年前 (2011/11/08 14:46), 編輯推噓1(103)
留言4則, 3人參與, 最新討論串2/2 (看更多)
把讀寫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

11/08 14:50, , 1F
這有點問題... 不能直接用P0
11/08 14:50, 1F
修正一下, 多了一個 p0_out 變數 ※ 編輯: ksmrt0123 來自: 27.105.12.215 (11/08 14:52)

11/08 14:52, , 2F
我很忙,你不要丟出這種搔癢的引誘我寫更複雜的 >"<
11/08 14:52, 2F

11/08 14:53, , 3F
W大加油~ ^^
11/08 14:53, 3F

11/08 15:02, , 4F
K大謝謝您的註解~~我再想想還有無其他方式~~ ^^
11/08 15:02, 4F
文章代碼(AID): #1EkD10e4 (ASM)
討論串 (同標題文章)
文章代碼(AID): #1EkD10e4 (ASM)