51单片机定时器可用两种方式处理:查询和进入中断处理。

1.查询方式

void Init_T0 (void) 定时器初始化

{

TMOD = 0x01;//计时器模式

TH0 = (65535-65000) /256;//初装值为65536-65000,逐步+1,最后加到65535,溢出TF0=1

TL0 = (65535-65000) %256;

EA = 0;//关闭全局中断

ET0 = 0;//关闭定时器中断

TR0 = 1;//启动定时器

}

void Main() 主函数

{

Init_T0 ();

Speak1 =1;

while(1)

{

if(TF0==1) 查询中断标志

{

Speak1=~Speak1;

//TH0 = (65535-65000) /256;

//TL0 = (65535-65000) %256;

TF0=0;//对于查询方式,一定要手动清除中断溢出标志。

}

}

}

2.进入中断处理

void Init_T0 (void) 定时器初始化

{

TMOD = 0x01;

TH0 = (65535-65000) /256;

TL0 = (65535-65000) %6;

EA = 1;

ET0 = 1;

TR0 = 1;

}

void Time0_Int() interrupt 1 中断处理函数

{

Speak1=~Speak1;

//TH0 = (65535-65000) /256;

//TL0 = (65535-65000) %256;

//TF0=0;//中断处理方式,硬件会自动清除中断溢出标志。

}

void Main() 主函数

{

Init_T0 ();

Speak1 =1;

while(1); 等待中断

}

对于查询方式,一定要手动清楚中断标志。

上面2段程序,我屏蔽了,中断时重新装计数初值的语句,程序都可正常运行,所以我认为无论对于那种处理方式,重装初值都不必要。

初始化时,可定义输出口的初始状态。而在处理中断时,一定要用取反语句。手动置0或1,程序将不能正常运行。

对于方式2,开始main中没写最后的while(1),程序不正常运行。

上述定时位宽为16位,最大计数为65535,由于频率为1MHz,约1us,最大计时约65ms。如果计时大于此,可在中断中处理。

程序如下:

int a;

void Time0_Int() interrupt 1

{

if(a++==20)

{ a=0;

Speak1=~Speak1;

}

}

最后说明:51单片机只有溢出中断,将导致标志位TFX置1;而STM32就比较复杂,有许多种定时器中断类型,如更新、触发、匹配捕获。

51单片机定时器的查询和进入中断处理相关推荐

  1. 51单片机定时器/计数器(定时器中断)

    51单片机定时器/计数器(中断系统:定时器中断) 实现功能 通过定时器终端控制LED灯 D1 间隔一秒闪烁 单片机型号:STC89C52 定时器介绍 1.51单片机定时器原理 定时器实质上就是一个加1 ...

  2. 51单片机定时器(T0/T1)的使用与配置流程

    第一步:配置工作方式寄存器-TMOD TMOD寄存器的字节地址为89H,不能位寻址.一般采用整体赋值的方式进行配置:如:TMOD=0x01 // 0000 0001 GATE=0,定时器仅受TCON寄 ...

  3. C语言课设项目-51单片机-定时器和计数器

    (创作不易,感谢有你,你的支持,就是我前行的最大动力,如果看完对你有帮助,请留下您的足迹) 目录 一.定时器的原理 1.CPU时序的有关知识 2.在学习定时器之前需要明白的 3.定时/计数器的工作原理 ...

  4. 51单片机c语言定时器程序,51单片机定时器设置入门与程序解析

    89C51单片机有两个计数器T0和T1,每个计数器都是由两个8位的RAM 单元组成的,即每个计数器都是16 位的计数器,最大的计数容量是216=65536,记住是从0-65535. 其次.提供给定时器 ...

  5. c语言单片机定时器的应用程序,51单片机定时器中断程序(C语言)

    51c程序 51单片机定时器中断程序(C语言) 用C语言实现的,先要定义好定时器的初值 不管你使用多大的晶振,使用51单片机,一般都是12分频出来,也就可以得出一个机器周期 机器周期=12/n(n指晶 ...

  6. 基于51单片机定时器计数+2片74HC595联级+8位数码管时钟+按键修改时间

    基于51单片机定时器计数+2片74HC595联级+8位数码管时钟+按键修改时间 Proteus仿真 实例代码 #include "at89x52.h" /**74hc595引脚定义 ...

  7. 51单片机定时器秒计数时钟+Proteus仿真

    51单片机定时器秒计数时钟+Proteus仿真 Proteus仿真 实例代码 本实例采用的是普中开发板Proteus模板 功能:电子钟,从左到右,1.2位为秒,3.4位为分,5.6位为时,7.8位为天 ...

  8. 51单片机定时器初值计算以及初值计算软件

    51单片机定时器初值计算以及初值计算软件 不想搞懂计算原理的直接跳到文章末尾,使用初值计算软件来解决有关初值计算的问题 51单片机定时器初值计算部分 时钟周期,也称为振荡周期:定义为时钟脉冲的倒数,在 ...

  9. 【51MCU】51单片机定时器中断写MIDI音乐(按键可切换音乐)

    Author: Manba Cople 专业:IOT 说明:记录和输出学习内容 文章目录 前言 定时器 音乐播放 音乐库 总结和展望 前言 程序思路:该程序是利用51单片机的定时器中断,另外根据音符的 ...

最新文章

  1. 天池NLP大赛来了!
  2. SIFT(Scale-invariant feature transform, 尺度不变特征转换)特征
  3. 中移动飞信2010Beta1.0体验版
  4. linux数据库能看到系统执行了哪些命令,DB2数据库在linux操作系统的指令有哪些?...
  5. 【Oracle】ORA-30659: too many locations specified for external table
  6. 爬虫404如何跳过_网络推广外包——网络推广外包专员如何从站内优化中提升网站收录...
  7. C++[USACO06NOV] Fence Repair G合并果子
  8. 自学python 经验学习心得分享
  9. 2020级训练赛10.23
  10. JAVA小游戏黄金矿工
  11. JVM_12 垃圾回收3-垃圾回收器
  12. 盘点那些欺骗我感情的数学定理
  13. CSS:怎么样给背景图加透明度 opacity ?
  14. 央企招聘:中国航天科工集团2023校园招聘
  15. javafx 订单项目源码_终于找到一个JavaFx开发的东西,pdf阅读器。包括源代码
  16. comsol移动网格_comsol网格设置技巧,网格
  17. 【干货分享】一张图看懂收录与索引的区别
  18. 世界上最好的编程语言(没有绝对)
  19. Citrix Server 添加本地磁盘
  20. SQLite的使用场景

热门文章

  1. Oracle笔记之 的CMD命令
  2. 笨重的多用开源生物识别腕带 LEWE
  3. 高考招生计划数据采集系统设计
  4. 数学之美:拼音输入法的数学原理
  5. Full-featured Vue 评分组件
  6. Widget是一切,Widget简介
  7. 微信小程序实例:image组件的binderror事件处理
  8. 工作22年后明白的22条职场道理
  9. 数据可视化之Seaborn绘图
  10. 5年时间,我是如何在帝都全款买房的!!!