首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

帮我看看这断代码中断为什么进不去啊?

帮我看看这断代码中断为什么进不去啊?

#include /* common defines and macros */
#include /* derivative information */
#pragma LINK_INFO DERIVATIVE "mc9s12dg128b"


void main(void) {


DDRB=0XFF;//PORTB设定为输出
PORTB=0X7e;//PORTB初始化为全高 试验显示 运行时一直只有两边的两个灯在亮 可见程序没有进入中断

TSCR1=0x90;//定时器使能且TFLG1能被自动清除

TSCR2=0x07;//定时器预分频系数设定 Prescale Factor=128
TIE=0x01;//定时器通道0使能
TIOS_IOS0=1;//定时器通道0设定为输出比较

EnableInterrupts;//开中断

for(;;) {} /* wait forever */
/* please make sure that you never leave this function */
}




/*
***************************************************************************
*语法格式:interrupt void Timer(void)
*实现功能ORTB小灯的闪烁
*程序描述:
**************************************************************************/
void interrupt 8 Timer(void) //8为定时器通道0的中断标号
{
DisableInterrupts; //关中断
TC0=TCNT+19360;//F = Fosc / (TC*128) 中断频率设定
PORTB=0xef;
}
哪位朋友懂,请帮帮忙吧,我对这个单片机也步熟悉
单片机是MC9S12DG128,这块试验板是参加飞思卡尔智能车 指定的那块
1. 中断函数必须放入非分页地址;
2. 在中断函数中必须清中断标志;
3. 检查一下中断矢量地址与中断号是否对应正确。
海纳百川  有容乃大
中断号上对的,不过ECT初使化时没有加上比较的值,
加:TC0 = ?;就应该可以了,再试试!
个人BLOG:http://blog.eccn.com/u/107300/index.htm
还是不行啊,中断前加#pragma CODE_SEG __NEAR_SEG NON_BANKED 了初始化时加了TC0=0xff;了
谢谢 版主,谢谢 康桥人
http://bbs.chinaecnet.com/uploadImages/ECT_output.rar
有个中断的程序,正好对应你那个!
个人BLOG:http://blog.eccn.com/u/107300/index.htm
还是不好用。我用的是板子自带的监控程序把程序下载到Flash中的,能不能是这个原因呢?
自带的监控程序?那它是否将中断矢量区重新映射了呢?
海纳百川  有容乃大
是啊,刚才看书上介绍说 监控程序将中断向量表中58个中断向量从 FF8C-FFFD移到EF8C--EFFF
所以你就不能用中断号的格式定义中断矢量地址了,而应该在PRM文件中定义中断矢量地址,用这样的格式:

VECTOR ADDRESS 0xEF8C FirstISR
海纳百川  有容乃大
这次 把监控程序擦除了,程序直接下载到单片机里,这下好使了
再次谢谢版主,谢谢康桥人,谢谢你门的热心帮助
建议用BDM下载,那样方便很多,
BDM使用方法:http://blog.eccn.com/u/107300/archives/2008/5318.htm
个人BLOG:http://blog.eccn.com/u/107300/index.htm
返回列表