這個是單片機UART的寄存器,請問這一句
其它方式時,在停止位開始發送時由硬件置 1
是不是當SBUF接收到數據后,并發送成功后,也就是SBUF接收到數據,然后發送1個起始位,8位數據位,一個停止位,在發停止位的時候硬件就置1,下面是一段代碼,我是這么理解的,如果有一個叢機,檢測到硬件置一,就可以讓我主機進入中斷,從而繼續接收數據,發送數據,發送完成后,又繼續他那邊處理好邏輯,讓我這邊繼續進入中斷,以此反復.我這樣理解是否正確,請大伙給我講講(跑步機與藍牙的通訊,主機是跑步機,從機是app的藍牙模塊)
TI
發送中斷請求中斷標志位
0:軟件清 0
1:方式 0 時,當串行發送數據第 8 位結束時,由硬件自動置 1,其它方
式時,在停止位開始發送時由硬件置 1
下面我只拿了一點點程序,就是說SBUF接收到數據,并發送成功,就會跳到中斷里面再準備數據,再次發送成功后會再跳入中斷,從機那邊做好邏輯處理,我這邊就可以再接收數據,然后發送,所以我想想問問上面那個UART是不是那樣理解來理解下面這個程序
#include “blue.c”
SBUF=mBLUE.ucWriteBuff[0];//發送第0個元素,進入中斷從第1個元素開始發
mBLUE.ucRxdNumber = 0;//確保接收數據時,從第0個元素開始存起
mBLUE.Olready_Txd_cnt = 1;//1表已經發送了一個字節了
/*
函數功能:定時器0中斷服務函數
參數:無
返回值:無
備注:100us執行一次
*/
void TIMER0_Rpt(void) interrupt TIMER0_VECTOR
{
if(SCON & 0x02)//發送數據
{
SCON &=~ 0x02; //清除發送中斷標志位
if(mBLUE.Olready_Txd_cnt < mBLUE.ucTxdNumber)
{
SBUF = mBLUE.ucWriteBuff[mBLUE.Olready_Txd_cnt];
mBLUE.Olready_Txd_cnt++;
}
else//發送完成一幀數據
{
mBLUE.T_R_falg = Received;//切為接收模式
}
}
}
|