其實所有的定時器都是用計數器做的,PLC也是由單片機構成的??纯磫纹瑱C的定時程序就明白了
" {! D+ J' E3 a7 Y/ y; K) I$ ~ /****************************中斷子程序_定時***************************************/
4 j$ N' g6 l( @) e1 j9 }void Timer0() interrupt 12 a5 }- ^1 A3 K, r' z
{
: O9 V( V* E) Y4 o$ M3 q static Count1=0,Count2=0; //靜態變量計數器1
! b9 R; j( C# Q: M) ~ Count1++; //每次中斷計數器加1
0 t y! X" H8 c/ o0 G0 I! r Count2++; //每次中斷計數器加1- F' M- p# o% L9 r8 Z2 l
if(Count1>=12) //如果計數器1超過12
; w V9 h7 k5 f( r0 ` {
4 c- K+ f( O9 W G time_led_sansuo=!time_led_sansuo;, X0 _0 A+ j* l1 M5 U2 \9 y
Count1=0;' z! [3 J, p) ]& r7 l4 [
}
2 E, s1 g, R! e if(time_led_sansuo)7 k# w( |2 @1 ]5 N' n
led_dis &= 0xbf;
6 L" H8 ~% Z6 }, X( ] l else( K4 }/ a4 ?8 H+ o* V; U
led_dis |= 0x40;
2 h& }2 x) p9 E9 L% E2 N4 J9 m7 F2 V if(Count2>=100) //如果計數器2超過100 a9 z# T& m, {' n( \
{
. i4 m) t3 M: C: r, }1 ~/ Y time_run--;
% v5 H$ }% U& J if(time_run==0)8 h0 p& G; i4 X7 G8 a: j: C5 X1 O& Z
{: A* I" v5 ]0 P. A( I
ET0=0; //關定時器0/ A- v7 Z; I! N7 @' @, ]! A9 Y
Time_on=2;2 i5 e7 b+ i/ C, K
EX0=1; //開外部0中斷;& y! ?2 i2 a7 J# ?8 d
}; P+ [% @5 ^* K
Count2=0; //計數器清零% z, l; p. X2 e1 E( Y. C: ^
}
" M# `. t$ ^4 q7 n9 R% V V4 Z0 P8 p9 ]1 ]
TH0=0x28; //重置定時初值; @. D1 ~% a3 S; K3 ?
TL0=0x4b;7 x) Z6 D1 _, N
} |