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

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

您需要 登录 才可以下载或查看,没有帐号?注册

x
用定时器控制一个灯亮5S 灭5S) s+ k0 u5 i+ p0 I
2 O; B) ~4 M; [' c
& @: p' h" g8 S1 D# r
* |: M5 q; U: k: [6 y! L

9 P. ?' o1 [7 E* M; o. v
#include "reg52.h"                 //此文件中定义了单片机的一些特殊功能寄存器7 [" f4 C8 ]8 N" {
typedef unsigned int u16;          //对数据类型进行声明定义
9 M6 V: b) t& _typedef unsigned char u8;
1 f5 @$ f3 Q7 Q6 ]' x
: j* z+ p7 Y! nsbit k1=P3^1;         //定义P31口是k1( F4 ^% O: \0 {$ F& o
bit flag = 0;7 e& p9 U3 d3 g
sbit led = P2;void Timer0Init()* t' y) _7 ]+ Z3 j
{
) Q1 n2 L* L9 U/ q# H9 b        TMOD|=0X01;//选择为定时器0模式,工作方式1,仅用TR0打开启动。
/ F1 y% C  |+ z; {$ P# Z4 P# r; f        TH0=0XFC;        //给定时器赋初值,定时1ms6 _: E* @% V6 J$ V: q" X, B
        TL0=0X18;        ( Q* N  M4 Y4 o. g3 m& Y# R2 x" r
        ET0=1;//打开定时器0中断允许5 c) I5 Z! J# m( }- h0 b
        EA=1;//打开总中断
6 z0 I+ I$ d) e1 Y        TR0=1;//打开定时器                          y7 z1 n8 p6 I- {- S# }1 S6 X( }
}
1 _/ l- {- G; |" y( Q) Ovoid delay(u16 i)# g) G) F5 N8 u8 D+ A; E0 B; X" y
{1 |- u( L3 C1 s0 H: X2 ?$ L
        while(i--);        
. V4 a& v+ m2 c. k+ V}
8 h# f1 T, N* c- l; F& bvoid keypros()  I: O2 ^7 V, r0 o8 G& o; y. b
{
5 g/ I. [. B; H9 m4 j        if(k1==0)                  //检测按键K1是否按下
8 s, V6 ]- I' K" z# D& s$ r; I        {        
: W* t3 U# k7 s- z$ h: D: r+ w                delay(1000);   //消除抖动 一般大约10ms3 D9 G( D2 k2 c5 [1 x  `- i
                if(k1==0)         //再次判断按键是否按下
8 z2 Z$ G- R+ H3 A' b" M                {& u. ?0 w) ]* b
                        led = 0;
1 {* H# Z! N( k$ [0 w/ ~- Q5 e                }
6 l3 b2 a; V0 g  ?/ e; P                while(!k1);         //检测按键是否松开* n0 i( U$ L; C3 v
        }                ( s+ q0 C  U4 o: j6 w, W: q
}void main()
) D9 H8 `2 g* D; l8 t{        
+ B8 |. d+ m% _- N9 h5 w    P2=0xff;7 e! y% x2 V+ g- B, x3 p
        Timer0Init();  //定时器0初始化
# F) a6 W! a. J9 f8 v        while(1)7 J8 d9 z  h" D. D3 h, u: I
        {
+ o1 D2 Z; Z- F5 `$ _           keypros();$ T5 B% I" r2 P% E! R3 @0 h
        }               
' ~: H$ l9 x( t! G5 o6 v( C}( ]+ E4 M" v6 u, }$ |
void Timer0() interrupt 1
  T( z" l' v, {- Q7 x" u6 O: [{! ~; c. T7 B: c+ h' T+ {0 y! L
        static u16 i;
) O# p4 @# ]. v8 |        TH0=0XFC;        //给定时器赋初值,定时1ms
7 I4 u7 a" D- p' t8 K- E        TL0=0X18;
8 G. j2 n$ w9 a  Y4 [        if(led == 0)' ?/ h8 P; z7 U% R) O9 k1 R
        {
& ~6 s. j6 Y$ ]- I( ?                i++;! y8 ^" O! X' r8 U1 _
                if(i==5000)
) _, u- G: O0 [1 d) k                {) \: z/ D* h) i+ w
                        i=0;
! ]2 d0 v, {. G" y                        led = 1;                        
2 h, h8 J0 \8 V- Z; i9 e                }
- A  y) J* V5 z& j        }               
, B& ]$ U3 c( _& \; Y( Q4 Y6 b4 q$ Z& s}

! V8 K: o( ?8 y. P8 b
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-7-19 14:39 , Processed in 0.109375 second(s), 23 queries , Gzip On.

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

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

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