# 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