ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

61单片机定时器查询和定时的区别

2021-10-14 12:34:19  阅读:192  来源: 互联网

标签:led1 定时器 61 void 单片机 num 65536 256


在使用定时器的过程中,避免不了使用定时器定时或者查询的情况

但定时器用于定时中断查询,其实是有实际的区别的

下面直接把分享下我之前代码

定时器查询是通过判断标志位的方式

#include<reg51.h>
#define uint unsigned int      //宏定义
sbit led1=P2^0;           //定义led1
uint num;
void timer0_init(void);      //引用定时器子函数

void main()
{
    led1 = 0;
    num = 0;
    timer0_init();
    while(1)
    {
        if(TF0 == 1)   //检测是否溢出
        {
            TF0 = 0;    //软件清零
            TH0 = (65536-50000)/256;    //重新赋值
            TL0 = (65536-50000)%256;
            num++;         //累加器
        }
            if(num>=140)    //学号最后一位为数字7,50ms循环140次,时间为7s
            {
                num = 0;
                led1 = ~led1;    //led1取反            
            }
            
    }
}


void timer0_init(void)      //初始化定时器0
{
    EA = 0;        //关闭全局中断
    ET0 = 0;    //关闭定时器0中断
    TMOD = 0x01;     //定时器工作模式1,16位定时器计数模式
    TH0 = (65536-50000)/256;   //设置16位定时器的高8位,定时50ms
    TL0 = (65536-50000)%256;   //设置16位定时器的低8位
    TR0 = 1;      //打开定时器0

}

定时器用于中断情况

void Timer0Init()
{
    TMOD|=0x01;                         //选择为定时器0模式,工作方式1,仅用TR0打开启动。
    TH0=(65536-45872)/256;     //装初值11.0592M晶振定时50ms数为45872
    TL0=(65536-45872)%256;
    ET0=1;//打开定时器0中断允许
    TR0=1;//打开定时器0    
    EA=1;//打开总中断        
}

void Timer0() interrupt 1
{
    static u16 i;                                            //定义局部变量i
    TH0=(65536-45872)/256;                       //装初值11.0592M晶振定时50ms数为45872
    TL0=(65536-45872)%256;
    i++;                                     //每一个机器周期i自增1
    if(i==120)                           //当i记到120,即6秒的时候重新赋值为0
    {
        i=0;
        num++;                         //每6秒时间变量num加1
        if(num==60)                     //当num记到60时重新赋值为0
        {    
            num=0;
        }
    }            
}
    

标签:led1,定时器,61,void,单片机,num,65536,256
来源: https://blog.csdn.net/qq_41944420/article/details/120760999

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有