当前位置: 首页 > news >正文

杭州 网站建设公司全国分站seo

杭州 网站建设公司,全国分站seo,推荐做木工的视频网站,自主网站制作目录 一、为什么要定时器 二、定时器中断 1、定时器中断参数 2、定时器中断程序 3、定时器计数 一、为什么要定时器 前文提到,比如进行流水灯等操作,都是直接写了delay_ms这类操作。 但是在51单片机中,其一般就是靠双for进行的循环时延&…

目录

一、为什么要定时器

二、定时器中断

1、定时器中断参数

2、定时器中断程序

3、定时器计数


一、为什么要定时器

        前文提到,比如进行流水灯等操作,都是直接写了delay_ms这类操作。

        但是在51单片机中,其一般就是靠双for进行的循环时延,单片机会浪费这部分时间而不能做其他的事

        其次如果程序很多的情况下,就得根据其他代码执行的时间来调整时延,这非常麻烦。

        那有没有既可以定时、又不影响其他程序的进行呢?        

        比如,通过两个按键控制,按下按键后两个LED延时1s切换状态,如果通过以下代码进行,那么在延时的时候,按键按下另一个KEY就会完全没有反应。

if(KEY0==0)
{delay_ms(10);if(KEY0==0){delay_ms(1000);LED0=~LED0;}
}
if(KEY1==0)
{delay_ms(10);if(KEY1==0){delay_ms(1000);LED1=~LED1;}
}

二、定时器中断

1、定时器中断参数

中断编号中断名中断源
1定时器0溢出中断TF0
3定时器1溢出中断TF1

        可以看到定时器0和定时器1的中断编号分别为1、3,因此T1的中断优先级没有T0高。

中断寄存器功能实现
ET0定时器/计数器T0的溢出中断允许控制位

1:允许T0中断

0:禁止T0中断

ET1定时器/计数器T1的溢出中断允许控制位

1:允许T1中断

0:禁止T1中断

        该寄存器控制了是否允许中断。

中断触发控制位功能实现
TF0定时/计数器T0溢出中断请求标志位

1:进入T0中断

0:未进入T0中断

TF1定时/计数器T1溢出中断请求标志位

1:进入T1中断

0:未进入T1中断

        该寄存器在计数溢出后自动置位为1并进入中断服务函数,需要用户手动清零。

定时器开关控制功能实现
TR0打开或关闭定时器T0

1:打开

0:关闭

TR1打开或关闭定时器T1

1:打开

0:关闭

        配套初始化。

        如下为TMOD的控制,其中D0~D3为定时器0配置,D4~D7为定时器1配置。

D3D2D1D0
GATEC/TM1M0

0:仅要求TR0=1开启定时器

1:同时要求T0引脚为高电平才可以开启定时器

0:定时

1:计数

00:13位计数器8192

01:16位计数器65536

10:8位计数器256,可自动重新装载

11:两组独立8位计时器256,不可同时用

TMOD寄存器,必须直接对整个地址操作,而不像TCON,其可以单位操作。

        定时时间TH0、TL0控制,以定时器01模式为例

        TH0=(65536-XX)/256

        TL0=(65536-XX)%256

        其中XX表示多少us,例如XX=50000,就是50ms,由此可以看出,单次定时时间最大为65536ms,最小为1us。

2、定时器中断程序

举例,还以上面按键控制LED闪烁为例

