標(biāo)題: 這個(gè)單片機(jī)程序我接收數(shù)據(jù)的時(shí)候一直輸出相同的數(shù)據(jù) [打印本頁(yè)]
作者: dwx31 時(shí)間: 2023-7-29 20:41
標(biāo)題: 這個(gè)單片機(jī)程序我接收數(shù)據(jù)的時(shí)候一直輸出相同的數(shù)據(jù)
void UartInit(void) //9600bps@11.0592MHz
{
PCON |= 0x80; //使能波特率倍速位SMOD
SCON = 0x50; //8位數(shù)據(jù),可變波特率
AUXR |= 0x40; //定時(shí)器時(shí)鐘1T模式
AUXR &= 0xFE; //串口1選擇定時(shí)器1為波特率發(fā)生器
TMOD &= 0x0F; //設(shè)置定時(shí)器模式
TMOD |= 0x20; //設(shè)置定時(shí)器模式
TL1 = 0xB8; //設(shè)置定時(shí)初始值
TH1 = 0xB8; //設(shè)置定時(shí)重載值
ET1 = 0; //禁止定時(shí)器%d中斷
TR1 = 1; //定時(shí)器1開始計(jì)時(shí)
}
void UART_SendByte(u8 Byte)
{
SBUF=Byte;
while(TI==0);
TI=0;
}
void main()
{
UartInit();
UART_SendByte(0x05);
}
然后在燒錄之后一直在接收05,并不是接受到一個(gè)后停止
而且我還沒有復(fù)位嘞
各位大佬有沒有什么解決辦法啊
作者: wulin 時(shí)間: 2023-7-29 21:53
void main()
{
UartInit();
UART_SendByte(0x05);
while(1);
}
作者: dwx31 時(shí)間: 2023-7-30 08:44
試過,這樣直接就不輸出了,一個(gè)05都發(fā)不進(jìn)去
作者: AiChiTang 時(shí)間: 2023-7-30 12:03
本帖最后由 AiChiTang 于 2023-7-30 16:06 編輯
u8 flag_a=0;
void UART_SendByte(u8 Byte)
{ if(flag_a==1)
{
delay(50000)
}
if(flag_a==0 )
{
SBUF=Byte;
while(TI==0);
TI=0; flag_a=1;
}
}
void main()
{
delay(50000)
UartInit();
UART_SendByte(0x05);
}
void Delayms(u16 i)//延時(shí)函數(shù)i=100延時(shí)1ms左右
{
while(i--);
}
//我感覺這樣寫應(yīng)該是只能發(fā)一次的,用標(biāo)志位開了之后就不進(jìn)去。
/*我覺得WuLin那個(gè)改的沒問題的,進(jìn)入死循環(huán)之后應(yīng)該是不工作的,但是不知道為什么不對(duì)。有沒有可能是最開始發(fā)送的時(shí)候不穩(wěn)定,沒發(fā)出去,因?yàn)橹话l(fā)了一次,所以沒看到效果。或者先開的發(fā)送端,再開的接收端,錯(cuò)過了。我覺得可以先用延時(shí)函數(shù)看一下。調(diào)好之后再把延時(shí)函數(shù)刪了。
作者: AiChiTang 時(shí)間: 2023-7-30 15:06
u8 i=0;
void UART_SendByte(u8 Byte)
{
SBUF=Byte;
while(TI==0);
TI=0;
}
歡迎光臨 (http://www.torrancerestoration.com/bbs/) |
Powered by Discuz! X3.1 |