其实所有的定时器都是用计数器做的,PLC也是由单片机构成的。看看单片机的定时程序就明白了
: N9 ]+ J6 r4 c /****************************中断子程序_定时***************************************/0 V% @0 v5 L# {* w
void Timer0() interrupt 1
A- ~2 w1 U4 @ {
3 i+ t& p7 ?" i, m5 D% p static Count1=0,Count2=0; //静态变量计数器1
( @- U9 h# D: b; F+ P Count1++; //每次中断计数器加1
3 K8 i! p+ L3 ~7 P0 I/ y. S9 e$ e' c Count2++; //每次中断计数器加1
2 J" `7 d8 F; f8 s if(Count1>=12) //如果计数器1超过12
# f- t9 @" J- v& W {
/ Q: _5 ~7 g* n' D8 D' ]' r1 r1 Q time_led_sansuo=!time_led_sansuo;! i! K- l5 N' P) |$ _3 v; r1 b2 P
Count1=0;
5 D6 l8 n6 Q, }- _1 i% S! `# ^% M }
) K/ I1 R, X& }. J if(time_led_sansuo); ]3 z- b$ M8 L
led_dis &= 0xbf;
3 H" S+ n( X* A3 B7 }; ` else
9 t' j k7 J* Y* X8 D- a% y q9 x led_dis |= 0x40; 9 H h. U# M. Y$ P$ ^7 T/ q
if(Count2>=100) //如果计数器2超过100$ ^5 v8 C; S8 |1 [4 b0 k
{
1 ~/ c" K/ I- f; _+ q. l; L time_run--;
4 q8 _1 h# B4 V if(time_run==0)" J; M& c2 K. M. e5 B4 C& U2 ^
{* x2 ?% E6 k6 |
ET0=0; //关定时器06 y. v) [2 H0 ] n' j% e
Time_on=2;
5 @+ n& G* L4 H Z* O EX0=1; //开外部0中断;* ^" X6 N5 P) j; L
}+ D5 L4 V' c* {- H0 U2 }# |& N8 H: ? Y
Count2=0; //计数器清零 d" t- `( B5 ^* w
}
# S6 H5 N3 B9 p3 ]4 e) E: H; B
8 B# B# W# \! g; D TH0=0x28; //重置定时初值0 \3 y7 n* e7 t1 h0 Q# r, z& j" V
TL0=0x4b;: [ ^& s- F4 H, p0 \9 Q/ K5 O
} |