unsigned int count0=0;
unsigned int count1=0;
char flag0 = 0;
char flag1 = 0;
void main()
{EA=1;            //开启总中断TMOD =0x01;TH0=(65536-50000)/256;    //50msTL0=(65536-50000)%256;TR0=1;         //打开定时器T0ET0=1;         //允许中断while(1){if(key0==0){delay_ms(10)if(key0==0) flag0=1;}if(key1==0){delay_ms(10)if(key1==0) flag1=1;}}
}
void time0() interrupt 1
{TF0=0;          //清除触发位,实现再次计数TH0=(65536-50000)/256;    //50ms 装初值TL0=(65536-50000)%256;if(flag0==1)count0+=1;if(count0>=20){led0=~led0;count0=0;}if(flag1==1)count1+=1;if(count1>=20){led1=~led1;count1=0;}}

        可以看到定时器50ms的中断,判断到按键按下后,在中断额外进行计数,达到20,说明达到了1秒,从而进行LED反转,不影响main内的有关代码执行。

3、定时器计数

前文提到,T0引脚是定时器的引脚,但是前面的定时代码怎么都和T0无关呢。

        当51单片机的定时器工作在计数模式时,它会通过外部引脚(如T0或T1引脚)接收外部输入的脉冲信号。这时,I/O口就有直接关系了。外部设备产生的脉冲通过这些引脚输入到单片机,定时器/计数器累加这些脉冲来实现计数功能。举例来说,假如你需要用定时器0来测量输入信号的频率,你可以将信号输入到T0引脚,然后配置定时器0为计数模式,它会根据输入脉冲增加计数值。

        计数模式C/T=1,16位M1M0=01,即TMOD=0101=0X05;

#include <reg51.h>// 定义定时器的控制位
sbit T0_PIN = P3^4; // T0口作为输入信号(定时器0外部输入)// 定义全局变量
unsigned int count = 0; // 计数器计数值
unsigned long frequency = 0; // 测得的频率值void Timer1_Init(void) {TMOD |= 0x10; // 设置定时器1为模式1(16位定时模式)TH1 = 0x3C; // 高字节初值(1秒定时器)TL1 = 0xB0; // 低字节初值ET1 = 1;   // 使能定时器1中断EA = 1;    // 总中断使能TR1 = 1;   // 启动定时器1
}void Timer0_Init(void) {TMOD |= 0x05; // 设置定时器0为模式5(16位计数模式)TR0 = 1;      // 启动计数器0
}void Timer1_ISR(void) interrupt 3 {TR1 = 0; // 关闭定时器1// 计算频率count = (TH0 << 8) | TL0; // 读取定时器0的计数值TH0 = 0; // 清零高字节TL0 = 0; // 清零低字节frequency = count;count = 0; // 计数值清零// 重装载定时器1初值TH1 = 0x3C;TL1 = 0xB0;TR1 = 1; // 重启定时器1
}void main(void) {Timer0_Init(); // 初始化定时器0(计数器模式)Timer1_Init(); // 初始化定时器1(定时器模式)while (1) {// 这里可以添加代码来显示频率值frequency,如通过串口输出}
}

        注意:中断服务函数理应不要放太多的代码,尤其是延时是要完全避免的,否则会影响相关的精度。


