問(wèn)題:51單片機(jī)在與電腦軟件通訊的過(guò)程中,通訊了100多次 多200多次的時(shí)候會(huì)出現(xiàn)丟數(shù)的情況7 g8 Y7 O6 ~) S. J6 x! n# Y ~* e
原帖地址:http://bbs.eeworld.com.cn/thread-70030-1-5.html$ i( c' } X* x
' H2 X8 N+ k! s5 O* j( t. s解決辦法:實(shí)際上數(shù)并沒(méi)有丟 只是可能電路有時(shí)候不穩(wěn) 造成了波特率的波動(dòng) 導(dǎo)致了同步有點(diǎn)問(wèn)題
; O; C: S# T- e* u3 O原來(lái)的單片機(jī)程序:) h& M5 [% P0 v3 y9 D8 N
void main()
" r* ]( P. i. d6 J) I! ~{
. |7 n2 D' u# k9 X! G2 N3 U* X5 t0 {" i
P1=0xff;! u8 i( t2 K7 c4 h1 f) D
main_init();
, d& c* A2 v9 o init_8253();
+ V0 U& u; N/ M serial_init();
) t0 ~% `6 |6 r7 n. g1 r* o( v
! d: z7 T, l, Y8 l: O) a4 } while(1)
: @& Y# T6 X' G: z {
4 E f& f; R' u if(state >=3 ) //state代表接收的字節(jié)數(shù) 問(wèn)題就出在這個(gè)判上,
9 a: M8 v' i( N! x! k) | 有時(shí)候就會(huì)發(fā)生 # U* \6 |. |; L; ]9 `" w
{ state<3的情況,就是我所說(shuō)
1 ~: l3 u2 I' H 的丟數(shù),其實(shí)數(shù)并有丟
, Z/ R) A5 D1 Q2 x$ ? …… 我覺(jué)得從理論上講能通訊, N8 |& F. z) D |( [4 M
一次成功就通訊N次,
6 H* W1 _& h& a5 K 因?yàn)橥粋(gè)循環(huán)……事7 N3 K0 j5 y" R8 [, ~5 R
實(shí) 證明錯(cuò)了…… . h2 j- h1 F t0 W% D1 h# A
}
; h' e# i7 X" o# H( z3 |* w! u7 g }3 I0 S; u5 t6 u- p2 s0 B% k
}
5 C' U8 R. _8 N% m4 B' I# W7 }1 |# `* Q
6 z8 X( X9 _4 S后來(lái)一直想為啥,在網(wǎng)上找了N久,終于發(fā)現(xiàn)有個(gè)類似的,于是在if之前多加了
/ J [( h* X+ G @2 @ I! Qfor(timeout=0;timeout<800;timeout++); 就好了( Q1 @0 v8 ?5 g9 B: E
# H q) k& b8 ?: j把經(jīng)歷寫(xiě)出來(lái),可能問(wèn)題很簡(jiǎn)單,我很菜鳥(niǎo),不過(guò)還是希望和大家分享……/ _ v1 F. y/ A3 v$ {/ u( H) S1 j, U% ?
, X. N0 e( t* }( C
[ 本帖最后由 卓信 于 2008-12-17 09:44 編輯 ] |