亚洲欧美日韩国产一区二区精品_亚洲国产精品一区二区动图_级婬片A片手机免费播放_亚洲国产成人Av毛片大全,男女爱爱好爽好疼视频免费,中文日韩AV在线,无码视频免费,欧美在线观看成人高清视频,在线播放免费人成毛片,成 人 网 站 在 线 视 频A片 ,亚洲AV成人精品一区二区三区

機械社區(qū)

 找回密碼
 注冊會員

QQ登錄

只需一步,,快速開始

搜索
查看: 5171|回復(fù): 17
打印 上一主題 下一主題

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

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
1#
發(fā)表于 2011-5-2 18:13:29 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
  我在調(diào)試單片機程序的時候,發(fā)現(xiàn)switch語句中break不起作用,比如說本應(yīng)該從case11中結(jié)束循環(huán)的,但是發(fā)現(xiàn)沒有結(jié)束循環(huán),,卻執(zhí)行了case12中的語句命令,請問各位大俠,,這是何故
2#
發(fā)表于 2011-5-2 18:23:18 | 只看該作者
建議將源程序貼上來,。
3#
 樓主| 發(fā)表于 2011-5-2 18:35:14 | 只看該作者
這是部分程序,前面的程序沒有任何問題,,當(dāng)執(zhí)行
- p1 v2 _7 u" w1 m$ zcase 1:  
  O' k& G+ B! ~0 Z        PWM0_0=1;2 u# r7 W: Z& o# \0 O0 o0 Z0 c
        TH0=-PWM_Value1[0]/256;2 O: y: S: c& P& u  a6 D
        TL0=-PWM_Value1[0]%256;
2 Y/ ^% Y" x0 A: ]        break;
& s6 g" K; m% t' \時,,break沒有起作用,反而直接到了case 12中的這一步
+ f( c4 ^' {5 s5 W3 X+ q9 DTL0=-(3300-PWM_Value1[5])%256;+ Z) R" a  z# ^2 A( _( l
    order1=0;
! M% x, M8 [! N! o! ?( A        TR1=0;0 d' L; ^' V9 ]$ J% K" Q& w: P  z
        break;
' Q: O) S, H$ w" z    }! A3 ?8 h' s9 |, E7 X' b
order1++;
9 V/ s3 B( C/ d3 H  H在case12中結(jié)束循環(huán)的
' |( v* y  k9 [2 ^6 J/*===================================================================================& o( C! h! T( c$ K
    定時器T0的中斷服務(wù)程序
8 n4 G5 S. i; h! i3 g7 i    一個循環(huán)20MS  ≈ 6*3.33ms; S6 p1 B' `* m7 t# B5 b
=====================================================================================*/6 ~, E% @% R. v
void timer0(void) interrupt 1 using 13 d) [7 e, K% i( B
{
) s- n- I! w4 e- X        switch(order1)
2 _7 {' `) j6 |8 n{  W& K# G' S2 G$ }
case 1:  & L2 ]. O8 u" f! }
        PWM0_0=1;/ K. H" e) @" R% B6 e7 ~
        TH0=-PWM_Value1[0]/256;& }. T2 s& `3 g
        TL0=-PWM_Value1[0]%256;
  j' R  U& S: C6 @) D        break;
7 M. y+ |1 r1 I6 _4 R& e  Zcase 2:  # q! w8 \, k* [. b1 C1 j
        PWM0_0=0;      
1 x: w& ~9 ~' g( f; c0 \        TH0=-(3300-PWM_Value1[0])/256;
9 W2 v2 H% K& E% \' C) ^        TL0=-(3300-PWM_Value1[0])%256;- j3 g: U5 j- i
        break;6 Q) t( T# n2 ?! y& W5 ~
case 3:   
; @: m! l& p' \/ `7 p1 g  M        PWM0_1=1;" E0 ?1 o' }6 C: K" L
        TH0=-PWM_Value1[1]/256;
0 K& ~+ @7 {3 L0 d3 G3 H        TL0=-PWM_Value1[1]%256;
0 p) m* u( g& [1 [- n: D2 L        break;
) |2 x4 C& v+ p  q. Ecase 4:   
3 W3 `2 Y8 ?4 v0 A6 W        PWM0_1=0;7 \! V; m" W! A* c- p4 O1 b- X
        TH0=-(3300-PWM_Value1[1])/256;
  I7 E- r# S$ R* V+ B+ N6 b        TL0=-(3300-PWM_Value1[1])%256;- I( C3 |0 M7 M
        break;) u! d4 t5 E+ o. v& b& m+ v
case 5:   ( @4 }& m" q( z2 M+ ]/ H, |. s; Y
        PWM0_2=1;* z- d# W5 ^2 p; I8 `- T5 }
        TH0=-PWM_Value1[2]/256;+ [1 P- A) w5 F% L
        TL0=-PWM_Value1[2]%256;
" U: O/ D3 k: D( o* w$ r        break;
% v" e! {, i: A2 i6 y% O$ Kcase 6:   
/ b1 _- y2 x- J& t  ]( l        PWM0_2=0 ;  V9 g$ |' b; e2 q
        TH0=-(3300-PWM_Value1[2])/256;
8 \- o3 A4 L, d3 M  }        TL0=-(3300-PWM_Value1[2])%256;7 d  F" r, r% Y
        break;9 H9 s: [# [. {# z2 x- P2 h- E) G) H
case 7:    Z9 \3 c4 M1 Q& _$ ]& ?
        PWM0_3=1;
7 k) s# L9 `' O; J% \2 |        TH0=-PWM_Value1[3]/256;
+ V8 r& w* h! A2 S8 Y) Q        TL0=-PWM_Value1[3]%256;
4 Q/ C8 H- f$ E# b) a8 i% Y        break;, L: `. f4 X( ^4 e. G  o1 E
case 8:  
0 Y, Z7 [5 C- b: m        PWM0_3=0;       ) x- _+ _1 j: X  N* k
        TH0=-(3300-PWM_Value1[3])/256;
