1
我期待配置我的PIC,以便我可以使用端口RB4並向設備發送脈衝,然後在同一端口上接收數據。爲此,我需要將RB4配置爲數字I/O端口,然後;PIC18f4550:爲雙向數據配置RB4
組作爲輸出 lowsignal 1ms的延遲 highsignal 1ms的延遲 集合作爲輸入 讀取輸入
然後,該代碼循環。所以我有;
for(i=0;i<10;i++) // There are 10 bits of data to read
{
ADCON0bits.ADON = 0;
TRISBbits.TRISB4 = 0; // set to output
ADCON0bits.ADON = 1;
LATBbits.LATB4 = 0; // output low
LATBbits.LATB4 = 1; // output high
delay(1);
ADCON0bits.ADON = 0;
TRISBbits.TRISB4 = 1; // configure for input
ADCON0bits.ADON = 1;
inData = inData<<1;
delay(1);
if (PORTBbits.RB4==1)
inData++;
}
但我似乎沒有得到輸入。我是PIC世界的新手。任何人都可以將我指向正確的方向嗎?是否可以像這樣在輸入和輸出之間切換?我正在做正確的事情,我配置的方式?
非常感謝!
當我閱讀說明,然後檢查您的代碼時,我發現您不會在輸出lowsignal和輸出highsignal之間等待1 ms。 – LiveGen
你爲什麼要打開和關閉ADC,而不是隻關閉整個時間?如果RB4被配置爲模擬引腳,我注意到您在讀取引腳之前重新啓用它,但我認爲在大多數PIC上它確實可以,但可能不是全部。 – PeterJ
這是一個正在等待被炸的處理器。在讀取引腳B4狀態後,只需幾個時鐘週期,即可將該引腳設置爲再次輸出。如果對方碰巧發送數字信號爲高電平,那麼您將查看兩個設備之間的潛在電氣短路! – epichorns