其实所有的定时器都是用计数器做的,PLC也是由单片机构成的。看看单片机的定时程序就明白了
( U- v G" k& B- f& `' S /****************************中断子程序_定时***************************************/
1 z4 M- G" V1 j; P) T4 Tvoid Timer0() interrupt 1" C- ?9 @4 x) e, A: F2 f
{
# B3 e& G6 s t: y1 u% a, N1 ^ static Count1=0,Count2=0; //静态变量计数器1
/ |& {+ Q: B% J) X Count1++; //每次中断计数器加1
# [/ ], L8 F8 b1 _ Count2++; //每次中断计数器加1
7 X! k$ v! m9 g* C8 P8 F if(Count1>=12) //如果计数器1超过12+ P: T/ p& d& E& d) X# W8 M3 P# A
{( I& K, w, k( d4 r$ e8 c
time_led_sansuo=!time_led_sansuo;) T5 V9 y' F! a; t6 B
Count1=0;9 U( v6 w* ~; d; @8 I* M
}" y# t6 \$ r1 ~ R$ A, |
if(time_led_sansuo)
& }% C0 @) b2 U3 ? led_dis &= 0xbf;
1 p& H* \0 i. ?6 ^! ~ else
; E7 W H. l6 F' v. _ led_dis |= 0x40;
. H! x/ c( H5 K3 P* U0 Q if(Count2>=100) //如果计数器2超过100
6 @! q; S! ^( O { 4 |- L V" j% x
time_run--;0 J, f/ U* A2 o1 W
if(time_run==0)
5 v6 N0 `, m( e1 K% q6 L5 t {" A) X1 E3 h& v7 C+ {9 q+ Z7 b
ET0=0; //关定时器03 w* ?0 {" \. C, e
Time_on=2;3 m' v' |! \% E
EX0=1; //开外部0中断;
; H* X' K/ x8 W$ I }4 P* e$ r, P6 ^7 d' j) Y, L
Count2=0; //计数器清零7 m* e8 Q+ ]9 Q- d2 q: j
}- \+ r0 O$ o6 `$ S) v8 b( x
0 p) n8 `' y, ]+ z' [& c
TH0=0x28; //重置定时初值; _' l& ^0 w; R8 J
TL0=0x4b;( z( A4 Z K4 Q, K, T7 m
} |