其实所有的定时器都是用计数器做的,PLC也是由单片机构成的。看看单片机的定时程序就明白了2 f) @* W3 d" A1 c. x( e
/****************************中断子程序_定时***************************************/
0 G4 g6 g, q k( U2 T9 r3 R4 {void Timer0() interrupt 1
8 Y% O& F S0 V! h1 N/ M& E7 } {2 K4 @: D0 j9 r! w! g
static Count1=0,Count2=0; //静态变量计数器1
* n/ ^! O1 ^2 e/ h1 a% r Count1++; //每次中断计数器加1+ D! u" D# k% g* I5 }1 c
Count2++; //每次中断计数器加1' A0 s- M; T& N! p/ s+ B7 E* j
if(Count1>=12) //如果计数器1超过12
5 x9 U4 b) B9 b/ g5 j' |1 l {
3 o, }( [2 T* u6 x2 w0 X2 _ time_led_sansuo=!time_led_sansuo;
0 ~) Q% h; c( U1 H K- u# e8 T+ M Count1=0;
; T3 n, z4 i, ~ }5 B( r/ A0 ^" U7 C- G
if(time_led_sansuo)
2 C6 w" |$ v. @* ^8 V( _ led_dis &= 0xbf;' E7 U, U2 t) e' z3 g- L2 P
else
, u$ r* c+ a: S( m led_dis |= 0x40; u& M) T: m9 h; T
if(Count2>=100) //如果计数器2超过100
7 G9 z, {4 \4 }4 B/ F6 } { & Y4 o' c2 {0 {
time_run--;3 M) R3 r% h$ U& w' _; c. N: {
if(time_run==0)) ]) E- H M- Y& M) M/ z
{- p: R! d8 N# N7 z' t
ET0=0; //关定时器02 I* i( _( y" I/ k- Z( x
Time_on=2;+ j5 E) N, L6 {0 Y# T6 V5 e, \2 D
EX0=1; //开外部0中断;- h* ~; p0 T; n( O% A3 c' F
}3 y- [ c" D/ h* F% T9 l1 U
Count2=0; //计数器清零& ]" E/ U* y( z" p
}
+ Z8 K9 U% W5 ^( U5 Q y( o
: `1 S% @" n. p( g& X a TH0=0x28; //重置定时初值
: ^- h# L+ T2 p0 V; g/ @' r TL0=0x4b;
+ B# L) ]5 x: z7 u% b } |