|
用的2407,主程序如下:
main()
{
disable();
initial();
pwm_initial();
calu();
enable();
*EVAIMRA=*EVAIMRA | 0X0200; /*使能定时器1下溢中断*/
*T1CON=*T1CON|0X0040; /*开启定时器1*/
while(1)
{
asm(\"nop\" ; /*等待TIMER1下溢中断*/
}
}
硬件仿真时发现,程序只要一运行到calu()中的Ua、Ub处时,就又自动开始重头运行,calu()子程序如下,INITIAL和agg_add都是在程序开头#define了
#define ang_add 2*3.1415926/200
#define INITIAL 0
void calu()
{
int i;
for(i=0;i<200;i++)
{
Ua=m*cos(INITIAL+i*ang_add);
Ub=m*sin(INITIAL+i*ang_add);
}
}
是不是我的写法有问题啊?我在initial()中已经将看门狗用下面语句屏蔽了,应该不是看门狗的问题吧。baidu、goole了下,也没找到好的解决办法,请大侠们赐教。
*WDCR=0X06F; /*禁止看门狗*/
|
|