Re: [問題] PORT腳一直變更~要如何定義(C)
把讀寫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
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
11/08 14:53, 3F
→
11/08 15:02, , 4F
11/08 15:02, 4F
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 2 篇):
ASM 近期熱門文章
PTT數位生活區 即時熱門文章