这个是单片机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;//切为接收模式
}
}
}
|