<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > 模擬串口自動(dòng)測量波特率的單片機程序

模擬串口自動(dòng)測量波特率的單片機程序

作者: 時(shí)間:2012-08-02 來(lái)源:網(wǎng)絡(luò ) 收藏

void WByte(BYTE out)
{
//發(fā)送啟始位
BYTE i=8;
BYTE tmp=out;
TR1=1;//開(kāi)定時(shí)器
TX1=0;
WaitTF1();
//發(fā)送8位數據位
while(i--)
{
TX1=(tmp0x01); //先傳低位
tmp=tmp>>1;
WaitTF1();
}
//發(fā)送校驗位(無(wú))
//發(fā)送結束位
TX1=1;
WaitTF1();
TR1=0;
}
void putchar(char ch)
{
WByte(ch);
}
BYTE RByte()
{
BYTE in=0;
BYTE cnt;
while(RX1==1);//等待RXD變低,啟動(dòng)定時(shí)器,這個(gè)是阻塞模式
TR1=1;//同步開(kāi)定時(shí)器//這里……
//while(!TF1);
//TF1=0;
WaitTF1();
if(min_mode !=0)
{
while(!TF1);//注意這里的周期稍微長(cháng)。要補償
TF1=0;
}
for(cnt=0;cnt8;cnt++)
{
in=in >>1;//從高移到低
if(RX1==1) in = in | 0x80;//如果RXD=1,則最高置位
WaitTF1();//等待一位過(guò)去
}
while(!TF1);//注意這里的周期稍微長(cháng)。要補償
TF1=0;
TR1=0;//關(guān)閉定時(shí)器
return in;
}

UINT f_Test(void)//測試脈寬
{
TMOD=0x10;//設置計數器1為方式一計數器模式
TH1=0;
TL1=0;//定時(shí)器CLR
while(!RX1);//等待頻率腳變高,這個(gè)是測低電平的
while(RX1);//等待腳變低,更換符號可以測正脈沖
TR1=1;//開(kāi)啟定時(shí)器
while(!RX1);//等待變高
TR1=0;//停止計數
//cyc=TH08;
//cyc=cyc+TL0;
return (TH18)+TL1;
}
void baud_t()
{
BYTE k;//復用變量
ULONG frq=0; //周期變量
for(k=0;k5;k++)// 變量復用大法
{
frq=frq+f_Test();//測試
}//測量5次取平均
frq=frq/5;
if(frq0xff)
{
k=0x100-(frq0xff);
min_mode=MIS_0;
}
else
{
if(frq / 2 0xff)
{//2400baud
k=0x100-((frq/2)0xff); //2分頻
min_mode=MIS_2;
}
else if(frq / 4 0xff)
{//1200baud
k=0x100-((frq/4)0xff);//4分頻
min_mode=MIS_4;
}
else if(frq / 8 0xff)
{//1200baud
k=0x100-((frq/8)0xff);//8分頻
min_mode=MIS_8;
}
else if(frq / 16 0xff)
{//1200baud
k=0x100-((frq/16)0xff);//16分頻
min_mode=MIS_16;
}
}
if(k > 0x50)
{
k=k+6;//加補償,因為if語(yǔ)句讓機器周期加長(cháng)
//如果對于STC的新MCU,這里要按照情況調整
}
TMOD=0x20;//設置定時(shí)器1為自動(dòng)裝載模式
TH1=k;//載入新
TL1=k;
}
void main()
{
while(1)
{
baud_t();//測量,阻塞模式
printf("Hello world!n");
printf("Here:mode=%d,T1=0x%Xrn",min_mode,TH1);//這里如果你要使用keil請自己寫(xiě)字符串發(fā)送函數,和sprintf配合使用
printf("Could you please test another baudrate?rn");
printf("But I think that I couldn't to do.....rn");
}
}


上一頁(yè) 1 2 下一頁(yè)

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>