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

ps图做ppt模板下载网站有哪些内容网站域名备案查询

ps图做ppt模板下载网站有哪些内容,网站域名备案查询,南昌网站建设咨询,网站信用认证可以自己做吗1.定时器介绍 51单片机通常有两个定时器:定时器 0/1,好一点的可能有定时器3。 在介绍定时器之前我们先科普下几个知识: 1,CPU 时序的有关知识 ①振荡周期:为单片机提供定时信号的振荡源的周期(晶振周期或…

1.定时器介绍

51单片机通常有两个定时器:定时器 0/1好一点的可能有定时器3。

在介绍定时器之前我们先科普下几个知识:

1,CPU 时序的有关知识
①振荡周期:为单片机提供定时信号的振荡源的周期(晶振周期或外加振荡
周期)。
②状态周期:2 个振荡周期为 1 个状态周期,用 S 表示。振荡周期又称 S 周
期或时钟周期。
③机器周期:1 个机器周期含 6 个状态周期,12 个振荡周期。
④指令周期:完成 1 条指令所占用的全部时间,它以机器周期为单位。
例如:外接晶振为 12MHz 时,51 单片机相关周期的具体值为:
振荡周期=1/12us;
状态周期=1/6us;(2个振荡周期)
机器周期=1us;(12个振荡周期)
指令周期=1~4us;
2,学习定时器前需要明白的几点
①51 单片机有两组定时器/计数器,因为既可以定时,又可以计数,故称之
为定时器/计数器。
②定时器/计数器和单片机的 CPU 是相互独立的。定时器/计数器工作的过程
是自动完成的,不需要 CPU 的参与。
③51 单片机中的定时器/计数器是根据机器内部的时钟或者是外部的脉冲信
号对寄存器中的数据加 1。
有了定时器/计数器之后,可以增加单片机的效率,一些简单的重复加 1 的
工作可以交给定时器/计数器处理。CPU 转而处理一些复杂的事情。同时可以实
现精确定时作用。我们之前写的延时函数都给大概的时间,是不精确的。但是定时器是精确的。

2. 单片机定时器原理

定时/计数器的实质是加 1 计数器(16 位),由高 8 位和低 8 位两
个寄存器 THx 和 TLx 组成。它随着计数器的输入脉冲进行自加 1,也就是每来一
个脉冲,计数器就自动加 1,当加到计数器为全 1 时,再输入一个脉冲就使计数
器回零,且计数器的溢出使相应的中断标志位置 1,向 CPU 发出中断请求(定时
/计数器中断允许时)。如果定时/计数器工作于定时模式,则表示定时时间已到;
如果工作于计数模式,则表示计数值已满。可见,由溢出时计数器的值减去计数
初值才是加 1 计数器的计数值。
上图中的 T0 和 T1 引脚对应的是单片机 P3.4 和 P3.5 管脚。51 单片机定时/
计数器的工作由两个特殊功能寄存器控制。TMOD 是定时/计数器的工作方式寄存
器,确定工作方式和功能;TCON 是控制寄存器,控制 T0、 T1 的启动和停止及
设置溢出标志

1,工作方式寄存器 TMOD

工作方式寄存器 TMOD 用于设置定时/计数器的工作方式,低四位用于 T0,高
四位用于 T1。其格式如下:

》GATE 是门控位, GATE=0 时,用于控制定时器的启动是否受外部中断源信号
的影响。只要用软件使 TCON 中的 TR0 或 TR1 为 1,就可以启动定时/计数器工作;
GATA=1 时,要用软件使 TR0 或 TR1 为 1,同时外部中断引脚 INT0/1 也为高电平
时,才能启动定时/计数器工作。即此时定时器的启动条件,加上了 INT0/1 引脚
为高电平这一条件。

》 C/T :定时/计数模式选择位。C/T =0 为定时模式;C/T =1 为计数模式。

M1M0:工作方式设置位。定时/计数器有四种工作方式。

2,控制寄存器 TCON 

TCON 的低 4 位用于控制外部中断,已在前面介绍。TCON 的高 4 位用于控制定
时/计数器的启动和中断申请。其格式如下:

》TF1(TCON.7):T1 溢出中断请求标志位。T1 计数溢出时由硬件自动置 TF1
为 1。CPU 响应中断后 TF1 由硬件自动清 0。T1 工作时,CPU 可随时查询 TF1 的
状态。所以,TF1 可用作查询测试的标志。TF1 也可以用软件置 1 或清 0,同硬
件置 1 或清 0 的效果一样
》TR1(TCON.6):T1 运行控制位。TR1 置 1 时,T1 开始工作;TR1 置 0 时,
T1 停止工作。TR1 由软件置 1 或清 0。所以,用软件可控制定时/计数器的启动
与停止。
TF0(TCON.5):T0 溢出中断请求标志位,其功能与 TF1 类同。
》TR0(TCON.4):T0 运行控制位,其功能与 TR1 类同。

3.定时/计数器的工作方式

1:方式 0
方式 0 为 13 位计数,由 TL0 的低 5 位(高 3 位未用)和 TH0 的 8 位组成。
TL0 的低 5 位溢出时向 TH0 进位,TH0 溢出时,置位 TCON 中的 TF0 标志,向 CPU
发出中断请求。其结构图如下所示:
门控位 GATE 具有特殊的作用。当 GATE=0 时,经反相后使或门输出为 1,此时仅由 TR0 控制与门的开启,与门输出 1 时,控制开关接通,计数开始;当 GATE=1时,由外中断引脚信号控制或门的输出,此时控制与门的开启由外中断引脚信号 和 TR0 共同控制。当 TR0=1 时,外中断引脚信号引脚的高电平启动计数,外中断 引脚信号引脚的低电平停止计数。这种方式常用来测量外中断引脚上正脉冲的宽 度。计数模式时,计数脉冲是 T0 引脚上的外部脉冲。计数初值与计数个数的关
系为:X=2(13)-N。其中 2(13)表示 2 的 13 次方。
2:方式 1

方式 1 的计数位数是 16 位,由 TL0 作为低 8 位,TH0 作为高 8 位,组成了 16 位加 1 计数器。其结构图如下所示:

计数初值与计数个数的关系为:X=2(16)-N。

3:方式 2(串口通信)

方式 2 为自动重装初值的 8 位计数方式。工作方式 2 特别适合于用作较 精确的脉冲信号发生器。其结构图如下所示:

4:方式 3 
方式 3 只适用于定时/计数器 T0, 定时器 T1 处于方式 3 时相当于 TR1=0,
停止计数。工作方式 3 将 T0 分成为两个独立的 8 位计数器 TL0 和 TH0。其
结构如下所示

这几种工作方式中应用较多的是方式 1 和方式 2。定时器中通常使用定时器
方式 1,串口通信中通常使用方式 2。

4.定时器配置

在使用定时器时,应该如何配置使其工作?其步骤如下(各步骤顺序可任
意):
①对 TMOD 赋值,以确定 T0 和 T1 的工作方式,如果使用定时器 0 即对 T0 配
置,如果使用定时器 1 即对 T1 配置。
②根据所要定时的时间计算初值,并将其写入 TH0、TL0 或 TH1、TL1。
③如果使用中断,则对 EA 赋值,开放定时器中断。(TCON)
④使 TR0 或 TR1 置位,启动定时/计数器定时或计数。(与GATE一起使用的)
上述中有一个定时/计数器初值的计算,下面我们来看下如何计算定时/计数
器初值。
前面我们介绍过机器周期的概念,它是 CPU 完成一个基本操作所需要的时间。
其计算公式是:机器周期=1/单片机的时钟频率。51 单片机内部时钟频率是外部
时钟的 12 分频,也就是说当外部晶振的频率输入到单片机里面的时候要进行 12
分频。比如说你用的是 12MHZ 晶振,那么单片机内部的时钟频率就是 12/12MHZ,
当你使用 12MHZ 的外部晶振的时候,机器周期=1/1M=1us。如果我们想定时 1ms
的初值是多少呢?1ms/1us=1000。也就是要计数 1000 个,初值=65535-1000+1
(因为实际上计数器计数到 66636(2 的 16 次方)才溢出,所以后面要加 1)
=64536=FC18H,所以初值即为 THx=0XFC,TLx=0X18。
知道了如何计算定时/计数器初值,那么想定时多长时间都可以计算出,当
然由于定时计数器位数有限,我们不可能直接通过初值定时很长时间,如果要实
现很长时间的定时,比如定时 1 秒钟。可以通过初值设置定时 1ms,每当定时 1ms
结束后又重新赋初值,并且设定一个全局变量累计定时 1ms 的次数,当累计到
1000 次,表示已经定时 1 秒了。需要其他定时时间类似操作,这样我们就可以
使用定时器来实现精确延时来替代之前的 delay 函数。
这里以定时器 0 为例介绍配置定时器工作方式 1、设定 1ms 初值,开启定时
器计数功能以及总中断,如下:
void Timer0Init()
{
TMOD|=0X01;//选择为定时器 0 模式,工作方式 1,仅用 TR0 打开启动。
TH0=0XFC; //给定时器赋初值,定时 1ms
TL0=0X18;
ET0=1;//打开定时器 0 中断允许
EA=1;//打开总中断
TR0=1;//打开定时器
}
对于定时器 1 的使用方法是一样的,只是将上述的 0 变为 1 即可,具体可参
考我们定时器 1 实验例程。

5.实例

1.通过定时器 0 中断控制 D1 指示灯间隔 1 秒闪烁。

代码如下:

#include <REGX51.H>
typedef unsigned char u8;
typedef unsigned int u16;sbit LED1=P2^0;void Timer0Init()
{TMOD|=0X01;//选择为定时器 0 模式,工作方式 1,仅用 TR0 打开启动。TH0=0XFC; //给定时器赋初值,定时 1msTL0=0X18;ET0=1;//打开定时器 0 中断允许EA=1;//打开总中断TR0=1;//打开定时器
}void main()
{Timer0Init();while(1){}}void Timer0() interrupt 1
{{static u16 i;TH0=0XFC; //给定时器赋初值,定时 1msTL0=0X18;i++;if(i==1000){i=0;LED1=~LED1;}}
}
2.按键控制LED流水灯模式
#include <REGX51.H>#include <INTRINS.H>
typedef unsigned char u8;
typedef unsigned int u16;u8 LEDMode;//延时子函数
void Delay(unsigned int xms)
{unsigned char i, j;while(xms--){i = 2;j = 239;do{while (--j);} while (--i);}
}void Timer0Init()
{TMOD|=0X01;//选择为定时器 0 模式,工作方式 1,仅用 TR0 打开启动。TH0=0XFC; //给定时器赋初值,定时 1msTL0=0X18;ET0=1;//打开定时器 0 中断允许EA=1;//打开总中断TR0=1;//打开定时器
}void main()
{P2=0xfe;Timer0Init();while(1){if(P3_1==0){Delay(20);while(P3_1==0);Delay(20);LEDMode++;if(LEDMode>=2)LEDMode=0;}}}
void Timer0() interrupt 1
{	static u16 i;TH0=0XFC; //给定时器赋初值,定时 1msTL0=0X18;i++;if(i==500){i=0;if(LEDMode==0){P2=_crol_(P2,1);}if(LEDMode==1){P2=_cror_(P2,1);}}  
}

http://www.15wanjia.com/news/1906.html

相关文章:

  • 天津网站建设软文推广代理平台
  • 用php做医药网站开题报告成都网站建设seo
  • unity网站后台怎么做市场推广外包团队
  • 使用三剑客做网站简述网站建设的流程
  • 做情人在那个网站电商网站首页
  • 做金融的网站游戏app拉新平台
  • 做断桥铝最知名的网站下载应用商店
  • php网站开发工具网站seo收录
  • 武汉商城网站制作公司网推团队
  • 电脑技术学习网站广州seo网站推广公司
  • 公司想做网站百度收录规则
  • 列表怎么做网站苏州seo网站优化软件
  • 拉萨网站建设友情链接是免费的吗
  • 医院网站实例推广搜索怎么选关键词
  • 攀枝花网站建设网络小说排行榜
  • 合肥做网站排名windows优化大师怎么彻底删除
  • 诸城网站做的好的网络营销方法
  • 详情页设计说明怎么写宁波seo网络推广渠道介绍
  • 做网站管理员开会怎么演讲南通做网站推广的公司
  • 做团建活动网站东莞网络优化排名
  • 网站建设视频网络运营怎么学
  • wordpress虚拟阅读站长工具seo综合查询网
  • 政府网站运维方案关键词优化一般收费价格
  • 网站制作案例市场域名查询站长之家
  • 关于网站建设的软文广州seo顾问服务
  • 做印尼购物网站如何发货windows优化大师下载安装
  • 个人做二次元网站怎么赚钱上海十大公关公司排名
  • 网站改版需求分析媒体推广
  • 网站文章伪原创怎么做太原seo外包服务
  • 广广东网站建设西安网站seo推广