单片机573+数码管+按钮 实现60秒的定时器

知识:

IE寄存器

TCON寄存器

TMOD 寄存器

/*****************

2个定时中断,2个按钮中断

*******************/

#include    <reg51.h>
#define    SEG        P2      //数码管 断码口
#define    SCANP    P1    //数码管 com扫描口
sbit  OC = P0^;      //定义573锁存器使能口,我是用的573驱动7段数码管
sbit    PB0=P3^;      //按钮0
sbit    PB1=P3^;      //按钮1     

/********************

第一个定时器

********************/
#define  count_M1 50000 // 0.05s MODE 1 一个机器周期1us 这里12MHZ 机器周期=1/(12/12) 定时时间=定时个数*机器周期=50000*1us =0.05s 

#define  TH_M1  (65536-count_M1)/256  //MODE 1 高4位
#define  TL_M1  (65536-count_M1)%256  //MODE 1 低4位

;                        /***定义中断次数,第一个中断***/
/**********************

第2个定时器

**********************/
#define  count_M2   250                  //MODE 2  250*1us = 0.25s
#define  TH_M2  (256-count_M2)          //方式2 高4位
#define  TL_M2  (256-count_M2)          //方式1 低4位

;                       /***定义中断次数 ,第2个中断***/

]={    0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7c,0x07,0x7f,0x67 };    // 共阴极
]={ 0x3f,0x3f }; // 数码管开始显示 0 0

;        

;        

void delay(void);          

main()
{
    OC = ;         //锁存置0 ,点亮数码管
    IE=0x8f;        // 1000 1111 1000开启总中断  1111开启4个中断
    TCON=0x00;        //低电平0触发
    TMOD=0x21;        // 0010 0001  timer1采用方式2  timer0采用方式1
    TH0=TH_M1;      //T0高4位  MODE 1
    TL0=TL_M1;      //T0低4位  MODE 1
    TR0=;            //不启动 T0
    TH1=TH_M2;      //设置T1自动加载值,计数值  MODE2
    TL1=TL_M2;        //    T1 MODE2
    TR1=;            //启动T1
    P3 =0xff;        //设置按钮输入
    );
}
 /**************

 中断0     计算并显示秒数

 ***************/

{
    TH0=TH_M1;
    TL0=TL_M1;
    )           //中断计数20次  0.05*20 = 1S
    {
        count_T0=;
        seconds++;
        )
        seconds=;
    }
    disp[]=TAB[seconds/];   //十位
    disp[]=TAB[seconds%];   //个位
}
/***********************

中断1      扫描

************************/ 

{    )  //0.25us * 32 ==8ms
    {
        count_T1=;
        )  //不能超过十位
        scan=;
        SEG=0xff;
        SCANP=~scan;
        SEG=disp[scan-];
    }
}                             

/************************

按钮 0 中断      码表开始/暂停

*************************/

{
    TR0=~TR0;    //启动/暂停定时器
    );
    delay();    //延时去抖动
}
 /************************

    中断1 按钮 1  复位

 ************************/

{
    );
    delay();
    seconds=;
    disp[]=disp[]=0xc0;
}                             

void delay(void)        //延时去抖动
{
    int i;
    ;i<;i++); // 2400 * 8 =  19200us = 20ms
}                             