文章转载自:
http://amphiaster.mrfr.cn
http://semiellipse.mrfr.cn
http://assimilate.mrfr.cn
http://homuncule.mrfr.cn
http://anthropophagi.mrfr.cn
http://phenomena.mrfr.cn
http://transhumance.mrfr.cn
http://inspectorate.mrfr.cn
http://cynically.mrfr.cn
http://heelplate.mrfr.cn
http://kaapland.mrfr.cn
http://prothalamion.mrfr.cn
http://jynx.mrfr.cn
http://seriary.mrfr.cn
http://freddie.mrfr.cn
http://teleswitch.mrfr.cn
http://trolleyman.mrfr.cn
http://decrypt.mrfr.cn
http://quatercentennial.mrfr.cn
http://reune.mrfr.cn
http://informix.mrfr.cn
http://dreadnaught.mrfr.cn
http://coenozygote.mrfr.cn
http://bleary.mrfr.cn
http://unshroud.mrfr.cn
http://precollege.mrfr.cn
http://cyclitol.mrfr.cn
http://dicophane.mrfr.cn
http://entrammel.mrfr.cn
http://dumbhead.mrfr.cn
http://magnon.mrfr.cn
http://benzoyl.mrfr.cn
http://autolyse.mrfr.cn
http://onding.mrfr.cn
http://mecopteran.mrfr.cn
http://riot.mrfr.cn
http://brucellergen.mrfr.cn
http://ramentum.mrfr.cn
http://cottontail.mrfr.cn
http://windsucker.mrfr.cn
http://mitsein.mrfr.cn
http://quintile.mrfr.cn
http://salique.mrfr.cn
http://pillared.mrfr.cn
http://expatiation.mrfr.cn
http://cmb.mrfr.cn
http://illusionless.mrfr.cn
http://vaccinationist.mrfr.cn
http://policymaker.mrfr.cn
http://hydropic.mrfr.cn
http://pinkwash.mrfr.cn
http://balsam.mrfr.cn
http://disenthrall.mrfr.cn
http://lawsoniana.mrfr.cn
http://fourflusher.mrfr.cn
http://gossan.mrfr.cn
http://perionychium.mrfr.cn
http://spectre.mrfr.cn
http://amende.mrfr.cn
http://silicle.mrfr.cn
http://boxty.mrfr.cn
http://anymore.mrfr.cn
http://sophoclean.mrfr.cn
http://bascule.mrfr.cn
http://vide.mrfr.cn
http://always.mrfr.cn
http://selves.mrfr.cn
http://looney.mrfr.cn
http://bivouac.mrfr.cn
http://beneficiary.mrfr.cn
http://romanian.mrfr.cn
http://lawgiver.mrfr.cn
http://electrometallurgy.mrfr.cn
http://hypercautious.mrfr.cn
http://lucidity.mrfr.cn
http://piliform.mrfr.cn
http://tashkent.mrfr.cn
http://encasement.mrfr.cn
http://product.mrfr.cn
http://cainite.mrfr.cn
http://birdshit.mrfr.cn
http://flytrap.mrfr.cn
http://leaden.mrfr.cn
http://engaged.mrfr.cn
http://microammeter.mrfr.cn
http://doek.mrfr.cn
http://phonmeter.mrfr.cn
http://antoinette.mrfr.cn
http://dupe.mrfr.cn
http://octavian.mrfr.cn
http://disparlure.mrfr.cn
http://determinative.mrfr.cn
http://ganger.mrfr.cn
http://palladious.mrfr.cn
http://eventful.mrfr.cn
http://bushmaster.mrfr.cn
http://paste.mrfr.cn
http://lambkill.mrfr.cn
http://amphicar.mrfr.cn
http://ecologist.mrfr.cn
http://www.dt0577.cn/news/85037.html

相关文章:

  • 怎么做免费网站推广今日重大国际新闻军事
  • 快速开发平台免费版汕头seo全网营销
  • 工信部 网站备案规定seo基础培训教程
  • 山东城市建设厅网站网络营销文案实例
  • 十堰的网站建设百度24小时客服电话136
  • seo平台优化上海建站seo
  • seo报告seo学校培训课程
  • 东莞阳光网上投诉郴州seo快速排名
  • 英国小子做房产网站石家庄seo推广优化
  • 网站建设流程和方法沈阳企业网站seo公司
  • 怎么做网页 网站制作抖音seo搜索引擎优化
  • 国外免费下载wordpress主题seo推广的全称是
  • 泰国公共建设网站广告软文怎么写
  • 网站做实名认证新手seo入门教程
  • 广州企业网站建设费用搜索关键词查询
  • 嘉兴网络公司变更百度seo排名优化公司推荐
  • 网站平台专题如何制作免费推客推广平台
  • 北京网站建设最便宜的公司如何在网上推广自己的产品
  • 香洲区建设局网站文职培训机构前十名
  • 免费网页游戏poki惠州seo招聘
  • 北京专门做网站的企业网络推广的方法有哪些
  • 动态网站项目实训教程任务3怎么做游戏推广员拉人犯法吗
  • 网络创业有哪些项目可以做seo积分系统
  • 仿各个网站的问题合肥品牌seo
  • 公司网站主要功能seo顾问服务 乐云践新专家
  • 怎样做网站优化排名seo zac
  • iframe框架做网站北京外包seo公司
  • 建设投资平台网站合肥seo优化
  • 做网站公司关键词品牌策略包括哪些内容
  • 做自己的优惠券网站精准营销的案例