单片机实现60s定时器

发布者:ZenMaster123最新更新时间:2016-12-16 来源: eefocus关键字:单片机  定时器 手机看文章 扫描二维码
随时随地手机看文章

知识:

IE寄存器

 

 

TCON寄存器

 

 

TMOD 寄存器

 

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


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


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


#include         

#define    SEG        P2      //数码管 断码口 

#define    SCANP    P1    //数码管 com扫描口

sbit  OC = P0^0;      //定义573锁存器使能口,我是用的573驱动7段数码管

sbit    PB0=P3^2;      //按钮0

sbit    PB1=P3^3;      //按钮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位


int count_T0=0;                        /***定义中断次数,第一个中断***/

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


第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位


char count_T1=0;                       /***定义中断次数 ,第2个中断***/

 

char code TAB[10]={    0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7c,0x07,0x7f,0x67 };    // 共阴极

char disp[2]={ 0x3f,0x3f }; // 数码管开始显示 0 0

 

char seconds=0;        

 

char scan=0;        


void delay(void);          

 

main()                     

{    

    OC = 0;         //锁存置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=0;            //不启动 T0     

    TH1=TH_M2;      //设置T1自动加载值,计数值  MODE2

    TL1=TL_M2;        //    T1 MODE2

    TR1=1;            //启动T1

    P3 =0xff;        //设置按钮输入

    while(1);     

}                             

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


 中断0     计算并显示秒数


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

void T0_1s(void) interrupt 1 

{    

    TH0=TH_M1;     

    TL0=TL_M1;      

    if (++count_T0==20)           //中断计数20次  0.05*20 = 1S     

    {    

        count_T0=0;             

        seconds++;         

        if (seconds==60)      

        seconds=0;         

    }                         

    disp[1]=TAB[seconds/10];   //十位

    disp[0]=TAB[seconds%10];   //个位

}                             

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


中断1      扫描


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

void T1_8ms(void) interrupt 3     

{    if (++count_T1==32)  //0.25us * 32 ==8ms         

    {    

        count_T1=0;             

        if (++scan==3)  //不能超过十位

        scan=1;     

        SEG=0xff;                 

        SCANP=~scan;             

        SEG=disp[scan-1];     

    }                             

}                             

 

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


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


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

void int0_sw(void) interrupt 0     

{    

    TR0=~TR0;    //启动/暂停定时器                 

    while(PB0==0);                 

    delay();    //延时去抖动         

}                                 

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


    中断1 按钮 1  复位


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

void int1_RST(void) interrupt 2  

{    

    while(PB1==0);             

    delay();         

    seconds=0;                     

    disp[0]=disp[1]=0xc0;           

}                             

 

void delay(void)        //延时去抖动     

{    

    int i;                         

    for(i=0;i<2400;i++); // 2400 * 8 =  19200us = 20ms    

}            



关键字:单片机  定时器 引用地址:单片机实现60s定时器

上一篇:定时器的应用---查询方式---让8个LED灯,左右各4个来回亮
下一篇:573锁存器驱动8段数码管

推荐阅读最新更新时间:2024-03-16 15:25

