|
给个参考程序:
% B W9 Z4 q- v s#include
5 m$ D6 ^9 I0 J6 v6 p: i#if(1)
- ?4 W' K S9 f( N# F( o& f2 F" V8 d- j- J5 A9 }8 P2 \/ C
int count = 0;# G7 w8 } G) |) S5 ]) H; k: A
# m# D$ z: b& Z+ V***it output = P1^0;
) f1 Y7 |* O) s' o; ?" O4 q5 d5 `
- V+ P# c1 j4 R, f: m! g# A) K* e* n7 w! @( d0 b9 A
void initialize()4 l1 N, S8 C( j& \
{
. N& U5 X1 i) [ TMOD|=0X02;# R9 J* h8 d* j6 G% H3 N
TH0=0x9c;" h$ M' B+ A `) \" e& e
TL0=0x9c;
& i7 l; I* C4 R. p- Z TR0=1;//也可以到用时才启动$ {3 }+ W' a" e+ F- S- y
ET0=1; 1 ]+ z" t: `- k- P1 [# G1 k$ S1 ^
. e0 F9 j/ |# u9 r# I7 n) p* S EA = 1;
4 S9 M9 r7 L' a% c$ M( `$ o/ D 2 t' T# J, p. p5 b
/*ET0 = 1;//定时器中断打开) b9 T% [5 c/ }& W4 s7 X3 v
TMOD = 0x01;//定时器工作方式 01-16位
5 l( z& N8 J8 Z; n TR0 = 1;//启动定时器0
9 p {3 B6 `2 @3 `! N) f TH0 = 0xFF;//0xFF;//
* y: _4 N2 h7 H$ X i6 E TL0 = 0xff;//0x9C 0xAA;//定时器初值(100us)*/' C8 b( c, t2 ^8 X1 y
}. q4 k+ {7 P, U
' i% }& }8 I3 q- h B7 e; c
, [: P& J, C/ v! w( a1 Z$ t
int main (void)& l/ @1 R! K q, X* o! F8 C) Y6 X6 H
{0 I9 o' a+ z3 E$ |
initialize();
4 R' k9 ^4 R" w; ~8 J, l5 @# I4 |5 T; F& q5 _0 ?" k/ J0 x; _, s
while(1) Y7 h: J2 Y6 k9 r$ L
{4 u; e2 t- O$ G& {+ ]" T" z S
if(count <= 100)
5 F( s x5 V9 y1 q2 ` {
- ?: i/ ^! n! V. q$ Z if(count <= 50)3 P7 Z. n$ }' l; [) ^# ^8 N1 [7 C( g- {
output = 1;
2 N; M8 X3 M1 A/ m else output = 0;' ]& J' v/ F t4 v( K
}
* {3 P" L0 n8 d' q/ O8 |) c else count = 0;
3 M/ d: F+ E1 ?$ ^" l% i' D$ h; F
0 e5 L9 c$ Q, E5 }' S }/ I. j6 m1 [. Q7 K% q
}
) D3 k" k! M/ C* x# M ]& G; \+ g
C; H% l. b% t* d1 x( D1 Z8 ^void timer0() interrupt 16 O3 b/ e% A8 x
{
9 I4 f8 T4 Z& v% g4 x count++;//计数4 e. H# Z: F; y8 E4 Q% ?
//TH0 = 0xFF;//0xFF;//2 J3 b; S, K7 r1 F
//TL0 = 0x9C;//0xAA;//重置定时器初值(100us)
( z a) g/ S1 C- u7 R}9 p( {5 G- x& W: r* k9 E
#endif |
|