微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 第四节:累计定时中断次数使LED灯闪烁

第四节:累计定时中断次数使LED灯闪烁

时间:11-22 来源:互联网 点击:

) //第一区 初始化单片机

{

/* 注释四:

* 单片机有几个定时器,每个定时器又有几种工作方式,

* 那么多种变化,我们记不了那么多,怎么办?

* 大家记住鸿哥的话,无论一个单片机有多少内置资源,

* 我们做系统框架的,只需要一个定时器,一种工作方式。

* 开定时器越多这个系统越不好。需要哪种定时工作方式呢?

* 就需要响应定时中断后重装一下初始值继续跑那种。

* 在51单片机中就是工作方式1。其它的工作方式很少项目能用到。

*/

TMOD=0x01; //设置定时器0为工作方式1

/* 注释五:

* 装定时器的初始值,就像一个水桶里装的水。如果这个桶是空桶,那么想

* 把这个桶灌满水的时间就很长,如果是里面已经装了大半的水,那么想

* 把这个桶灌满水的时间就相对比较短。也就是定时器初始值越小,产生一次

* 定时中断的时间就越长。如果初始值太小了,每次产生定时中断

* 的时间分辨率太粗,如果初始值太大了,虽然每次产生定时中断的时间分辨率很细,

* 但是太频繁的产生中断,不但会影响主函数main()的执行效率,而且累记中断次数

* 的时间误差也会很大。凭鸿哥多年的江湖经验,

* 我觉得最大初始值减去2000是比较好的经验值。当然,大一点小一点没关系。不要走

* 两个极端就行。

*/

TH0=0xf8; //重装初始值(65535-2000)=63535=0xf82f

TL0=0x2f;

led_dr=0; //LED灭

}

void initial_peripheral() //第二区 初始化外围

{

EA=1; //开总中断

ET0=1; //允许定时中断

TR0=1; //启动定时中断

}

总结陈词:

本节程序麻雀虽小五脏俱全。在本节中已经展示了我最完整的实战程序框架。

本节程序只有一个LED灯闪烁的单任务,如果要多增加一个任务来并行处理,该怎么办?

欲知详情,请听下回分解-----蜂鸣器的驱动程序。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top