其实所有的定时器都是用计数器做的,PLC也是由单片机构成的。看看单片机的定时程序就明白了
* r9 r: G& O7 C /****************************中断子程序_定时***************************************/
% U/ d# R: q' E+ e$ k N. dvoid Timer0() interrupt 1
6 T/ _9 P* V$ [9 E {
5 j7 B5 G6 g1 Q9 N' V+ M* k. E static Count1=0,Count2=0; //静态变量计数器1
- G0 `. d* }: I# t% p' [: @ Count1++; //每次中断计数器加1
- k# E% l8 |, x& z( H# \ Count2++; //每次中断计数器加14 x6 M& J2 Z( ?+ ]
if(Count1>=12) //如果计数器1超过12
4 l+ U: H2 n1 l Z; m$ O {% d2 j2 N: c$ A8 N) k4 b6 r
time_led_sansuo=!time_led_sansuo;
! v) D6 T( p: K1 U Count1=0;( }9 `0 y+ X' T3 h; y" W, ^
}
; h2 W) E3 b( u if(time_led_sansuo)5 n/ C6 k0 g4 m* O
led_dis &= 0xbf;7 w0 }. ^& e( a, V# V5 c
else
& q% m8 o2 u3 P5 i- b! V led_dis |= 0x40; 0 X8 B+ h9 k! ~0 W. s
if(Count2>=100) //如果计数器2超过100! A2 i/ ^7 `) D9 a% g& u
{
. }& X. e! O) C7 Q time_run--;) `5 l3 k$ B; K( x5 Q
if(time_run==0)
/ Y; u0 v; a+ ^ {# b6 v4 e8 \& X8 J2 `( z
ET0=0; //关定时器06 l( F7 `4 u- P! T, W1 b
Time_on=2;3 W# K. l& z c: n" v
EX0=1; //开外部0中断;
% f( l. l0 @" x* J7 t! X/ l }; b- Q; [( e' @5 \
Count2=0; //计数器清零0 n3 Z: o" P3 U3 s( r
}
3 w! N+ K9 ^' \ d3 ~$ V" V* a3 H: {3 N8 m
TH0=0x28; //重置定时初值0 U' s- x- v$ |; t/ A% y: X" e
TL0=0x4b;
( h, _: ]9 b- {! ]2 U) n$ } } |