標(biāo)題:
關(guān)于單片機(jī)串口發(fā)送數(shù)據(jù)定時(shí)問題的請(qǐng)教,謝謝大神!
[打印本頁(yè)]
作者:
729481693
時(shí)間:
2017-11-5 17:36
標(biāo)題:
關(guān)于單片機(jī)串口發(fā)送數(shù)據(jù)定時(shí)問題的請(qǐng)教,謝謝大神!
問題描述:想通過串口中斷 實(shí)現(xiàn)每100ms發(fā)送一次數(shù)據(jù),從而1s實(shí)現(xiàn)發(fā)送10組數(shù)據(jù)
現(xiàn)在將上述代碼燒錄完成后,串口無數(shù)據(jù)顯示;
請(qǐng)假各位大神解答,謝謝!
代碼如下:
void main()
{
delay(500); //上電延時(shí)
init_uart();
InitMPU6050(); //初始化MPU6050
delay(150);
while(1)
{
if(num >= 2)
{
int i;
num = 0;
mark_change(dis,mark);
if(++mark >=1000)
mark=0;
for(i=0;i<4;i++)
SeriPushSend(dis[i]);
Display10BitData(GetData(ACCEL_XOUT_H)); //顯示X軸加速度
Display10BitData(GetData(ACCEL_YOUT_H)); //顯示Y軸加速度
Display10BitData(GetData(ACCEL_ZOUT_H)); //顯示Z軸加速度
Display10BitData(GetData(GYRO_XOUT_H)); //顯示X軸角速度
Display10BitData(GetData(GYRO_YOUT_H)); //顯示Y軸角速度
Display10BitData(GetData(GYRO_ZOUT_H)); //顯示Z軸角速度
}
}
}
void ser() interrupt 1
{
TH0=(65536-45872)/256;
TL0=(65536-45872)%256; //設(shè)定定時(shí)器50ms進(jìn)入一次中斷;
num++;
}
復(fù)制代碼
作者:
wulin
時(shí)間:
2017-11-6 10:35
本帖最后由 wulin 于 2017-11-6 13:15 編輯
你這是通過串口, 實(shí)現(xiàn)每100ms發(fā)送一次數(shù)據(jù)串,與串口中斷無關(guān)。
直接與之相關(guān)程序:
unsigned char code str[12]={0xEB,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x55};
bit flag=0;
unsigned char num;
void InitUART()//11.0592MHz
{
TMOD = 0x21;//定時(shí)器0方式1,定時(shí)器1方式2(8位重載)
TH0 = 0x4C; //50ms
TL0 = 0x00; //50ms
TH1=0xfd;//波特率9600
TL1=0xfd;//波特率9600
SM0=0; //設(shè)置串口方式1(8位UART波特率可變)
SM1=1; //設(shè)置串口方式1(8位UART波特率可變)
TR0 = 1;//開定時(shí)器0
TR1 = 1;//開定時(shí)器1
}
void main()
{
unsigned char i;
InitUART();
while(1)
{
if(flag==1)
{
flag=0;
for(i=0;i<12;i++)//數(shù)據(jù)頭+10幀有效數(shù)據(jù)+數(shù)據(jù)尾共12幀
{
SBUF = dis
;
while(!TI);
TI = 0;
}
}
}
}
void ser() interrupt 1
{
TH0 = 0x4C; //重裝50ms
TL0 = 0x00; //重裝50ms
num++;
if(num>=2)
flag=1;
}
歡迎光臨 (http://www.torrancerestoration.com/bbs/)
Powered by Discuz! X3.1