No.31939 作者:坦克无敌 邮件:tanke88@sohu.com ID:7812 登陆:24次 文章数:62篇 最后登陆IP:211.159.157.63 最后登陆:2003/12/15 21:33:22 注册:2002/12/17 9:57:00 财富:206 发帖时间:2003/5/25 13:45:31 发贴者IP:61.135.24.16 标题:坦克无敌:哪位熟悉80C196 的朋友能帮个忙,请教2个小问题,谢谢了 摘要:No.31939哪位熟悉80C196 的朋友能帮个忙,请教2个小问题,谢谢了 关于80c196 KC 以下问题,哪位熟悉196的朋友能帮个忙? 请问以下问题: 问题1: 80c196KC 的 Timer2 定时器 采用外部时钟,产生溢出中断。 资料上讲:Timer2 定时器产生溢出中断的向量是:0x2038 该中断申明表达式,到底怎样写? (1)#pragma interrupt (Timer2_isr=12) (2)#pragma interrupt (Timer2_isr=0x2038) (3)#pragma interrupt (Timer2_isr=28) 又有朋友说:2038h-----38h=56d 于是这里应该是 Timer2_isr=28 这里到底该是多少?我一直没有彻底搞明白? 因为:其他中断,书上都找到了明确的例子,所以也没有出现问题,例如: #pragma interrupt(ExtInt=7) 外部中断 表述正确,其序号确实为:7 #pragma interrupt( HSO=0x2006) HSO中断 表述正确,其向量确实为:2006 这样都对。我也没有仔细思考过,这是为什么? 那个地方,保证了着2种方式,都对? —————————————————————————————— 对于定时器2中断的以上3种声明,都编译通不过,提示: 目标文件地址错。 具体源程序如下: 程序目的: Timer2 定时器 采用外部时钟,Timer2随便搞个初值,例如0xF000,于是计量,够了FFFF, 产生溢出中断,在中断服务程序中,断点可以停住就行了。 #include <kc_sfrs.h> #include <kc_funcs.h> #pragma interrupt (Timer2_isr=12) /* Timer2 定时器*/ //#pragma interrupt (Timer2_isr=0x2038) /* Timer2 定时器*/ //#pragma interrupt (Timer2_isr=12) /* Timer2 定时器*/ /*以上这3种方式,都不行*/ void main() { unsigned int TempT2; wsr = 0x0; ioc0=0x02; /*Timer2 定时器 外部时钟 复位源 是:t2rest 不是:HSO.0*/ /*禁止外部复位源 每次写Timer2 复位*/ ioc1 |=0x08; /* 朋友提醒要加这一句,但不明白 */ //ioc3=0; /*Timer2 定时器 外部时钟*/ int_mask1=0x10; /*允许 Timer2 定时器 中断*/ timer2 = 0xF000; /*随便一个初值*/ while (1) { TempT2 = timer2; // 读取T2 ......
>>返回讨论的主题
|