新闻  |   论坛  |   博客  |   在线研讨会
小谈C8051F020定时器中断使用
patton | 2008-05-07 16:46:14    阅读:4882   发布文章

C8051F020内部有5 个计数器/定时器:其中三个16 位计数器/定时器与标准8051 中的计数器/定时器兼容,还有两个16 位自动重装载定时器可用于ADC、SMBus、UART1 或作为通用定时器使用。这些计数器/定时器可以用于测量时间间隔,对外部事件计数或产生周期性的中断请求。

将定时器与中断系统的结合将给我们编程带来很大的帮助,程序条理性强易编写易读。

下面我将利用可装载的计数器中断程序编写流程总结如下:


一:定时器初始化


1:停止定时器,清中断溢出位。

通过设置SFR中TMRnCN,停止将TMRnCN^2置0,清中断溢出位TMRnCN^7。

2:计数值和装载值的设置

通过SFR中TMRnL,TMRnH,TMRnRLL, TMRnRLH设置。

3:打开中断系统允许位

通过SFR中的IE,EIE1,EIE2实现,将对应定时中断位置1即可允许。

4:打开定时器

通过TMRnCN^2置1启动。


二:中断部分


1:打开全局中断

将IE^7置1。一般将该部分写在定时器初始化前面。

2:中断服务程序(ISR)

以C语言为例

void ADD (void) interrupt N

{ 具体程序 }


其中ADD位程序名,N为中断优先级(具体详见相应MCU说明书)


注意:由于定时器溢出位不能硬件清零,需要在中断程序编写清零程序,如所使用定时器为非重载,可以在中断程序中编写计数值的初始化。

 

大家可以编写简单的程序体会其中的知识!OVER!

*博客内容为网友个人发布,仅代表博主个人观点,如有侵权请联系工作人员删除。

参与讨论
登录后参与讨论
推荐文章
最近访客