我调试GZ60 Timebase Module,32768分频中断工作正常,中断执行能回到主程序,128分频中断工作,但是主程序不正常,好像进入不了主循环。
会不会是DELAY()的执行周期大于Timebase 中断周期造成的?
我想用Timebase中断实现160微秒延时,8M晶振,可行吗?
请斑主和高手过目,先谢!
#include <hidef.h>
#include "derivative.h"
unsigned int Time;
void Delay(unsigned int n)
{
unsigned int stopTime;
stopTime = Time+n;
while (stopTime > Time);
}
void main(void) {
int i=0;
CONFIG2=0x09; //TBMCLKSEL=0
CONFIG1 =0x4B; //禁止看门狗
DDRF = 0xFF;
PTF = 0x00;
Time=0;
TBCR_TBIE =1;//2 基础定时器中断使能
TBCR_TACK =1;//3 清除中断标志
TBCR_TBR2 =0;//6 分频系数8192,1.024ms
TBCR_TBR1 =1;//5
TBCR_TBR0 =1;//4
TBCR_TBIF =1;//7 中断标志
TBCR_TBON =1;//0 启动定时器
EnableInterrupts;
for(;;) {
Delay(1);
PTF_PTF4=~PTF_PTF4;
PTF_PTF5=~PTF_PTF5;
PTF_PTF6=~PTF_PTF6;
PTF_PTF7=~PTF_PTF7;
}
}
void interrupt 17 TBM_ISR(void){
TBCR_TACK=1;
Time++;
if (Time>=65534)
{
Time=0;
}
}
欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/) | Powered by Discuz! 7.0.0 |