登录  | 立即注册

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

扫一扫,访问微社区

QQ登录

只需一步,快速开始

开启左侧

[寒假笔记] 利用定时器实现led闪烁

[复制链接]
发表于 2023-1-28 23:18:31 | 显示全部楼层 |阅读模式
学习笔记
学习科目: C51
学习安排: 开学前完成
开始时间: 2023-01-06
结束时间: 2023-01-31
学习笔记六

一.定时器

二.实验(led闪烁)



一.定时器

功能

定时

  1. 加一计数。
  2. 脉冲来自振荡器的12分频后的脉冲(Fosc/12),简单的说就是对机器周期计数。
  3. 需要预设定时初值(TH、TL)。
  4. 初值设置需要是补码,加一计数(补码的加,原值的减)加到溢出(原值减到0了)则发生溢出中断。
计数
1. 加一计数。
  2. 需要预设计数初值(TH、TL)。
  2. 脉冲来源于T0或T1引脚。
  2. 上图的控制开关合上(控制=1)计数器对外部脉冲产生的下降沿开始计数
  3. 知道计满,初始值变为0,产生溢出中断。
  4. 计数脉冲的最高频率不可超过Fosc/24
初始化

1.’确定定时器的计数模式。

2)、确定TLx与THx之间的搭配关系。

3)、确定计数起点值。即TLx与THx的初值。

4)、是否开始计数。TRx

建议去看用户手册,从而选择适合的模式


下面的实验与定时有关就写一下C51单片机的定时计算

二、定时器计数\定时计算


一个机器周期为12x1/晶振(假如晶振为11.0592M)那么一个定时器加一的的时间为12x1/11059200=1.09us,假如定时50ms那么50000us/1.09us=45872则65536—45872=15536就是初值为高8位的值


写程序可以不用

计算初值的公式方法适用方式一:

TH0=(65536-N)/256

TL0=(65536-N)%256


万能计算:

N(需要计数个数)=总定时时间/指令周期(机器周期)然后将 总值—N再换成16进制高2位为TH0低2位TL0

不想计算可以在STC-ISP里面找

定时器.png


二.实验

程序现在主函数中运行,满足中断发生的条件时,程序跳转到中断程序中运行,运行完后,再跳到主程序中运行

若一个条件满足时有多个中断均可产生,则可设置中断优先级,假设有多个患者到医院找同一个医生治疗,医生则会按照一定的标准给病人排序

进行医治

代码:

小小.png


自我感觉定时器这一块有点难,特别是定时器的初始化,各个寄存器的配置那一点





好懒~~不想说~~~
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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