标题:
[求助]HCS08定时器中断问题
[打印本页]
作者:
isGray_503
时间:
2007-11-28 21:38
标题:
[求助]HCS08定时器中断问题
我用的是HCSO8,想要利用定时器TPM,使LED闪烁。
我的程序如下,连接开发板后,没反应,不知道什么地方出问题了,请斑竹和各位高手指教,小弟不甚感激。
#include
/* for EnableInterrupts macro */
#include "derivative.h" /* include peripheral declarations */
/*********************变量和函数定义*******************************/
void TIMER_INIT(void);
void MCU_INIT(void);
/************************主函数**********************************/
void main(void) {
MCU_INIT();
TIMER_INIT();
EnableInterrupts; /* enable interrupts */
/* include your code here */
for(;;) {
__RESET_WATCHDOG(); /* feeds the dog */
} /* loop forever */
/* please make sure that you never leave main */
}
/*************************定时器中断***************************/
interrupt 7 void TPM_INTERRUPT(void) {
TPMSC_TOF = 0;
PTBD_PTBD7=~PTBD_PTBD7; // toggle Port
PTBD_PTBD6=~PTBD_PTBD6;
}
/************************初始化函数****************************/
void TIMER_INIT(void) {
PTBDD_PTBDD7 = 1; //PTBD7,PTBD6设置为输出,连到LED1,LED2
PTBDD_PTBDD6 = 1;
TPMSC = 0X4E;
//TPMMOD =
TPMMODH = 0XF4;//设置模值
TPMMODL = 0X24;
}
/*********************MCU初始化函数*****************************************/
void MCU_INIT(void) {
ICSTRM = 0X59;//OSC = 32.768*8kHz
ICSC1 = 0X1C;
ICSC2_BDIV1 = 1;//8分频
ICSC2_BDIV0 = 1;
SOPT1=0x42;
SOPT2=0x00;
}
作者:
strongchen
时间:
2007-11-29 10:10
设置一下断点,看看有没有进过中断?中断矢量地址对不对?
作者:
isGray_503
时间:
2007-11-29 20:19
辛苦了,,我试试。
作者:
isGray_503
时间:
2007-12-4 20:44
请教斑竹,我找了一个例子程序,连接后,LED1,LED2亮起,但不会闪烁,而且,当我将其复制到我写的程序时,LED1,LED2却不会亮,是什么原因呢,,,,程序如下:
/* TIMER模块例程
HCS908_QG8 单片机开发板
实验介绍:
本程序是TIMER模模块的例程,所用资源为单片机模定时器MTIM,
所接器件为LED灯,其中D2与PTA0,D3与PTA1相连接!
确定你开发板上拨码开关JP4(图片上的9)的1、2位处于on,
而其他位处于远离on!
实验现象:
LED指示灯按照你你所设定的定时器周期闪烁!
author:QGL
any question mail me:)
libing.qu@free-tech.com.cn
*/
/*****************头文件****************************************/
#include
/* for EnableInterrupts macro */
#include "derivative.h" /* include peripheral declarations */
/*********************变量和函数定义****************************/
void TIMER_INIT(void);
void MCU_INIT(void);
/*********************主函数************************************/
void main(void) {
MCU_INIT();
TIMER_INIT();
EnableInterrupts; /* enable interrupts */
/* include your code here */
for(;;) {
__RESET_WATCHDOG(); /* feeds the dog */
} /* loop forever */
/* please make sure that you never leave main */
}
/******************定时器中断***************************************/
interrupt 12 void MTIM_ISR(void) {
MTIMSC_TOF=0; // clear TOF
PTBD_PTBD7=~PTBD_PTBD7; // toggle Port
PTBD_PTBD6=~PTBD_PTBD6;
} /**/
/*******************初始化函数****************************************/
void TIMER_INIT(void) {
ICSC2_BDIV = 3;
PTBDD_PTBDD7 = 1; //PTA7,PTA6设置为输出
PTBDD_PTBDD6= 1;
MTIMCLK_PS = 8; //时钟频率/256
MTIMCLK_CLKS = 0; //定时器时钟为总线时钟
MTIMMOD = 252; //设置模数
MTIMSC = 0x60; //使能定时器中断
}
/***************************MCU初始化函数*******************************/
void MCU_INIT(void){
ICSC1=0x04;
ICSC2=0x40;
ICSTRM=0xa8;
SOPT1=0x42;
SOPT2=0x00;
}
作者:
strongchen
时间:
2007-12-5 10:24
清TOF的动作应该是先读MTIMSC,然后对TOF写0。试试看。再检查一下中断矢量地址是否正确。
作者:
isGray_503
时间:
2007-12-5 12:43
、、我试了下,好像还是不行!!应该是中断没有产生,、但中断向量地址应该是正确的,我查了下表,有关MTIM的向量地址号只有12.对中断使用了向量号,应该不需要再在.prm文件中修改什么了吧?
作者:
strongchen
时间:
2007-12-5 17:08
把整个project打包贴出来看看。
作者:
isGray_503
时间:
2007-12-6 20:57
project已上传,辛苦斑竹了。。。。
作者:
strongchen
时间:
2007-12-7 09:53
并没有上传。
作者:
isGray_503
时间:
2007-12-7 19:37
系统提示我已经上传了,,我把它们贴出来好了。
derivative.h
/*
* Note: This file is recreated by the project wizard whenever the MCU is
* changed and should not be edited by hand
*/
/* Include the derivative-specific header file */
#include
作者:
isGray_503
时间:
2007-12-7 19:39
#include
作者:
isGray_503
时间:
2007-12-7 19:52
http://www.myhcs08.com/downmore.aspx?t=资料下载-8位单片机,,QG8DEMO学习板例程2
还是麻烦斑竹亲自下载,有些东西在帖子上发不出去。
欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/)
Powered by Discuz! 7.0.0