其实所有的定时器都是用计数器做的,PLC也是由单片机构成的。看看单片机的定时程序就明白了
2 f8 a, n6 H8 n+ r0 i' H$ c E /****************************中断子程序_定时***************************************/* ^7 u! K' e u9 y6 X5 k: a
void Timer0() interrupt 1
6 C4 t& N3 G: E- K+ t0 w. @& S7 H {2 }# p2 A% G0 A8 T8 n0 w
static Count1=0,Count2=0; //静态变量计数器1
3 A3 t# d+ U: r8 O' m# j( j Count1++; //每次中断计数器加1
& N0 W* z3 I: k: g7 g% [ Count2++; //每次中断计数器加17 A& Y% O% r* i2 p6 H( Z( A6 s
if(Count1>=12) //如果计数器1超过12! a9 T2 O4 ` t( v
{- n# C, K% x6 Q- N/ {; d/ N! {) _6 Q
time_led_sansuo=!time_led_sansuo;
6 q( y, q& R. F! C Count1=0;/ |; v; Z1 t& y8 t L
}3 r8 X% D. u& a4 x8 h
if(time_led_sansuo)1 D' s( F# X. S2 M9 w
led_dis &= 0xbf;
8 Z! S/ H7 {+ F9 k6 B else' o9 d$ T& K" w: g* Q/ ^ [
led_dis |= 0x40; # n! r/ z( W( Q; \5 G: p! j
if(Count2>=100) //如果计数器2超过1001 x+ I5 c( w$ d# k
{
8 L8 t) S! ^% n% Q time_run--;
- o! M( x8 U- x' N$ E; X if(time_run==0)
5 h# v7 Q+ i3 N {, _' j( @. ^" V$ A
ET0=0; //关定时器0+ w5 t" \6 D8 l* j
Time_on=2;, V% ^3 \" R6 P% E& l: E6 ]
EX0=1; //开外部0中断;
8 f: ~; @9 {' [6 P& X. c }6 @) ]2 O( G- U6 d+ [0 c
Count2=0; //计数器清零( N' o- {3 V2 G( V% |9 ^
}0 x6 M' j0 V% u3 R
- j: w0 z6 R* W, m TH0=0x28; //重置定时初值
6 |2 K" W3 V8 m6 Z TL0=0x4b;9 T& |' Q, C7 v2 g8 N4 Q
} |