其实所有的定时器都是用计数器做的,PLC也是由单片机构成的。看看单片机的定时程序就明白了
0 z6 C: V) z" A* w& U6 L /****************************中断子程序_定时***************************************/
x& u. G& u \: _( zvoid Timer0() interrupt 1
1 d' N% k+ U3 h' B4 R {
9 W, \( w" c. s. [( t4 G: Z static Count1=0,Count2=0; //静态变量计数器1
5 R& I; d% } N7 w Count1++; //每次中断计数器加11 c. N& U) b9 k- @% H, g
Count2++; //每次中断计数器加1$ |# l7 t3 n( _) l- L: P' {
if(Count1>=12) //如果计数器1超过123 ^3 T. ^+ u6 G
{
! ^3 q1 ?$ N: R. v' g+ ]( G/ y time_led_sansuo=!time_led_sansuo;
3 P: m K$ x( [: o Count1=0;
+ a$ V- Y8 O0 o }
/ S ]' i: }4 H5 O# r4 e- ~ if(time_led_sansuo)
" s( s K* e1 k7 W led_dis &= 0xbf;) S C- |. j/ [% P( s& r
else
( ]" @; ]( N, c7 p$ v$ R" I led_dis |= 0x40; ( d' z- ^2 J& ?7 e
if(Count2>=100) //如果计数器2超过100+ I# E8 g- k* k5 l
{ " d9 q5 O- V- d$ a; B/ M8 L' b- C
time_run--;$ T! |2 v- C5 G3 h% [; u
if(time_run==0)
4 B+ u) G+ F! J6 x {
. o$ ^; u/ H R8 O m ET0=0; //关定时器0
0 k% `, Q* H# B( b2 x( Y& K/ W4 Q8 d Time_on=2;( I+ X6 b) k! {: _1 e
EX0=1; //开外部0中断;
d2 Q5 f$ E* X }
1 }2 _* P' }% \/ b ~ Count2=0; //计数器清零4 {) Y1 a. i$ a& }" B) K
}
' P) w" j8 Z3 R: l5 E0 G' R0 A+ Z/ y9 N( J( g, H
TH0=0x28; //重置定时初值8 O4 L% a( ~+ ?
TL0=0x4b;
; T% Q) o8 Q( c4 j } |