其实所有的定时器都是用计数器做的,PLC也是由单片机构成的。看看单片机的定时程序就明白了
: t! B- G! Y( q. @ /****************************中断子程序_定时***************************************/" q* V0 c" i ]1 j6 i F% j
void Timer0() interrupt 15 e f; R" B, B* r' E6 _
{
( A2 _/ z0 [6 y6 {/ I: M- V8 V! E static Count1=0,Count2=0; //静态变量计数器1$ _/ ~) K" z& q: X# Y& _
Count1++; //每次中断计数器加1
' s' F' X/ y8 i3 F, k: }7 z& J- d Count2++; //每次中断计数器加1
' A4 a4 A$ F a3 y if(Count1>=12) //如果计数器1超过12
( |8 Q7 c8 E" V {! U( T- M; i! z% T! f, s' a
time_led_sansuo=!time_led_sansuo;
, B8 W- {& J- ]% `) | Count1=0;. N8 s( X9 c0 c4 V
}
+ G+ P s- L' z, p5 s8 @4 a4 w if(time_led_sansuo)% X! |! F. }, S) S4 V
led_dis &= 0xbf;+ ^1 U6 a% p5 ] _, l2 F" i% O9 J4 m
else
1 o/ K: [7 [: N% T" A9 [) |! E led_dis |= 0x40; ; b4 P! V/ S* ]( f1 X4 Q* u% W
if(Count2>=100) //如果计数器2超过1006 P1 v5 g# q! c6 W
{ ; H1 E0 V8 v. v( p
time_run--;- t* z0 E8 ~( H' F- r5 X! O
if(time_run==0)
4 n7 ]. X( h) G6 D8 ]1 c: m( h {, P+ Z; Q" ]1 k2 e
ET0=0; //关定时器04 w, {$ P( [& V: L! n9 L, f
Time_on=2;
f1 ?* T, L$ g' f. d' j EX0=1; //开外部0中断;8 a- |6 U, x# g5 J8 _& r+ T
}6 V8 D/ I) p. \& ]4 Z R' f
Count2=0; //计数器清零% N1 f+ T& i/ n q
}- \1 J6 v! h. G v
# k+ P7 E) g8 a TH0=0x28; //重置定时初值
; M. G9 Q+ J2 m! g TL0=0x4b;
1 c1 m. i& u1 {/ J2 Z( U } |