|
如題,請問51單片機(jī)接收數(shù)據(jù)的SBUF能存活多久呢? 比如下面這個串口中斷復(fù)函函數(shù)(片段),我將接收中斷標(biāo)志RI清0之后,SBUF的值多久會消失呢?
unsigned char data = 0;
void Uartinterrpt(void) interrupt 4
{
if(RI == 1)
{
RI = 0;
// 假設(shè)這里過很久我才把SBUF接收的值拿出來, 使用delay ();
data = SBUF;
}
}
另外如果發(fā)送函數(shù)如下,SBUF拿發(fā)送值的時候 SBUF = c; 恰巧有接收數(shù)據(jù)被中斷了,執(zhí)行串口中斷函數(shù)了,那么SBUF拿的值會不全(比如8位整個字節(jié)拿不全,拿了3位),造成發(fā)送亂碼嗎?
void SendByte(unsigned char c)
{
SBUF = c;
while(TI==0);
TI = 0;
}
|
|