我调试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; } }
|