|
最近遇到一個問題# H- H" A, v% w2 i7 E0 i
若設定ㄧ個Timer 中斷 3.2mS中斷ㄧ次
# ]$ h' Z! k6 M7 [/ B然而中斷時間到時,MCU正在執行算術運算
) V/ o; W9 T& q$ G( q8 N+ K* k: L而這時運算中的資料會如何?( a% B* Y5 k. P3 e
" e% O9 d+ e5 o例:
/ d5 g6 I0 S( `void R1()
4 E. R' j' G& M) [{& `8 K( u: G9 h
unsinged int REG;9 }& r# X. C: }8 Q1 t* }- k* _
REG=12*3' p( R* d& Z4 Y6 w; t6 y% Z
if(REG>=36)- x+ Y4 d' \/ k8 l$ ?$ H3 Q$ X( y
{4 I C1 G! f ]' \, {6 i+ B$ H2 f
FLAG=1;
- Q( ]7 L1 a9 u: [7 H* ` }/ Y. Q0 [, Y8 d7 Z/ e, ~
else
" W' d; }% d# o: m: J. [ {( S0 O1 w9 ]" `7 Q+ q7 x# D
FLAG=0;8 D" I L. S* C9 U# L( J
}, w3 L5 l8 ?2 R3 A" n. H
}, B* U9 l8 M( Y; n0 l
b1 q6 Y7 d/ A5 x9 ?__intterrupt timer0() //3.2ms 中斷ㄧ次. G. t! A$ }. V) A L- J( Z
{
G, @6 A1 T/ u, s$ w7 Z ;
2 f5 e4 ^7 x4 W2 d( ^8 a* g' x' W}" s/ Z2 Y9 p( i, T& n
9 g+ D5 R; M- Q4 W0 V問:
/ j1 s: l# K9 d; N# l8 P8 k1.若程式執行至REG=12*3時發生中斷,在中斷結束後,FLAG=?
8 M, e: v8 j7 t9 e6 c. A% h4 W2.若將REG替換成 #define REG 12*3,且程式執行至if(REG>=36)時發生中斷,在中斷結束後,FLAG=?
. e/ D6 r) _' L/ M0 Y/ [0 \, [8 q* W# x
懇請各位前輩是賜答~~ |
|