久久久国产一区二区_国产精品av电影_日韩精品中文字幕一区二区三区_精品一区二区三区免费毛片爱

 找回密碼
 注冊會員

QQ登錄

只需一步,快速開始

搜索

單片機C語言程序問題,請教

[復制鏈接]
11#
 樓主| 發表于 2011-5-2 20:41:27 | 只看該作者
回復 metalstorm 的帖子
3 }+ e5 s' L' z2 y4 ]5 p, E* R9 v. ?/ t% b# O
額,不好意思,沒說清楚,在主函數中已經給order1賦值1了
12#
 樓主| 發表于 2011-5-2 20:43:34 | 只看該作者
回復 robi 的帖子: }5 ]' c) S. P9 _' L; c) {3 g0 Q

6 e! ]* B/ x4 Z+ E額,那個是switch函數,和pwm沒關系
13#
發表于 2011-5-2 20:52:18 | 只看該作者
回復 三月的暴風雪 的帖子
, D! C2 B/ y5 S+ i: j' e8 h. ~# i2 n/ _% g" ?) R8 |
OOP編程思想一般都建議子函數使用參數傳遞機制。當單步執行到case12時,能否通過編程軟件的調試功能查看timer()函數中的order1變量的實際值是多少?最好在order++語句前增加一個輸出語句,將order1打印出來,這個值才是千真萬確的判斷條件。如果order1不等于1,能排除不少可能因素。: M  p: l* c6 _
14#
發表于 2011-5-2 21:01:06 | 只看該作者
回復 三月的暴風雪 的帖子
6 y! q9 e9 {+ Q' r! q, L* U2 Y) Q. ^; {8 }
               嗯~看懂了~
15#
 樓主| 發表于 2011-5-2 21:41:59 | 只看該作者
回復 metalstorm 的帖子
) |  P0 s! ?* F1 D* h3 A5 t
! h! x) T% Y0 L0 b嗯,按您的方法調試了,在執行order1++之前一直等于1,直到執行完order1++之后,那個就是跳到TL0=-(3300-PWM_Value1[5])%256;    order1=0;7 f; b7 W$ u' ~: M% O0 S
* _* t: E2 h0 h
TR1=0;
" @6 X& N2 ]" p# F$ }0 Q$ _7 o. ?+ a
break;7 \, V0 R- d2 T5 Y6 A

: Z# e( O- Z- o& I9 a. ^9 \相當郁悶0 a: Q+ C& ]# ]& V7 P4 l( v; L
16#
發表于 2011-5-2 22:11:59 | 只看該作者
不太明白,學習了,
17#
發表于 2011-5-2 23:19:30 | 只看該作者
建議將timer()函數改寫為參數傳遞機制:
9 S# B& Y4 V0 Z+ h" Hint timer0(int par)
& w9 i( t# F4 {{
2 F9 [: `8 m5 T7 j4 }        switch(par)7 a$ V/ l& J" @7 |/ D1 I
{
& V1 k6 o' K" s1 T* Ncase 1:
7 [: `3 T& f' F1 E2 M...
4 J- }& W$ n  i/ L: f" |...
& X3 A1 o) v8 n8 F3 t! C7 W- mcase 12:  0 F0 m; H1 ~2 g
        PWM0_5=0 ;0 [( z& J7 E, P* A1 p  _" @
        TH0=-(3300-PWM_Value1[5])/256;-+ U9 j9 K0 N/ Q3 Q# y
        TL0=-(3300-PWM_Value1[5])%256;
- F3 s% M( y9 |: @9 m; ^        order1=0;  //為什么要在這里清零?建議刪除該行,改為在主函數中調用timer0()后,判斷如果order1==13,則=1。
8 Q+ x4 M2 v/ t        TR1=0;  //為什么要在這里清零?建議刪除該行,改為在主函數中調用timer0()后,判斷如果order1==13,則清零。/ w# t! h; `0 ^, q) i
        break;;
# W7 x; a& z2 i}
; r$ ^% c; P- y0 @return(par++); 2 ?" V/ Q* g0 D5 a) g  g
}
+ `7 n0 D0 h" ?: k, O: N/ l, b2 ?4 l$ z
在主函數中調用timer0()的語句:0 n. Y" N$ J  G7 \
order1=timer0(order1);
: A* K1 s  d. _0 o+ n$ [if(order1==13) {order1=1; TR1=0;}
) L6 s" g- v9 t' K. I

點評

Thank you very much!  發表于 2011-5-2 23:37
18#
發表于 2011-5-3 20:07:29 | 只看該作者
看了一下你的程序,沒看明白要實現什么功能,感覺有點亂,switch沒這么用的。
; X. L: ]+ F2 I9 e2 G! k按說跳轉沒問題,如果出現異常,建議寫個測試函數test(),本函數逐個顯示所有變量的當前值,test()加在每個break;之前。

點評

呵呵,謝謝,已經可以了  發表于 2011-5-3 23:02
您需要登錄后才可以回帖 登錄 | 注冊會員

本版積分規則

Archiver|手機版|小黑屋|機械社區 ( 京ICP備10217105號-1,京ICP證050210號,浙公網安備33038202004372號 )

GMT+8, 2025-7-16 22:20 , Processed in 0.062759 second(s), 13 queries , Gzip On.

Powered by Discuz! X3.5 Licensed

© 2001-2025 Discuz! Team.

快速回復 返回頂部 返回列表