2012-11-21 47 views
0

在英飛凌C509中有一個名爲S1CON的寄存器,它是一個看起來像這樣的特殊功能寄存器。 enter image description here在8位SFR(專用寄存器)上定義引腳

可以將S1CON上的位0定義爲RI1,以便它可以在主程序中訪問和參照。如果接收串行接口1的標誌中斷爲高電平或低電平,我想檢入我的主程序。它不是在頭文件中定義,但S1CON是

sfr S1CON = 0x9B; 

謝謝

還是僅僅可能只是檢查對S1CON位0的狀態???

回答

1

您可以爲各個位定義掩碼(它們可能已在適當的頭文件中爲您定義),例如,

#define RI1 0x01 // RI1 = bit 0 
#define TI1 0x02 // TI1 = bit 1 
#define RB81 0x04 // RB81 = bit 2 
... 

,然後以測試RI1:

if (SC1CON & RI1) 
    ... 

要設置RI1:

SCICON |= RI1; 

要清除RI1:

SCICON &= ~RI1; 
+0

的問題是,S1CON在限定= 0x50爲了設置UART1,所以這種方式很可能會影響該設置,不是嗎? – user1175889

+0

不 - 您只是在讀取寄存器並測試位0 - 它不會修改寄存器內容。 –

+0

哦,我看到所以如果我想,如果RI1等於'if((S1CON&RI1)== 1)'應該工作 – user1175889