- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第七章应用范例–中断程式
第七章 应用范例 – 中断程式
本章介绍以C 语言程式处理微控制器的中断事件. 第四章 4.7 中断服务函式 中说明如何
撰写中断服务函式以及注意事项. 必须遵照下列的规则来定义中断服务函式
→ 函式的返回值型态必须是 void interrupt
→ 函式不可有参数 (argument)
→ 设定中断服务函式的中断向量 (interrupt vector) 使用 @ 指定中断向量
→ 最好不要从程式的其他地方呼叫中断服务函式
→ 不要在中断服务函式内做开启本中断功能 (interrupt reentrance) 相同的中断不要重复进入
格式
void interrupt ISR_Timer(void) @ 0x08
{
}
// 定义 : 返回值的型态, 没有参数, 设定中断向量为 0x08
C 编译器会根据中断服务函式对暂存器的需要, 在进入中断服务函式后, 将这些暂存器的内
容储存. 等执行完中断服务函式的工作后, 再恢复先前所储存的暂存器内容. 最后回要被中
断的地方继续执行, 同时中断功能也打开, 允许中断产生. 如果为了节省程式编码的大小, 在
中断服务函式中也可不要保存某些暂存器, 例如 BP, MP0, MP1.可参考第四章的 4.9 节关于
#pragma 的说明及使用. 在中断服务函式中不要将自身的中断功能再打开, 避免重复进入同一
个中断服务函式. 但是可以打开其他的中断功能, 只是要特别注意两个中断服务函式有无呼叫
到相同函式的状态, 以致发生变数共用造成资料错误的风险.
7.1. 用时钟控制 LED 的亮与灭
7.1.1 目的
本范例是使用时钟控制 LED 亮与灭的时间. 亮灭的时间相同并且固定. 是以C语言
撰写中断服务函式.
盛群半导体股份有限公司
HOLTEK SEMICONDUCTOR INC
C50微电脑工具事业处部 撰 写 人 :
文 件 编 号 程式语言及应用范例(三) 版 别 1.10 日 期 2007/11/14
第
103
页 共 189 页
7.1.2 周边元件
使用单颗 LED 接到微控制器 HT48R10A-1 的埠 A, PA0 引脚
需要使用微控制器 HT48R10A-1 的暂存器 INTC, TMRC 与 TMR 等, 定义如下
TMRC (Timer Control Register) 时钟控制暂存器控制时钟的功能与启动,
TMR暂存器??储存时钟启始数值的地方. 当写入TMR暂存器时,也会存入preload
暂存器. 若此时时钟是在停止状态中, 则此数值会被写入时钟计数器(timer counter).
每当时钟被启动, 它便将时钟计数器的数值往上加, 一直加到 FF, 之后便发生时钟
满溢(timer overflow). 这时, 下列的事情会发生
→ 产生中断讯号 (interrupt signal) 盛群半导体股份有限公司
HOLTEK SEMICONDUCTOR INC
C50微电脑工具事业处部 撰 写 人 :
文 件 编 号 程式语言及应用范例(三) 版 别 1.10 日 期 2007/11/14
第
104
页 共 189 页
→ 将 preload 暂存器中的数值重新载入时钟计数器, 并且继续往上计数
如果需要时钟在每 count 个 clock 时产生满溢, 可将 256 – count 写入 TMR
暂存器. 如需要正确的时间, 则需要设定根据系统频率设定TMRC暂存器中的
PSC0~PSC2. 计算出对应的 count 并将 256 – count 写入 TMR 暂存
文档评论(0)