有關(guān)單片機(jī)串口的幾個(gè)小招數(shù)
1.可用函數(shù)發(fā)生器當(dāng)串口發(fā)送器用
如果你要調(diào)試串口,只有一塊扳,計(jì)算機(jī)又不在手邊,你可以用函數(shù)發(fā)升器當(dāng)串口發(fā)送器來(lái)用,如你的波特率是9600,那你把函數(shù)發(fā)生器頻率調(diào)到9600/2=4800HZ上輸出TTL電平直接到RXD上就行了,如果是RS232接口,你頻率不變就選函數(shù)發(fā)生器雙極性(交流輸出)就是了,注意電平有峰峰值12VPP就夠了,此時(shí)你的單片機(jī)收到數(shù)據(jù)必須是55H,你可以用MOV P1,SBUF,在P1上去測(cè)電壓,這樣沒(méi)顯示也可測(cè)試串口了.
理論依舊:55H 是01010101 串口啟始位是0,先發(fā)55H最低位,于是一幀就是0(啟始)101010101(停止)................0(啟始)101010101(停止)......正好是1/2波特率的方波.
2.如果你的串口要實(shí)現(xiàn)遠(yuǎn)距離傳輸,你怎么知道傳輸?shù)目煽啃院托盘?hào)與傳輸媒介的適配性呢?
你可以這樣來(lái)做:發(fā)送00H 0FFH 55H,如果這三個(gè)值都能正確接受,那網(wǎng)絡(luò)一定能可靠傳輸了,這就是以點(diǎn)代面的測(cè)試方法.
理由:00H 0FFH是最寬的脈沖和電平(代表能量)最大/最小的脈沖,用信號(hào)系統(tǒng)話說(shuō)他們代表是直流,而55H是最窄脈沖,它代表是最高頻和能量中間值.既然最低的能過(guò),最大也能過(guò),最寬能過(guò)最窄也能過(guò),大能量(抗干擾強(qiáng))低能量(代表抗干擾弱)中能量也能過(guò),你會(huì)相信中間的和中不垃圾的過(guò)不了嗎!
3.用同步頭初始實(shí)現(xiàn)波特率自適應(yīng)和判斷數(shù)據(jù)包起始
同步頭用誰(shuí)?------7FH,且開(kāi)始同步時(shí)連續(xù)發(fā)送!
看7FH的發(fā)送 0起始11111110---1停止
瞧011111110多對(duì)稱!當(dāng)你收到兩個(gè)0中間夾了連續(xù)個(gè)1的數(shù)據(jù)后,只要用連續(xù)1的時(shí)間除以0的持續(xù)時(shí)間=7,說(shuō)明這就是同步頭了,且一個(gè)標(biāo)準(zhǔn)碼元持續(xù)時(shí)間就是碼元0的持續(xù)時(shí)間,其波特率=1/(0碼元持續(xù)時(shí)間)