C51之定时器
2018-02-25 19:16
387 查看
/*
名称:C51之定时器
说明: 对于C51单片机来说,其内部有2个定时器,分别是T0和T1。它输入的时钟源是固定的,就是晶振输送的。当然它还可以作为计数器,统计外部输入的脉冲信号。
这个实验是定时器中断实验。对于定时器中断,这是属于中断的一种。使用它也需要配置先前所属的相关寄存器。不同的是,关于定时器中断,还需要配置一些其他与定时器相关的寄存器,如定时器方式寄存器(TMOD)、计数器TH、TL等。要注意一点的是,C51单片机的定时器可以工作在中断方式,也可以工作在查询方式。在本实验中,使用定时器0(C51有两个定时器),采用中断方式进行精确时间的显示。
*/
名称:C51之定时器
说明: 对于C51单片机来说,其内部有2个定时器,分别是T0和T1。它输入的时钟源是固定的,就是晶振输送的。当然它还可以作为计数器,统计外部输入的脉冲信号。
这个实验是定时器中断实验。对于定时器中断,这是属于中断的一种。使用它也需要配置先前所属的相关寄存器。不同的是,关于定时器中断,还需要配置一些其他与定时器相关的寄存器,如定时器方式寄存器(TMOD)、计数器TH、TL等。要注意一点的是,C51单片机的定时器可以工作在中断方式,也可以工作在查询方式。在本实验中,使用定时器0(C51有两个定时器),采用中断方式进行精确时间的显示。
*/
//定时器0中断初始化 void Interrupt_tint() { EA = 1; //开启总中断 ET0 = 1; //定时器0中断允许 TMOD = 0x02; //定时器0选择工作模式2:8位的自动装载模式 TH0 = 256 - 200; //赋初值,计数200,晶振12Mhz,溢出计时0.2ms TL0 = 256 - 200; TR0 = 1; //开启定时器0中断 } //中断服务函数 void time0() interrupt 1 { static long val = 0; if(++val >= 5000 ) //计数5000次,正好1s { val = 0; //计数归零 DealTime(); //处理时间信息 } } 其他的代码部分较为简单,不是重点。在此就不说了。
相关文章推荐
- 总结C51、STM32和S3C2440的时钟体系和定时器
- C51 手动计算定时器 中断简介
- C51单片机中断,寄存器,定时器,PWM原理,配置及使用
- C51 定时器 TL0=(65536-50000)%256是怎么推导出来的?
- 用变量给C51定时器赋初值导致定时器定时时间不准确的问题的解决办法
- C51单片机中断,寄存器,定时器,PWM原理,配置及使用
- 【C51】单片机定时器介绍
- C51-定时器/计数器
- C51 1秒定时器
- C51 定时器 TL0=(65536-50000)%256是怎么推导出来的?
- (C51学习四)外部中断和定时器中断
- C51 定时器Timer使用,及产生1ms系统Tick
- 【C51】同时使用串口与定时器
- 用Keil C51开发定时器/计数器
- 【C51】单片机定时器介绍
- Angular实现的简单定时器功能示例
- javascript定时器详解
- Qt学习 之 定时器
- FreeRtos软件定时器相关API函数
- 在Spring中使用JDK定时器实现调度任务