其实所有的定时器都是用计数器做的,PLC也是由单片机构成的。看看单片机的定时程序就明白了# T. M4 ]0 N6 r* ?- w. W0 o" {
/****************************中断子程序_定时***************************************/9 ?: h* j7 r4 Y: @2 t
void Timer0() interrupt 1
# b+ e* y A) U, ]8 O {
: q* x+ Q* s8 b! l, h static Count1=0,Count2=0; //静态变量计数器1% @- D+ }- {1 ^9 M$ @0 K: s
Count1++; //每次中断计数器加1( e2 D: n: m4 A- F$ l T( G
Count2++; //每次中断计数器加1; Q$ K" b) y% }8 I/ V
if(Count1>=12) //如果计数器1超过120 i" L3 a5 O0 B( N
{' w8 [( S7 @! w/ t' f8 v3 W
time_led_sansuo=!time_led_sansuo;
, ~& y( P: ?) [% P5 p; I& O Count1=0;
7 V7 z9 u, y3 d8 x/ Y4 b. w }
3 j0 J6 ~0 j4 Z( A/ i if(time_led_sansuo)1 P$ ~ z5 }7 p( s8 @' h
led_dis &= 0xbf;& ^. h3 ]9 e0 T* t" g3 E1 s
else6 n% f! R- @/ | H$ L8 P" f
led_dis |= 0x40; # X# v, \4 K7 F1 f! Z- M( `6 N3 C9 d
if(Count2>=100) //如果计数器2超过1004 z7 y Y' d& [2 o
{ + {3 E* k* O& u$ q
time_run--;! Q( S, A1 Q9 M. |
if(time_run==0)
7 ^! x6 r( X7 B+ B o {
2 i- B. C* X; q0 M6 @ ET0=0; //关定时器0/ v, ]& T z2 \
Time_on=2;
: t: J; i: c) w+ A J' P; J4 y EX0=1; //开外部0中断;
; W+ z" d# n) w Y; _ x. D }0 ~5 w O9 X3 x5 X6 _
Count2=0; //计数器清零) f$ J- b( k8 F: k
}
% M2 M$ I L9 Q; _' [& ?9 a4 J+ r
TH0=0x28; //重置定时初值 g! d. S5 J+ q. b5 @7 Q
TL0=0x4b;9 p! D9 h( d) ]/ H8 \- A- n
} |