基于51单片机的超声波测距系统设计
功能: 超声波测距仪,测量距离,用LCD12864显示信息。 lcd_writestr(0,0, 超声波测距仪 ); lcd_writestr(1,0, ******** ); lcd_writestr(2,0, 当前被测距离为: ); lcd_writestr(3,0, 厘米 ); 程序运行图: 原理图: 部分程序: /***************************************************** * 功能:超声波测距 ******************************************************/ #include reg52.h #include
[单片机]
STC12C5A32S2单片机之1602渐入显示
基本框架根据郭天祥Lesson8中的程序来编写,但是渐入显示的时候郭用的指令是write_com(0x18); 可我用的时候就是显示不出来,于是根据1602的说明书,用了另外一个指令write_com(0x07) //当写一个字符,整屏显示左移 程序如下: 可直接运行,已调试OK #include reg51.h sbit LCD_rs=P1^0; sbit LCD_rw=P1^1; sbit LCD_en=P2^5; unsigned char num; unsigned char code table = I Love ZYN ; unsigned char code table1 = 0123
[单片机]
STC12C5A32S2<font color='red'>单片机</font>之1602渐入显示
[单片机框架][bsp层][AT32F415][bsp_tim] tim定时器配置和使用
9 定时器(TIMER) 9.1 通用定时器(TMR2到TMR5) 9.1.1 TMRx简介 通用定时器是一个通过可编程预分频器驱动的 16 位自动装载计数器构成。它适用于多种场合,包括测量输入信号的脉冲长度(输入捕获)或者产生输出波形(输出比较和 PWM) 。 使用定时器预分频器和 RCC 时钟控制器预分频器,脉冲长度和波形周期可以在几个微秒到几个毫秒间调整。 每个定时器都是完全独立的,没有互相共享任何资源。它们可以一起同步操作,参见 9.2.3.15 节。 9.1.2 TMRx主要功能 通用 TMRx(TMR2、TMR3、TMR4 和 TMR5)定时器功能包括: 16位向上、向下、向上/向下自动装载计数器 注意:
[单片机]
[<font color='red'>单片机</font>框架][bsp层][AT32F415][bsp_tim] tim<font color='red'>定时器</font>配置和使用
兆易创新RISC-V内核MCU登场,布局新赛道
8月22日,向来低调的兆易创新(GigaDevice)在北京召开了一场盛大的、主题为“智领全球,芯动未来”的发布会,这次会议的主角是:基于RISC-V内核的32位通用MCU——GD32V系列。新品一经发布,技术微信群便自发开启了讨论模式: “RISC-V 芯片量产了?” “是不是和兆易F103系列引脚兼容啊?底层库兼容吗?” “期待,兆易速度真快!一整套开发环境,还有那么多demo !“ 无疑,越来越受欢迎的 RISC-V 内核及落地产品,成了全场关注的焦点。 为何是 RISC-V? 众所周知, 作为国内首家推出 ARM 系列的32位通用 MCU 产品公司,兆易创新拥有非常全面的产品线,可以满足各种应用需求。据
[单片机]
兆易创新RISC-V内核<font color='red'>MCU</font>登场,布局新赛道
AVR单片机的串口转FSK的通信模块设计
随着信息技术与网络技术的飞速发展,信息交互应用业务给人类生活带来更多的便利,信息终端表现出巨大的市场潜力。但是由于终端用户环境不同,用户信息交互方式可能不同,目前常用的有IP方式、FSK方式以及无线通信方式等。为了能够提高终端市场竞争力,减少系统开发成本投入,通信模块与终端程序独立设计是较为理想的解决方案。本文采用ATmega48芯片及CMX865芯片实现FSK通信模块,基于此模块,用户与业务平台之间进行FSK信息交互,相对于终端来说就是简单的串口通信。 1 ATmega48介绍 ATmega48是基于AVR增强型RISC(精简指令集)结构的高性能、低功耗的8位CMOS微控制器。微控制器具有可控制的上电复位和可编程的掉电检测
[单片机]
AVR<font color='red'>单片机</font>的串口转FSK的通信模块设计
基于AT89C51和DS18B20的最简温度测量系统
l引 言 温度的测量和控制在激光器、光纤光栅的使用及其他的工农业生产和科学研究中应用广泛。温度检测的传统方法是使用诸如热电偶、热电阻、半导体PN结之类的模拟温度传感器。信号经取样、放大后通过模数转换,再交自单片机处理。被测温度信号从温敏元件到单片机,经过众多器件,易受干扰、不易控制且精度不高。因此,本文介绍一种新型的可编程温度传感器DS18B20,他能代替模拟温度传感器和信号处理电路,直接与单片机沟通,完成温度采集和数据处理。DS18B20与AT89C51结合实现最简温度检测系统,该系统结构简单,抗干扰能力强,适合于恶劣环境下进行现场温度测量,有广泛的应用前景。 2温度测量系统硬件 系统结构图如图1所示 。这里通过上拉电阻直
[测试测量]
C8051F单片机在远端测控装置中的应用
摘 要 :本文介绍了C8051F系列单片机在远端测控装置中的应用,给出了整个系统的结构,包括硬件配置和系统网络构成,对一些技术问题也做出了详尽的说明。 关键词: C8051F ;远端测控;硬件配置 C8051F单片机是完全集成的混合信号系统芯片(SoC),具有与8051指令集完全兼容的CIP-51内核和高速、高性能、高集成度等特点。在本文设计的一套远端测控装置中取得了较好的效果。 系统简介 远端测控装置是一种现场可编程的控制器,它能完成数据的采集控制,而通过远程通信的方式(如电台、CDMA、拨号等)将数据上传至中心站或接收中心站的遥控指令。它往往被安装在比较分散、环境比较恶劣、无电源保障(经常断电或使用太阳能)且无人值
[单片机]
C8051F<font color='red'>单片机</font>在远端测控装置中的应用
基于单片机8251和MODEM设计的远程通信系统
1 前言 我国中大型石油化工企业大都采用小电流接地系统来供电,电力系统较为庞大。这类系统一般拥有几座乃至十几座35kV级的总降压站,几十座6~10kV级的高压配电室,分布范围较广,有的变电站离开总调有十几km之远。因此,各变电站的电量参数(电压、电流、相位、功率因数等)的准确、可靠传送,对总调及时决策、对提高供电质量和确保电力运行安全尤为重要。这里,我们采用单片微型计算机控制调制解调器进行远程实时数据传送,获得了满意的效果。 2 硬件系统设计  系统网络图如图1所示。本系统的上位机采用PII微机,通过MODEM←→交换网←→MODEM与作为下位机的单片机系统相连接。电力传感器采集的数据信号输入单片机系统,经软件程序处理后
[工业控制]
基于<font color='red'>单片机</font>8251和MODEM设计的远程通信系统
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
随便看看
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved