首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

程序怎么了?DG128A

程序怎么了?DG128A

我用DG128A做的板子,用最简单的程序测试,结果老是跑到BGND里去。。出错!这是不是跟晶振信号较小有关?代码如下:
void delay(int p){
int i,j;
for( i=100; i>0; i--) {
for(j =p; j>0; j--) {
}
}
}

void Led_ctr(void){

PORTE = 0x00;
PK7 =0;
delay(1000);
//PE7 = 0;
PORTE = 0xff;
PK7 =1;
}

void main(void) {
int x;
int pt=0;
COPCTL = 0x08;
PEAR = 0x90;
DDRE = 0x9c;
DDRK = 0xff;
/* put your own code here */
EnableInterrupts;
//PE7 = 0;

for(;;) {
//PE7 = 1;
Led_ctr();
pt++;
x = pt;
} /* wait forever */
/* please make sure that you never leave this function */
}

每次执行到Led_ctr()程序就不往下执行了,从汇编窗口中就看到老是执行BGND
怎么回事啊?
我现在发现,把开中断那句去了,就不出现这种情况了,可是下进去,可以单步调试,灯亮灭也对,可让它直接运行灯却不闪。延迟应该也够长了。
看看IRQ的电平有没有拉高。
海纳百川  有容乃大
版主是让我在电路图上拉高IRQ脚么?我当作IO口用了。看了下,程序出错前IRQ脚是低的,当程序进入异常后,IRO脚还是低的。怎么解决呢?
是不是程序运行前,要把IRQ脚初始化成高?防止它低有效,进入中断?
芯片复位后的初时状态是开启IRQ中断的。所以应该将IRQ外部拉高,或者在开中断前将IRQ关闭。
海纳百川  有容乃大
的确,谢谢版主。。。。解决了,初次解除Freescale芯片。。。以后还要多多学习!
返回列表