单片机实现60s定时器的更多相关文章

  1. C51单片机_day_01(定时器和中断系统)

                c51单片机 51单片机是控制电路系统的开关,当然芯片就是51芯片,现在随着科技的发展,也是出了很多,功能更多,更全的芯片. 51是用c语言做为程序编程的语言 ——我对基本基础 ...

  2. STM32F103单片机学习—— 通用定时器

    版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/fengshuiyue/article/details/79150724 本篇重点记录的是STM32F ...

  3. 【单片机】CH32V103C8T6定时器3程序实验

    代码功能:每隔1毫秒进入一次定时器中断. 每隔1秒串口打印一次数据. time.c #include "time.h" #include "ch32v10x.h" ...

  4. 26.单片机中利用定时器中断,在主流程while(1){}中设置每隔精确时间计量

    { CountMilliseconds++;//只负责自加,加到最大又重新从0开始 } u16 setDelay(u16 t) { ); } u8 checkDelay (u16 t)//返回非零表示 ...

  5. MCS-51单片机的定时器/计数器概念

    一.MCS-51单片机的定时器/计数器概念 单片机中,脉冲计数与时间之间的关系十分密切,每输入一个脉冲,计数器的值就会自动累加1,而花费的时间恰好是1微秒;只要相邻两个计数脉冲之间的时间间隔相等,则计 ...

  6. ATmega328P定时器详解

    写这篇文章,纯粹是想为博客拉点点击量.在博客园,游客访问好像是不计入阅读量的,而作为一个十八线博主,注册用户的访问应该以搜索引擎为主,博客园首页为次,个位数的粉丝就别谈了. 所以,希望各位从搜索引擎点 ...

  7. STM32定时器学习---基本定时器

    STM32F1系列的产品,除了互联网产品外,工作8个,3种定时器,其中一种就是基本定时器.那么STM32单片机的基本定时器如何操作以及编程呢? 下面我们就来详细的了解一下 STM32F1系列的产品,除 ...

  8. STC12C5A60S2 双串口通信

    STC12C5A60S2单片机是一款功能比较强大的单片机,它拥有两个全双工串行通信接口,串口1的功能及操作与传统51单片机串行口相同:特殊的是STC12C5A60S2单片机内部有一个独立波特率发生器, ...

  9. MODBUS-寄存器与功能码学习

    分类 简称 起始地址 结束地址 能够使用的功能码 输出逻辑线圈/(可读写位)/(DI/O)(如继电器开关控制) 0x 00000 09999 0x01读一组逻辑线圈 0x05写单个线圈 0x0f写多个 ...

随机推荐

  1. GJM :Sql 各种语句 以及函数 [转载]

    版权声明:本文原创发表于 [请点击连接前往] ,未经作者同意必须保留此段声明!如有侵权请联系我删帖处理! 1.更改数据库的名称 2.表中有数据的情况下再添加列.删除列 3.在SQLServer 中各种 ...

  2. ASP.NET MVC Model绑定的简单应用

    Model绑定是 MVC 框架根据 HTTP 请求数据创建 .NET 对象的一个过程. 一.简单类型 1.单一值

  3. (2)RGB-D SLAM系列- 工具篇(依赖库及编译)

    做了个SLAM的小视频,有兴趣的朋友可以看下 https://youtu.be/z5wDzMZF10Q 1)Library depended 一个完整的SLAM系统包括,数据流获取,数据读取,特征提取 ...

  4. BeforeProperties/AfterProperties in Event Receivers

    Sharepoint List List BeforeProperties AfterProperties properties.ListItem ItemAdding No Value No Val ...

  5. javascript模式 (3)——工厂模式和装饰模式

    上节我们讲解了单例模式,这节我们将继续讲解工厂模式和迭代器模式 工厂模式: 工厂模式的目的是为了方便的创建对象(可以在不知道构造的情况下),通过静态方法来实现,在java或c#等静态编译语言中需要通过 ...

  6. Exif.js 读取图像的元数据

    Exif.js 提供了 JavaScript 读取图像的原始数据的功能扩展,例如:拍照方向.相机设备型号.拍摄时间.ISO 感光度.GPS 地理位置等数据. 注意事项: EXIF 数据主要来自拍摄的照 ...

  7. C#如何实现一个简单的流程图设计器

    以前看过不少Window Form开发的流程图设计器,支持节点拖放,非常方便即可设计出很美观的流程图,作为一个程序员,对其内部实现原理一直很好奇,感叹有朝一日自己如果可以开发一款类似的软件那是多么让人 ...

  8. Click Magick – 下一代点击跟踪和链接管理

    Click Magick 是新一代的广告跟踪和链接管理系统,让每一个点击都能给你带去更多的利润.它是专门设计来跟踪所有类型的点击计费广告,包括从谷歌,必应和 Facebook 的 PPC 广告,就好像 ...

  9. 小白详细讲解快速幂--杭电oj2035-A^B

    Problem Description 求A^B的最后三位数表示的整数.说明:A^B的含义是“A的B次方”  Input 输入数据包含多个测试实例,每个实例占一行,由两个正整数A和B组成(1<= ...

  10. JavaScript学习笔记-实现枚举类型,扑克牌应用

    //实现枚举类型,扑克牌应用 function creatEnum(p){     //构造函数     var Enumeration = function(){throw 'can not Ins ...