其实所有的定时器都是用计数器做的,PLC也是由单片机构成的。看看单片机的定时程序就明白了9 D$ S7 G8 o) F9 ^5 }- J
/****************************中断子程序_定时***************************************/
6 y0 Z' U+ t( H, U4 jvoid Timer0() interrupt 11 ]8 e! m& T, r: o" Q& g
{4 a+ \3 o: v* z. w% X0 m% S! ?
static Count1=0,Count2=0; //静态变量计数器10 l/ r( C6 a3 S/ n4 W2 U. [) `2 f
Count1++; //每次中断计数器加1
% R$ d8 k! r' h' B* h0 D Count2++; //每次中断计数器加11 W! J$ \3 b: z" i9 F$ w
if(Count1>=12) //如果计数器1超过12
3 z6 K" y! j2 v {
1 ~' _7 r0 B# \* F. d time_led_sansuo=!time_led_sansuo;
) g$ u t0 ?( l Count1=0;, Z0 k* k" ?# J) r
}
% L' G+ j! P" q. \# u; @$ @8 S if(time_led_sansuo) } M, [- r( i2 z4 ?8 L7 a" `
led_dis &= 0xbf;
3 ~7 K0 e8 \0 d/ m& ?( G" ^ else% O- D3 H) t _% v
led_dis |= 0x40;
8 M, ` k5 |1 _" [( ^1 x* |# A if(Count2>=100) //如果计数器2超过100, U$ R: }! z% _% R9 C0 ?
{
6 m/ i# L3 ? s: r: m time_run--;/ L; w4 m% P" B$ {
if(time_run==0)+ M3 c' U* q1 V& B: ?
{
( i0 W D. P; f' b ET0=0; //关定时器00 \* ?6 D6 w2 z/ i, L
Time_on=2;
# r6 L8 {: a2 u3 s0 k( A" d. ^ EX0=1; //开外部0中断;
6 ^- D$ @( C7 p }
) Z) Q$ c4 K" o: k1 O7 E1 W$ J Count2=0; //计数器清零
! _% x+ Z( M2 d( Z# ~2 M }
% C4 G: w/ ^! e, S6 o6 [& X* x
7 r7 N7 m: Q1 x3 M. X5 F$ Z TH0=0x28; //重置定时初值5 f# ]- W/ f: }$ U) G
TL0=0x4b;( c4 ?5 }/ m4 O% W& Q: X/ R
} |