智能车制作
标题:
新手任务~~并问个小问题~~~
[打印本页]
作者:
duan36
时间:
2011-7-30 20:00
标题:
新手任务~~并问个小问题~~~
想利用ECT的输出比较实现定时中断,写了如下代码
#include <hidef.h> /* common defines and macros */
#include "derivative.h" /* derivative-specific definitions */
unsigned int m = 0;
unsigned int n = 0;
void PLL_Init(void)
{
CLKSEL = 0x7F;
}
void ECT0_Init(void)
{
TIOS = 0x01;//定时通道0使能输出比较
TC0 = 0x007D;//比较值为125
TCTL2 = 0x02;//其他七路与定时器断开,0通道输出清零
TSCR2 = 0x86;//使能溢出计数器中断,禁止计数器比较后匹配复位,64分频
TSCR1 = 0x80;//使能计数器
TIE = 0x01;//通道0输出比较中断使能
}
void PORT_Init(void)
{
DDRA = 0x01;
PORTA = 0x00;
}
void main(void)
{
PLL_Init();
ECT0_Init();
PORT_Init();
EnableInterrupts;
for(;;) {
_FEED_COP(); /* feeds the dog */
} /* loop forever */
}
#pragma CODE_SEG NON_BANKED
void interrupt 8 Timer0_ISR(void)
{
TFLG1_C0F = 1;//清中断
m = TCNT;//此操作后TC0被自动清0
TC0 = m + 125;
n ++;
if(n < 500)
{
PORTA = 0x01;
}
else if((n > 500)&&(n < 1000))
{
PORTA = 0x00;
}
else n = 0;
}
单步调试运行正确,PA0的小灯闪烁。连续运行时出现大量BGND汇编命令(back ground mode后台调试模式),该命令相当于软件的程序断点,使得程序无法连续运行,原因不明,求解
欢迎光临 智能车制作 (http://111.231.132.190/)
Powered by Discuz! X3.2