作者ksmrt0123 (ksmrt)
看板ASM
標題Re: [問題] PORT腳一直變更~要如何定義(C)
時間Tue Nov 8 14:46:20 2011
把讀寫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