其实所有的定时器都是用计数器做的,PLC也是由单片机构成的。看看单片机的定时程序就明白了' R6 Y* W$ a* ^# Z5 n. k6 j* m
/****************************中断子程序_定时***************************************/" l1 T$ s1 s! [6 d& V" X+ P8 E
void Timer0() interrupt 14 P+ `: y1 G) [ O1 U
{
& c* P" B& M, {/ h+ A static Count1=0,Count2=0; //静态变量计数器15 U8 z+ M% d9 d
Count1++; //每次中断计数器加1
V2 h) }0 K/ t+ [) ^ Count2++; //每次中断计数器加15 m9 C" M2 | D6 H5 }6 \5 P
if(Count1>=12) //如果计数器1超过12
! v2 F& u& S" Y5 R6 r6 y$ g {
( G- k+ q8 u/ G- B4 W/ d; l( h time_led_sansuo=!time_led_sansuo;
! o o# P4 Y2 D; m Count1=0;
/ U9 J9 V' x! F }
1 z) u7 a" h, E& M& @" b5 @ if(time_led_sansuo)
" E3 Y. p, A2 y3 [ led_dis &= 0xbf;
. m! t* `8 ^+ N* S% ?- L, r8 F3 K9 [ else
5 W6 I% l) W; n* J9 k led_dis |= 0x40;
7 b' g( @# o% d( f if(Count2>=100) //如果计数器2超过100; k9 U* d/ y! R C1 A: ]
{
- Z) n% {4 @5 _+ R time_run--;% x$ S8 ]- L% d, y$ J
if(time_run==0)
6 Z) |, R' ~" c# b! ^* Y {9 @$ J2 n6 k# Q1 ]8 @; h1 n
ET0=0; //关定时器01 J* |( M) i. B' G# ] s0 \! ^
Time_on=2;: d$ u& v4 e) t2 {1 I S1 A
EX0=1; //开外部0中断;
+ ^# N( B' y' c0 x7 w }
& N1 j! q8 j- u Count2=0; //计数器清零
2 P+ j O- i0 | }1 k* `2 z3 `8 N: p) S
* x% I b8 b/ {
TH0=0x28; //重置定时初值5 U/ I* v$ e' P! v8 R
TL0=0x4b;
2 Q/ U! L/ g6 j" f } |