第6节 中断程序举例
推荐给好友
打印
加入收藏
更新于2008-09-05 21:21:08

本节将通过具体例子来说明8FX 系列微控制器中断的操作过程。这里我们使用一个16 位重载定时器实现LED 从0 到9 循环亮,计数重载值为1.5 秒。当计数到1.5 秒就产生一个中断信号,转而处理中断处理程序。
首先在vector.c 中对终端控制寄存器初始化,并声明中断函数原型如图5-6,5-7 所示。

点击查看图片

点击查看图片


下面就是main.c 函数文件的内容:
#include "mb95100.h"
#define SEG_A 0xFE
#define SEG_B 0xFD
#define SEG_C 0xFB

#define SEG_D 0xF7
#define SEG_E 0xEF
#define SEG_F 0xDF
#define SEG_G 0xBF
#define SEG_DP 0x7F
#define SEG_0 SEG_A & SEG_B & SEG_C & SEG_D & SEG_E & SEG_F
#define SEG_1 SEG_B & SEG_C
#define SEG_2 SEG_A & SEG_B & SEG_D & SEG_E & SEG_G
#define SEG_3 SEG_A & SEG_B & SEG_C & SEG_D & SEG_G
#define SEG_4 SEG_B & SEG_C & SEG_F & SEG_G
#define SEG_5 SEG_A & SEG_C & SEG_D & SEG_F & SEG_G
#define SEG_6 SEG_A & SEG_C & SEG_D & SEG_E & SEG_F & SEG_G
#define SEG_7 SEG_A & SEG_B & SEG_C
#define SEG_8 SEG_A & SEG_B & SEG_C & SEG_D & SEG_E & SEG_F & SEG_G
#define SEG_9 SEG_A & SEG_B & SEG_C & SEG_D & SEG_F & SEG_G
const unsigned char seg_display[12] = { SEG_0, SEG_1, SEG_2, SEG_3, SEG_4, SEG_5, SEG_6, SEG_7, SEG_8, SEG_9, 0xff, 0x00 };
// 初始化设置LED
/*****************************************************************************/
/*主程序部分*/
/*****************************************************************************/
char counter;
void main(void)
{ PDR0 = 0xff;
// Port 0:
DDR0 = 0xff; // 7-Segment display (all segments off) 7 段LED 显示输出口
// Initialise Reload-Timer
TMRLR0 = 46874; // 设置重载值: (46874+1) * 3.2us = 150ms
TMCSR0 = 0x285B; // 在 10 MHz 状态工作时钟为 3.2us, 重载模式, IRQ 使能,输出使能
// Application Start 中断设置,应用功能开始
counter = 0;
InitIrqLevels(); // allow all levels
__EI(); // globaly enable interrupts

while(1)
{
asm("\tNOP"); // do nothing, 7-Segment counter is controlled by the Reload-Timer
}
}
/*****************************************************************************/
/*Interrupts 中断子程序,使LED 循环显示 */
/*****************************************************************************/
__interrupt void IRQ_ReloadTimer0 (void)
{
PDR0 = seg_display[counter++];
if (counter == 10)
counter = 0; // 循环显示
TMCSRL0_UF = 0; // 清中断位
}

 

上一节                    下一节


相关链接


 
关于我们 | 诚邀加盟 | 客户服务 | 相关法律 | 网站地图 | 友情链接 | 服务信箱:service@eefocus.com
© 2006 与非门科技信息咨询(北京)有限公司 All Rights Reserved.