- UID
- 183332
- 性别
- 女
|
片子是8037,写的程序如下。目的是定时(1秒)控制一个发光二极管亮一次,但是在亮了11次后,EVM板上的6个二极管都复位(全亮)了,我原先在初始化程序里设置了六个管子是熄灭的。后来把时间改成5秒,结果亮了2次后,又复位了。也就是说在程序执行一定时间后就不执行了。请帮我找找问题所在吧。谢谢
/***********************************************
*功能:GPIOA0口驱动的发光二极管每个1秒钟闪烁一次
*芯片:8037
************************************************/
#include "MC56F803x.h"
#include "SUB.h"
/*函数名:delay()*/
/*形参:dtime */
/*作用:有效延时1ms */
void delay (unsigned int dtime)
{
unsigned int i;
for(;dtime>0;dtime--)
{
for(i=0;i<124;i++)
{
;
}
}
}
/*函数名:initgpioA() */
/*作用:初始化程序*/
void initgpioA ()
{
asm(bfclr #$0002,X:COP_CTRL);
asm(bfclr #$0001,X:GPIO_A_PEREN);
asm(bfclr #$0002,X:GPIO_A_PEREN);
asm(bfclr #$0004,X:GPIO_A_PEREN);
asm(bfclr #$0008,X:GPIO_A_PEREN);
asm(bfclr #$0010,X:GPIO_A_PEREN);
asm(bfclr #$0020,X:GPIO_A_PEREN);
asm(bfset #$0001,X:GPIO_A_DDIR);
asm(bfset #$0002,X:GPIO_A_DDIR);
asm(bfset #$0004,X:GPIO_A_DDIR);
asm(bfset #$0008,X:GPIO_A_DDIR);
asm(bfset #$0010,X:GPIO_A_DDIR);
asm(bfset #$0020,X:GPIO_A_DDIR);
asm(bfclr #$0001,X:GPIO_A_DATA);
asm(bfclr #$0002,X:GPIO_A_DATA);
asm(bfclr #$0004,X:GPIO_A_DATA);
asm(bfclr #$0008,X:GPIO_A_DATA);
asm(bfclr #$0010,X:GPIO_A_DATA);
asm(bfclr #$0020,X:GPIO_A_DATA);
}
/*函数名:main() */
/*作用:主程序*/
void main (void)
{
initgpioA ();
while(1)
{
asm(bfchg #$0001,X:GPIO_A_DATA);
delay(1000);
}
} |
|