其实所有的定时器都是用计数器做的,PLC也是由单片机构成的。看看单片机的定时程序就明白了
& a; k; @, T& s( I /****************************中断子程序_定时***************************************/! L4 u# j+ a1 ~7 f
void Timer0() interrupt 1
6 @/ p$ w, X' I3 v* f( G0 M* z {
3 X$ E% Q5 l7 R' Y static Count1=0,Count2=0; //静态变量计数器1 I! C. ~6 J$ @! T" S
Count1++; //每次中断计数器加13 R5 H h/ F" T% g8 j0 K- i! @
Count2++; //每次中断计数器加1 T$ \ Q5 ?3 p" v
if(Count1>=12) //如果计数器1超过120 P+ B, I6 R- p' |9 P
{% N! R* F/ M/ L% ? R
time_led_sansuo=!time_led_sansuo;
2 @# T! H5 U8 Z' q+ V2 w7 c Count1=0; ~0 a/ _- w2 K0 v7 H. y% t+ s
}
, \' e" r1 b( u( f if(time_led_sansuo)' t$ E9 r. U. G( x o# ]" }" E/ e
led_dis &= 0xbf;3 G% v$ O' _' l; H( f7 z4 R
else, q0 i" M) `2 f: b' H& T
led_dis |= 0x40; " [% N+ _( l4 [: P( K
if(Count2>=100) //如果计数器2超过100& l( \% D# J0 p, e. c! }
{ 7 O0 C. J0 \% a0 N* A) m6 q& R
time_run--;( ^7 l/ J/ C5 Y/ A! C! f/ C5 F
if(time_run==0)
. X, o- L, i( Y' F1 O/ _ {5 J1 X/ s) d- \3 l% ?0 r( q
ET0=0; //关定时器0/ B4 K# [- V( s- G: y
Time_on=2; c( m- @/ s. }" I2 X
EX0=1; //开外部0中断;
8 X/ \# L1 w( K: u8 ]3 \! j: j }
2 S: h3 r0 s! Q" O: O Count2=0; //计数器清零
$ }4 J; ]6 X+ \- Y, L* m }
( c# K2 A; ~5 ~' U+ S$ M! b* J. c& O0 M
TH0=0x28; //重置定时初值
: F& ?( P, ^0 x- b. |' c TL0=0x4b;( t) z7 O6 ]2 ?. Z' X/ H/ a5 F: f9 Z9 L
} |