|
其實(shí)所有的定時(shí)器都是用計(jì)數(shù)器做的,PLC也是由單片機(jī)構(gòu)成的。看看單片機(jī)的定時(shí)程序就明白了
" h* v5 v: F, c3 Z+ Q /****************************中斷子程序_定時(shí)***************************************/6 C+ x7 r8 C7 ?# a& x5 C5 D, w# E
void Timer0() interrupt 1: C$ q, w8 w# U6 g: \
{7 p! A& m0 q, X& Q! e
static Count1=0,Count2=0; //靜態(tài)變量計(jì)數(shù)器1
. K% N3 K, j* i Count1++; //每次中斷計(jì)數(shù)器加1
* d' J: Z2 w4 Y# `$ `+ t Count2++; //每次中斷計(jì)數(shù)器加1
3 q! Q1 E! X! d2 l if(Count1>=12) //如果計(jì)數(shù)器1超過(guò)12% k' V4 ?- w4 ~; \0 J/ l& K
{
h! m0 t3 g' V1 e, }# K time_led_sansuo=!time_led_sansuo;: V( |4 l% o5 g: d4 x* B/ }
Count1=0;
! Y8 O0 T( L9 Q) X! S4 M }1 J' P5 I1 D" p2 o
if(time_led_sansuo)' \5 G: C f3 p7 M
led_dis &= 0xbf;9 O, H% Z9 G' ^+ Y$ d
else* a% |: E3 Q2 ^6 f7 u
led_dis |= 0x40; 8 m0 ?' ?! g% [& V* V1 F
if(Count2>=100) //如果計(jì)數(shù)器2超過(guò)100, P: X) S. u) C6 r$ c3 X
{
5 s8 _9 X1 a2 z8 Z# e* `1 ?+ r time_run--;3 R$ q( w2 ]0 A8 \- T8 J" z
if(time_run==0)
7 E# `& X6 s- q& | {
7 i7 W$ ?9 f$ ]9 K, S8 k6 V ET0=0; //關(guān)定時(shí)器0' f' o* y- V+ P: ]/ `! g' ^9 ]4 s
Time_on=2;" m7 O4 f2 ]/ ~1 H; |, }/ e( l& z
EX0=1; //開(kāi)外部0中斷;/ }. s7 c$ c& M( l% E
}
) ~5 W* P6 m5 H) S8 ], x4 h Count2=0; //計(jì)數(shù)器清零
8 O, e/ _) C* d1 e4 r j4 I1 M }
& @" z: ?4 Q+ _! @0 t
1 K3 c0 C) U$ C: [2 L TH0=0x28; //重置定時(shí)初值 Z0 i1 x5 f6 \. y
TL0=0x4b;2 ?" o7 i3 |1 p( E
} |
|