其实所有的定时器都是用计数器做的,PLC也是由单片机构成的。看看单片机的定时程序就明白了4 j2 X+ U* |9 G8 J- y
/****************************中断子程序_定时***************************************/1 M% l3 {! C, [# J( o
void Timer0() interrupt 1
$ G" l j' z% T- ?5 K {' i' |+ f' r5 _- M( L
static Count1=0,Count2=0; //静态变量计数器1+ k- K! o8 X; P, [; g
Count1++; //每次中断计数器加1
) e% H j- g% J/ N7 Z- W! n* j% V Count2++; //每次中断计数器加1$ K% N" G. x( z5 W- T! s& W
if(Count1>=12) //如果计数器1超过12
& `2 h+ i5 g: n. ]5 ` {0 m8 b5 m+ y) D
time_led_sansuo=!time_led_sansuo;
5 d v" s+ D" D& D$ p Count1=0;
9 o4 o2 ]) D, l3 I }
; }& r% V1 y9 Q- D+ A7 f, X if(time_led_sansuo)
6 z1 U5 @7 T( i led_dis &= 0xbf;1 g# {' `7 C% G2 h( v+ I' G
else" J6 r4 V" U5 ]; U. k# F* @
led_dis |= 0x40; & A1 u/ @2 x2 e3 E7 K1 o
if(Count2>=100) //如果计数器2超过100
+ ]8 @! k C& T! A$ x {
0 N/ M9 _, A; D/ Y$ l/ ~, n time_run--;9 Q4 x9 ?; x& r1 G
if(time_run==0)
# N" \: R+ j K: `1 S, \3 M {
" m6 p+ ~% U( g ET0=0; //关定时器0
W4 A1 d. W! k, M7 m. S Time_on=2;, q5 o- m1 b# V# O# {
EX0=1; //开外部0中断;
! X! {9 e: Y; N9 t$ K5 L }
8 P% k }: c/ K Count2=0; //计数器清零% i! X# L ^1 a/ q
}
8 l- ~ \& d+ p+ J% B5 |3 J* U6 @- I8 q G3 P S9 c
TH0=0x28; //重置定时初值
4 X4 D: {0 Q/ }8 u: }/ b8 N TL0=0x4b;
( E Q/ z, K' [- J' o } |