|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
用定时器控制一个灯亮5S 灭5S
- `$ h& A) q. i& M' q- t: D9 ~9 R6 `5 `0 m$ r9 `$ h! L* _. Y7 f3 I" I
( Z! |6 ?* J2 Z) P
* N7 g2 K* }, L4 l# t
, f4 f1 N- [, I- M% N
#include "reg52.h" //此文件中定义了单片机的一些特殊功能寄存器( ]. d( {1 o3 z: `% L9 n$ Z
typedef unsigned int u16; //对数据类型进行声明定义
1 e& L" k2 M" ` j$ I( H- R- j5 btypedef unsigned char u8;, c" K/ e2 G# v7 p
; b( m; \# f; h. M
sbit k1=P3^1; //定义P31口是k1; B* g4 Z. D4 |( d; `+ g; A5 I
bit flag = 0; R/ t# M, P0 E% J O2 z* b3 n/ J' e' m
sbit led = P2;void Timer0Init()5 [/ q2 s! W! P/ T
{" o# P* X0 ]/ B, i' j" s
TMOD|=0X01;//选择为定时器0模式,工作方式1,仅用TR0打开启动。+ ]$ @0 Z( ` O9 p
TH0=0XFC; //给定时器赋初值,定时1ms
! j* O* [4 j& d$ z5 C3 Q TL0=0X18;
7 [7 v% s7 g0 M. w ET0=1;//打开定时器0中断允许
8 \& ~# K% I, L a" p& r EA=1;//打开总中断
+ M7 s7 p1 {0 e9 {! G TR0=1;//打开定时器 ( o( P8 b# U, p1 j. @# U/ p
}
! X2 m* B" f: }7 p+ P; ~$ Mvoid delay(u16 i)1 L$ ]3 A, p( @1 M/ [* ]
{
2 u0 q0 w5 T: w' Q: \& Q/ I5 G while(i--); s8 W9 ]) w$ }& i8 \
}. X2 r& T+ f3 L
void keypros()% B1 e5 {4 F, f0 I7 V/ F
{
6 P8 ]8 k# K: A! A* e5 A if(k1==0) //检测按键K1是否按下) w+ m" m9 ~5 E, i1 j
{ # }- X" B# X# Q9 G$ [
delay(1000); //消除抖动 一般大约10ms* w3 q. {+ ?0 |) u. J
if(k1==0) //再次判断按键是否按下: h# o/ R; r$ m, b
{8 A7 X4 f) w: g+ i5 R% N# [& F
led = 0;
" m: r" ?! ~% J& { }
* U& |8 S& e2 Q$ ?* X1 A while(!k1); //检测按键是否松开' C. D( x4 n7 y( G, o6 B7 o
} : I# B% t+ G, Z# J1 l c
}void main()
. {! ~9 ~9 }* P0 h7 X" E7 Z{
! Q4 {# Q- Z3 f+ C; x6 k% h0 C. Y P2=0xff;
2 m9 `$ t( D0 B C Timer0Init(); //定时器0初始化" N4 h) p' ~9 ^ I# G
while(1)/ D, x2 K4 d, F3 w
{
2 Q4 [! c& b1 F3 l9 u$ s/ v7 b: s keypros();* `6 x: y( `- r% e# U* T
}
9 y( u% H0 R P8 X! y5 \( T) n}
" {( M2 s; h% a& H/ x) A% X" }. ^% l% jvoid Timer0() interrupt 1
3 ^1 D( }* y% O{+ Y) b' K' r8 Y- ?: \7 s) f
static u16 i;
. v1 A" l4 B3 E' O( L TH0=0XFC; //给定时器赋初值,定时1ms
/ ]; i3 d1 m$ P9 U0 q! | TL0=0X18;
( s- D& I3 x$ O# N if(led == 0)
: ?4 ^# X R% s6 { e {
- S% b0 r! I; t+ x+ Y6 l. e+ W i++;0 t6 O3 F/ V$ l2 q5 w6 X1 E" s$ y
if(i==5000)
* k& _6 i0 K% _5 u {5 }( P# I& h$ o: c; ^
i=0;# m1 d, o- V7 \1 Y0 b% N& @' z5 S
led = 1;
0 ^0 `0 |! c4 S2 A# G" S4 |. d }- k2 T3 Y; B$ N$ I7 D* _) [
}
4 I1 I2 P6 `5 |8 A/ Q} |
# k: ?7 x$ q7 P' a6 C: b0 I* _7 s |
|