問(wèn)題:51單片機(jī)在與電腦軟件通訊的過(guò)程中,通訊了100多次 多200多次的時(shí)候會(huì)出現(xiàn)丟數(shù)的情況% ~- C$ b2 b! v
原帖地址:http://bbs.eeworld.com.cn/thread-70030-1-5.html
; a0 |' _: W# L3 E7 M$ e: z, ^ T: ^% x/ l0 `/ a3 B
解決辦法:實(shí)際上數(shù)并沒(méi)有丟 只是可能電路有時(shí)候不穩(wěn) 造成了波特率的波動(dòng) 導(dǎo)致了同步有點(diǎn)問(wèn)題
3 A% v% Y9 m# t1 h9 I$ E原來(lái)的單片機(jī)程序:
# A; p1 |9 q0 C9 ~; cvoid main(). U, b8 \) p" j& o- w$ e
{0 b0 j* t, G4 V
/ y, B. L1 s0 `- s P1=0xff;7 d8 p* H3 U6 n
main_init();2 W# _% U4 W+ v5 `
init_8253();
- v2 L, Y U' s: j$ s serial_init();3 V) s# f( r( Z* j. V' p
" H) |& h% j/ o& L+ A1 y( u' `( m
while(1)
( t, G9 j7 L) T& ^ l {: ~& S( a- z$ p7 M* O/ X
if(state >=3 ) //state代表接收的字節(jié)數(shù) 問(wèn)題就出在這個(gè)判上, 9 m. \( a, |! m. e7 o
有時(shí)候就會(huì)發(fā)生 0 a: ~4 ]8 d# ^
{ state<3的情況,就是我所說(shuō)7 l, @" U: U& V7 j; \; T
的丟數(shù),其實(shí)數(shù)并有丟
; \# r$ r& x9 U1 a+ K …… 我覺(jué)得從理論上講能通訊! G s& G6 u6 Q" E/ i, _
一次成功就通訊N次,
% M9 ^! C, v2 {3 m" U: `8 j8 O 因?yàn)橥粋€(gè)循環(huán)……事
$ R+ G' h7 P I% M& W+ L% X 實(shí) 證明錯(cuò)了…… ' R/ T5 N- T. S6 f# k, J8 P
}: H9 b2 k, l7 f! N% s
}4 i! a4 i1 N e0 k
}' H; N- s1 z# \% h( ]
, D3 ]" z: _$ H; u7 E
$ o9 C0 W! f; f3 u5 J后來(lái)一直想為啥,在網(wǎng)上找了N久,終于發(fā)現(xiàn)有個(gè)類似的,于是在if之前多加了
/ h1 t5 T/ h) sfor(timeout=0;timeout<800;timeout++); 就好了
& v s8 D& q4 f" n- {' I+ g, L7 u( T4 Z8 E
把經(jīng)歷寫出來(lái),可能問(wèn)題很簡(jiǎn)單,我很菜鳥,不過(guò)還是希望和大家分享……
# Z# T$ U0 v% \) T1 o
% ^- X6 J8 J- s+ T6 V[ 本帖最后由 卓信 于 2008-12-17 09:44 編輯 ] |