51单片机定时器的查询和进入中断处理
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单片机定时器的查询和进入中断处理相关推荐
- 51单片机定时器/计数器(定时器中断)
51单片机定时器/计数器(中断系统:定时器中断) 实现功能 通过定时器终端控制LED灯 D1 间隔一秒闪烁 单片机型号:STC89C52 定时器介绍 1.51单片机定时器原理 定时器实质上就是一个加1 ...
- 51单片机定时器(T0/T1)的使用与配置流程
第一步:配置工作方式寄存器-TMOD TMOD寄存器的字节地址为89H,不能位寻址.一般采用整体赋值的方式进行配置:如:TMOD=0x01 // 0000 0001 GATE=0,定时器仅受TCON寄 ...
- C语言课设项目-51单片机-定时器和计数器
(创作不易,感谢有你,你的支持,就是我前行的最大动力,如果看完对你有帮助,请留下您的足迹) 目录 一.定时器的原理 1.CPU时序的有关知识 2.在学习定时器之前需要明白的 3.定时/计数器的工作原理 ...
- 51单片机c语言定时器程序,51单片机定时器设置入门与程序解析
89C51单片机有两个计数器T0和T1,每个计数器都是由两个8位的RAM 单元组成的,即每个计数器都是16 位的计数器,最大的计数容量是216=65536,记住是从0-65535. 其次.提供给定时器 ...
- c语言单片机定时器的应用程序,51单片机定时器中断程序(C语言)
51c程序 51单片机定时器中断程序(C语言) 用C语言实现的,先要定义好定时器的初值 不管你使用多大的晶振,使用51单片机,一般都是12分频出来,也就可以得出一个机器周期 机器周期=12/n(n指晶 ...
- 基于51单片机定时器计数+2片74HC595联级+8位数码管时钟+按键修改时间
基于51单片机定时器计数+2片74HC595联级+8位数码管时钟+按键修改时间 Proteus仿真 实例代码 #include "at89x52.h" /**74hc595引脚定义 ...
- 51单片机定时器秒计数时钟+Proteus仿真
51单片机定时器秒计数时钟+Proteus仿真 Proteus仿真 实例代码 本实例采用的是普中开发板Proteus模板 功能:电子钟,从左到右,1.2位为秒,3.4位为分,5.6位为时,7.8位为天 ...
- 51单片机定时器初值计算以及初值计算软件
51单片机定时器初值计算以及初值计算软件 不想搞懂计算原理的直接跳到文章末尾,使用初值计算软件来解决有关初值计算的问题 51单片机定时器初值计算部分 时钟周期,也称为振荡周期:定义为时钟脉冲的倒数,在 ...
- 【51MCU】51单片机定时器中断写MIDI音乐(按键可切换音乐)
Author: Manba Cople 专业:IOT 说明:记录和输出学习内容 文章目录 前言 定时器 音乐播放 音乐库 总结和展望 前言 程序思路:该程序是利用51单片机的定时器中断,另外根据音符的 ...
最新文章
- 天池NLP大赛来了!
- SIFT(Scale-invariant feature transform, 尺度不变特征转换)特征
- 中移动飞信2010Beta1.0体验版
- linux数据库能看到系统执行了哪些命令,DB2数据库在linux操作系统的指令有哪些?...
- 【Oracle】ORA-30659: too many locations specified for external table
- 爬虫404如何跳过_网络推广外包——网络推广外包专员如何从站内优化中提升网站收录...
- C++[USACO06NOV] Fence Repair G合并果子
- 自学python 经验学习心得分享
- 2020级训练赛10.23
- JAVA小游戏黄金矿工
- JVM_12 垃圾回收3-垃圾回收器
- 盘点那些欺骗我感情的数学定理
- CSS:怎么样给背景图加透明度 opacity ?
- 央企招聘:中国航天科工集团2023校园招聘
- javafx 订单项目源码_终于找到一个JavaFx开发的东西,pdf阅读器。包括源代码
- comsol移动网格_comsol网格设置技巧,网格
- 【干货分享】一张图看懂收录与索引的区别
- 世界上最好的编程语言(没有绝对)
- Citrix Server 添加本地磁盘
- SQLite的使用场景