找回密码
 注册
关于网站域名变更的通知
查看: 539|回复: 2
打印 上一主题 下一主题

用定时器控制一个灯亮5S 灭5S

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2019-1-11 13:47 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

推荐内容上一条 /1 下一条

EDA365公众号

关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

GMT+8, 2025-6-28 09:42 , Processed in 0.078125 second(s), 23 queries , Gzip On.

深圳市墨知创新科技有限公司

地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

快速回复 返回顶部 返回列表