---
# System prepended metadata

title: SSP1CON1_PIC16F18854_I2C_p464_
tags: [PIC16F18854]

---

# SSP1CON1_PIC16F18854_I^2^C_p464_
###### tags: `PIC16F18854`
![](https://i.imgur.com/AbO0XxD.png)
<style> .red {color:red;} </style> 
## <span class =" red"> WCOL：</span>寫衝突檢測bit （僅發送模式）
##### ==唯讀==
1 =在仍發送前一個字的同時寫入SSPxBUF寄存器（必須在軟件中清除）\
0 =無衝突


## <span class ="red">SSPOV：</span>接收溢出指示符bit
##### ==唯讀==
在SPI模式下：\
1 =當SSPxBUF寄存器仍保留先前的數據時，接收到一個新字節。 如果發生溢出，SSPxSR中的數據將丟失。溢出只能在slave模式下發生。 在slave模式下，即使僅發送數據，用戶也必須讀取SSPxBUF，以避免設置溢出。 在master模式下，由於每次新的接收（和發送）都通過寫入SSPxBUF寄存器來啟動（必須用軟件清零），因此不會設置溢出位。\
0 =無溢出\
\
在I~2~C模式下：\
1 =當SSPxBUF寄存器仍保留前一個字節時，接收到一個字節。在發送模式下，SSPOV是“無關緊要”（必須在軟件中清除）。\
0 =無溢出\


## <span class ="red">SSPEN：</span>同步串列阜啟用bit
##### ==可讀可寫==
在兩種模式下，啟用後，必須將以下引腳正確配置為輸入或輸出\
在SPI模式下：\
1 =啟用串列阜並將SCK，SDO，SDI和SS配置為串行端口的源引腳\
0 =禁用串列阜，並將這些引腳配置為I/O端口引腳。\
\
在I~2~C模式下：\
==**1** = 啟用串列阜，並將SDA和SCL引腳配置為串列阜引腳的源==\
0 = 禁用串列阜並將這些引腳配置為I/O端口引腳


## <span class ="red">CKP：</span>clock極性選擇bit
##### ==可讀可寫==
在SPI模式下：\
1 =clock的空閒狀態為高電平\
0 =時鐘的空閒狀態為低電平\
\
在I~2~C slave模式下：\
SCL釋放控制\
1 =制能clock\
0 =使clock保持低電平（clock伸展，用於確保數據建立時間。）\
\
在I~2~C master模式下：\
在此模式下不使用


## <span class ="red">SSPM ＜3：0＞：</span>同步串列阜模式選擇bit
##### ==可讀可寫==
1111 = I~2~C slave模式，智能了start bit和stop  bit中斷的10位地址\
1110 = I~2~C slave模式，智能了start bit和stop bit中斷的7位地址\
1101 = 保留\
1100 = 保留\
1011 = I~2~C固件控制的master模式（slave空閒）\
1010 = SPI master模式，clock= FOSC/（4 *（SSPxADD + 1））\
1001 = 保留\
==**1000** = I~2~C master模式，clock= FOSC/（4 *（SSPxADD + 1））==\
0111 = I~2~C slave 模式，10位地址\
0110 = I~2~C slave 模式，7位地址\
0101 = SPI slave 模式，clock= SCK引腳，禁止SS引腳控制，SS可以用作I/O引腳\
0100 = SPI slave 模式，clock= SCK引腳，啟用SS引腳控制\
0011 = SPI master模式，clock= T2_match/2\
0010 = SPI master模式，clock= FOSC/64\
0001 = SPI master模式，clock = FOSC/16\
0000 = SPI master模式，clock= FOSC/4