其實所有的定時器都是用計數器做的,PLC也是由單片機構成的。看看單片機的定時程序就明白了1 {9 V7 ]0 L. ]) J* g: Z9 J# ?
/****************************中斷子程序_定時***************************************/ [9 x4 V* ] O4 @8 j
void Timer0() interrupt 1
# O2 `* q+ U1 D. E; v! k! ?; c0 l# N {. B3 `, |* r, ~, _! @# t$ ?" C
static Count1=0,Count2=0; //靜態變量計數器1
7 T8 |9 ? V' l0 i" u Count1++; //每次中斷計數器加1* V0 ` @$ t" A6 [5 |* s, {& o
Count2++; //每次中斷計數器加1
^5 e; m! r4 r" K( _$ t8 U if(Count1>=12) //如果計數器1超過126 f7 n- A# G- v* E
{
: M) h ?# W1 ]: Z: n- ?7 T time_led_sansuo=!time_led_sansuo;: P0 H- I( t) k3 m9 j
Count1=0;3 M0 R5 n! A* T) G: Y7 O* _
}( G5 d! K$ P( |$ y' _0 ]4 Y" {
if(time_led_sansuo)" { @* p* T0 u
led_dis &= 0xbf;
6 C# q1 }6 F; o: x. l" C& x2 _ else
* n9 q a9 x& A& k; @( a led_dis |= 0x40; 3 @ v7 B& N3 Y+ h5 \- c
if(Count2>=100) //如果計數器2超過100
- }9 w. i+ P) q; f8 _ ? {
2 k$ H- o+ p: W; {/ a+ N) F2 r time_run--;
& _1 m; b+ c: x2 w2 D# z# k if(time_run==0)7 ]+ K* \) \ v/ C- j4 h
{
( |; y( Z* n3 Z( {4 ~! O: K ET0=0; //關定時器0) {7 L5 ]( s/ Q- v; p: A& G/ j
Time_on=2;
5 F) m' a( R' C8 D; o3 g EX0=1; //開外部0中斷;. m& `0 d3 z2 {' `: q2 g
}4 r2 x3 X( a+ {7 \
Count2=0; //計數器清零0 j) g S8 U/ Y5 W' p- B* r
}' ^" R7 ?" K9 h- O: g
+ J9 h; N; b" W5 g) h8 p
TH0=0x28; //重置定時初值+ Z) h/ v2 A+ x
TL0=0x4b;
& y" ^% L8 f0 e% A% q8 e3 Z } |