其实所有的定时器都是用计数器做的,PLC也是由单片机构成的。看看单片机的定时程序就明白了5 i X l2 V5 c9 y6 Z0 p$ L d3 E
/****************************中断子程序_定时***************************************/( j( R h6 B8 m9 @* h9 y) k4 g
void Timer0() interrupt 1
, _6 I$ M, ?+ d1 j1 g; p6 u {: j9 c1 W$ U& P& I: `. b
static Count1=0,Count2=0; //静态变量计数器1
3 G+ w- ~5 z; B& P4 c, c Count1++; //每次中断计数器加1
, u4 W& P+ B5 O K4 P Count2++; //每次中断计数器加1/ Q0 T1 g, G7 U3 x& f
if(Count1>=12) //如果计数器1超过123 o. R8 [9 Z, X W0 q
{
9 x, z9 ~" R& V time_led_sansuo=!time_led_sansuo;
* T6 x% c M- E" O- K+ N Count1=0;5 F1 {% v/ B4 W) i8 F
}; B5 W( y3 ]/ m: H3 H% v
if(time_led_sansuo)4 |- l% J# x% C$ J& G6 n) H$ B: Q
led_dis &= 0xbf;* l* x4 E1 H" [. z [0 Q
else+ ?) s: i4 m7 d/ `" v
led_dis |= 0x40; % J& _9 b1 e% U0 G
if(Count2>=100) //如果计数器2超过1003 ^& c; A" m1 G0 V
{ 8 ]. z; ]/ g. y6 T/ X
time_run--;, v. K3 O$ w. a( U
if(time_run==0)
: |1 |/ d* r; g: ~) \9 _/ p1 _, v {* q2 |9 q ~ _# q5 \
ET0=0; //关定时器0
& d7 L$ N8 {1 J$ ]& O8 H: a+ q Time_on=2;
0 q6 L. U/ n( u- b EX0=1; //开外部0中断;
4 {: e" }5 n7 @+ `# S# V }
! k& M/ M) c4 S& }3 r Count2=0; //计数器清零1 B) m' F$ R' y8 @* N& @
}% M" b( c9 |' H
: m& D+ M% p! M M
TH0=0x28; //重置定时初值5 b2 I' u6 g, F; n1 h' n' q
TL0=0x4b;8 n, F) ?4 b1 P4 h" K
} |