問題:51單片機(jī)在與電腦軟件通訊的過程中,通訊了100多次 多200多次的時(shí)候會(huì)出現(xiàn)丟數(shù)的情況
1 a7 }9 e6 N" e- D6 ?原帖地址:http://bbs.eeworld.com.cn/thread-70030-1-5.html: M% \- k1 b% @6 B1 j, l- q
% k: h& Q$ A$ i) f2 c/ F解決辦法:實(shí)際上數(shù)并沒有丟 只是可能電路有時(shí)候不穩(wěn) 造成了波特率的波動(dòng) 導(dǎo)致了同步有點(diǎn)問題 5 O) e( ^( f# h2 m- F
原來的單片機(jī)程序:4 N, G4 _7 i0 O9 I: q/ y
void main()
7 L% i" m# P& Y4 Z/ `0 T2 a8 M{2 p3 L' r) I$ y4 I+ j6 Z+ c
& K/ z o6 o- B" {& l: x6 t% N
P1=0xff;
# U, g) C8 t) I# O& K1 ~1 H main_init();/ h+ X6 q. D# [3 v
init_8253();
5 e3 H& q9 m+ Z serial_init();
3 @, y, i" z+ r' L3 L- m
" ?8 Z& p* X! ~$ S0 y- W while(1)
! w5 r5 ?) L5 o9 n/ l: ^% W$ C& P2 ] {
- L4 B$ I3 M, d if(state >=3 ) //state代表接收的字節(jié)數(shù) 問題就出在這個(gè)判上,
# c% R8 n8 e! I# B1 f% e 有時(shí)候就會(huì)發(fā)生 9 Y! Y7 u3 K. J1 m
{ state<3的情況,就是我所說# Z, F" r. x0 e1 W4 F' b
的丟數(shù),其實(shí)數(shù)并有丟: H+ ?. ?+ Q0 I: \' H4 a d
…… 我覺得從理論上講能通訊
1 L2 q* E* H6 X+ n$ f4 G" G 一次成功就通訊N次,
2 j; M9 ]- s) d( F# g3 ]; {1 E 因?yàn)橥粋€(gè)循環(huán)……事5 J# [( l- B& Y, U5 x9 T3 M
實(shí) 證明錯(cuò)了…… : q% K1 r: L8 _
}
# B7 @3 p" W3 { }4 ^" ]0 l$ t4 v/ J
}
/ m3 d2 t- L4 L3 d( }, c( S/ F; R' x
( L/ V6 Q0 a& C: P; ?; C" B2 r" }; ^8 f
后來一直想為啥,在網(wǎng)上找了N久,終于發(fā)現(xiàn)有個(gè)類似的,于是在if之前多加了7 ?# p) {4 P( R. Y' H
for(timeout=0;timeout<800;timeout++); 就好了1 m7 s& \5 S0 v1 _! A0 W
9 P* Z+ f I* E0 X. w, L0 b- b3 @3 {把經(jīng)歷寫出來,可能問題很簡單,我很菜鳥,不過還是希望和大家分享……4 v5 {# J6 ^. y" K
- P% e, a3 j% F* Q
[ 本帖最后由 卓信 于 2008-12-17 09:44 編輯 ] |