問(wèn)題:51單片機(jī)在與電腦軟件通訊的過(guò)程中,通訊了100多次 多200多次的時(shí)候會(huì)出現(xiàn)丟數(shù)的情況
D2 O4 Z" Y4 @" _; {5 m. ^/ ?; b( r原帖地址:http://bbs.eeworld.com.cn/thread-70030-1-5.html- j# D- j* M/ Q) ?1 P
1 o# p% R7 a! G& O/ G- U解決辦法:實(shí)際上數(shù)并沒(méi)有丟 只是可能電路有時(shí)候不穩(wěn) 造成了波特率的波動(dòng) 導(dǎo)致了同步有點(diǎn)問(wèn)題
, t- ?1 }5 ?& w原來(lái)的單片機(jī)程序:# t6 G) O& A8 H: y$ h
void main()
, N& t! c% Z; h' O, l$ D{8 C+ R) Y( a6 M, P+ T
5 T# `- W- z7 V% T6 h' m
P1=0xff;
/ M, h9 D8 w! Y& ?4 { f: @: t/ h main_init();+ N6 t( [; C4 ]
init_8253();
# \; e8 M; |. K% `. O) c7 d4 L serial_init();" g: f! J1 F$ o7 I) ]
: m5 s9 r4 u6 Z% {2 c/ D1 m
while(1)1 w) j, U6 K# ?) E% \
{2 a* f% n+ }8 F, ~; `8 T8 a" q
if(state >=3 ) //state代表接收的字節(jié)數(shù) 問(wèn)題就出在這個(gè)判上, ! D) v* _8 a/ u2 e2 U2 q
有時(shí)候就會(huì)發(fā)生
" Q+ M t* y2 ], b { state<3的情況,就是我所說(shuō)
( c* X( p( i9 h6 h. h 的丟數(shù),其實(shí)數(shù)并有丟
1 T! P! H# ~- a. e) d …… 我覺(jué)得從理論上講能通訊0 ?) u2 I7 g, t& G; u
一次成功就通訊N次,
' G8 h4 c1 ^6 W1 ` 因?yàn)橥粋€(gè)循環(huán)……事
. `/ O! L* h# m3 } p 實(shí) 證明錯(cuò)了……
- R$ }2 S' S6 s4 u0 j. q9 f* S0 ~ }8 c! w C: c6 G, a
}- i6 t" ?/ u+ ^7 A3 G- T' H" B
}
/ z3 K5 T0 `) ~5 r1 z
& ~; \& {. m6 V1 d$ E1 x; U7 q+ |/ X, w n4 L
后來(lái)一直想為啥,在網(wǎng)上找了N久,終于發(fā)現(xiàn)有個(gè)類似的,于是在if之前多加了1 ?* ]; y* ~: ?2 j' g
for(timeout=0;timeout<800;timeout++); 就好了
8 {8 h" @3 q( {% D- o7 h3 E# N& p8 e. i9 _( Q5 o4 w
把經(jīng)歷寫(xiě)出來(lái),可能問(wèn)題很簡(jiǎn)單,我很菜鳥(niǎo),不過(guò)還是希望和大家分享……: j) q$ Q1 ~ S2 |
2 ?9 H: I& R+ F$ m. c3 g9 x
[ 本帖最后由 卓信 于 2008-12-17 09:44 編輯 ] |