登录  | 立即注册

游客您好!登录后享受更多精彩

扫一扫,访问微社区

QQ登录

只需一步,快速开始

开启左侧

[学习笔记] 我曾在学习时遇到的疑难点。

[复制链接]
发表于 2017-3-19 22:08:29 | 显示全部楼层 |阅读模式


1:定时器赋初值:
          周期的倒数叫做频率,用符号f表示,f = 1/T,所以T = 1/f。
          一个机器周期为12个时钟周期(注1),每经过一个机器周期,寄存器加1,当寄存器装满的时候溢出。所以机器周期就是:12 / 频率。(对于现在使用的32MHz的晶振机器周期 = 0.375微秒(us))
          利用定时器来进行延时就是利用寄存器每次加1过程中消耗的机器周期的时间,如果我们想延时10ms,首先需要知道经过运行了多少时钟周期也就是寄存器加了多少个1,假需要加x个1吧,而我们使用定时器恰恰是在利用寄存器溢出的这一特点,而赋初值就是为了让我们的寄存器按照我们的意愿在加了x个1之后就溢出,以达到我们定时20ms的目的。x = 10ms / 机器周期。(x = 10 000 / 0.375 = 26667)
          因为我们选择的定时器是16位的,即2^16 (= 65536) ,那么当寄存器由0开始加到65535时就会溢出,我们想让它运行10ms后溢出和我们让它从(65535 - x)开始计数是一样的,(所以初值为 = 38868)然后我们把初值转换为16进制(97D4)然后把前两位赋值给TH*(注2)后两位赋值给TL*                         

2:关于定时器T0和T1的选择:
          参见文件夹中的图片,为了同时实现选择定时器1和模式1(就是M1 = 0,M0 = 1)就可以令TMOD = 0x10(0001 0000)来实现。

注1:时钟周期也称为振荡周期,定义为时钟频率的倒数。时钟周期是计算机中最基本的、最小的时间单位。在一个时钟周期内,CPU仅完成一个最基本的动作。时钟周期是一个时间的量。时钟周期表示了SDRAM所能运行的最高频率。更小的时钟周期就意味着更高的工作频率。(百度百科)
注2:*代表0或1

以上是大一时写的,可能存在一些问题,也可能有不全面的地方。不论怎样权当抛砖引玉了。

第42届大学生电器开发部
文宣组干事常一涵
...
发表于 2017-3-21 17:00:51 | 显示全部楼层
现在是多少届了
该会员没有填写今日想说内容.
 楼主| 发表于 2017-4-21 15:50:28 | 显示全部楼层
alpha 发表于 2017-3-21 17:00
现在是多少届了

第四十三届
...
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表