" g; R& K& a$ n0 W! Z+ J9 y        TL0=-(3300-PWM_Value1[3])%256;; ?# ~; n; Q# d  D1 p
        break;
( H5 I' k; `  \9 g: @case 9:   
( v4 P$ @. W4 ?        PWM0_4=1;
. t, B( Q' Q4 a! d        TH0=-PWM_Value1[4]/256;. U, G4 `% m/ [" i# n
        TL0=-PWM_Value1[4]%256;
$ X" b9 K2 k. [; {4 S/ }        break;
8 U5 s3 ~- p0 d0 x1 y( [. [case 10:   2 _% y5 X7 F$ i$ W+ e* x  o$ D. A
        PWM0_4=0;
& a8 W8 A4 r& f, c+ V        TH0=-(3300-PWM_Value1[4])/256;! K. U( `3 }0 Z8 j3 c
        TL0=-(3300-PWM_Value1[4])%256;: a/ `. Y5 g+ T
        break;
' [* y# Z  g6 }, x; o' {0 k3 G# bcase 11:   
! ]% V* j. a+ ^$ f5 R8 r; i6 }% J5 C. O        PWM0_5=1;2 `$ p; g% k& S6 X( X6 }  K& _
        TH0=-PWM_Value1[5]/256;0 [% n" a1 Y" x
        TL0=-PWM_Value1[5]%256;
: a3 B5 q' ^- j1 h2 s1 K        break;7 N" g9 W% y" x# ]: N4 |
case 12:   
: Q% ~* _9 ]% a3 f  Y* T/ W        PWM0_5=0 ;
; v/ @5 V$ c) h/ w& p- Z8 |        TH0=-(3300-PWM_Value1[5])/256;' |/ m2 O/ F. n+ [, L& ^
        TL0=-(3300-PWM_Value1[5])%256;9 B- h4 f: }7 K5 O# y# i
    order1=0;- G. Q+ _7 p! A5 e
        TR1=0;
9 D8 b5 z0 h' R8 b6 {        break;
) q% ^  a) R- a& R: z6 S    }2 T% ^) _! l; Q# L: s! X2 ?: L  T
order1++;# g1 A) I9 x4 c: f
}
4#
發(fā)表于 2011-5-2 18:35:43 | 只看該作者
仔細(xì)的慢慢檢查吧,,有時候錯誤的地方不是你想的地方,,呵呵。
5#
 樓主| 發(fā)表于 2011-5-2 18:37:06 | 只看該作者
回復(fù) Michael.MG 的帖子
% Q: D9 ^) \! ^/ r) o
! |: t  |1 Z  F' U這個實在是不明白了,,才上來求教的
6#
 樓主| 發(fā)表于 2011-5-2 18:51:36 | 只看該作者
回復(fù) 無能 的帖子* C# L% h, u. u: |! `
% S. j& d" ^+ Z! n4 _( u+ o2 ~
前輩,,能幫忙解決一下嗎?謝謝,,程序貼出來了,。
7#
發(fā)表于 2011-5-2 20:19:19 | 只看該作者
本帖最后由 曉昀 于 2011-5-2 20:20 編輯 ' B3 {7 y& z; ?5 M

" g6 \, |% o% @/ o. k: i2 G: T單步執(zhí)行,看看執(zhí)行到break之后去執(zhí)行哪一步,?4 s# k& o7 c' }8 S6 @9 ^7 k
& D& F8 h; U/ w$ H7 b1 @$ {
很久不玩這個,,忘得差不多了,。' B2 \' h9 f1 ^( n0 v
8#
發(fā)表于 2011-5-2 20:20:46 | 只看該作者
問題原因可能在于switch(order1)的order1參數(shù)是局部變量,在timer()函數(shù)里沒有被賦值,,因此數(shù)值是多少是不確定的,。建議函數(shù)void timer0(void)應(yīng)該使用參數(shù)傳遞機制,每次調(diào)用timer()函數(shù)時應(yīng)該將order1作為參數(shù)傳遞給該函數(shù),,函數(shù)結(jié)束的時候返回order1++的大小,。

點評

謝謝  發(fā)表于 2011-5-2 22:43
9#
發(fā)表于 2011-5-2 20:24:57 | 只看該作者
PWM是什么意思?有個問題不明白哈,,如果PWM0_0,,PWM0_1,PWM0_2,,PWM0_3,,PWM0_4,,PWM0_5同時為0,,執(zhí)行那個case?
10#
 樓主| 發(fā)表于 2011-5-2 20:32:17 | 只看該作者
回復(fù) 曉昀 的帖子
. v; r& g6 w; C; U  X) U% u+ P' v9 a* U$ `9 a: g- }, ^
就是單步執(zhí)行的,才知道跳到case12中去了
您需要登錄后才可以回帖 登錄 | 注冊會員

本版積分規(guī)則

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

GMT+8, 2025-2-22 02:59 , Processed in 0.056529 second(s), 19 queries , Gzip On.

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

快速回復(fù) 返回頂部 返回列表