中级会员
积分 316
威望 218
贡献 50
兑换币 24
注册时间 2009-5-8
在线时间 24 小时
1 贡献
本帖最后由 riyakiss 于 2009-5-12 20:17 编辑
下面是我的源代码,实现的就是利用外部中断IRP,以下降沿触发的方式,是B口的电平反复反向。IRQ的电平变化,我是利用将GND和PE0之间用一单刀双置开关连接。通过拨动开关,来改变PE0引脚的电平。
功能:将开关从一侧拨到另一侧时,使PE0和GND导通,产生下降沿,从而使中断触发,B口电平全部反向,但是遇到了问题:每次电平反向了两次。我用Debug调试的话,都是只反向一次,怎么回事呢?调试一句句执行语句都没有问题,但是整体运行却有问题。
下面是我的代码,功能不复杂,就是简单的外部中断,希望大家耐烦看下,能帮我解决这个问题:
注:我用的是清华的那块DG128的板子。一般做智能车的同学都有用过吧!
#include<hidef.h>
#include<mc9s12dg128.h>
void Delay();
void main(void)
{
DDRB = 0xff; // PTB as output
PORTB = 0xff; // LEDs off
INTCR = 0xC0;
EnableInterrupts;
for (;;);
}
#pragma CODE_SEG NON_BANKED // Define Program ROM and Interrupt Vectors,in Non_Bank Area
#pragma TRAP_PROC // Define SegMent of Interrupt Serve Entrance
void OutINT(void)
{
DisableInterrupts;
Delay();
PORTB = ~PORTB;
Delay();
EnableInterrupts;
}
#pragma CODE_SEG DEFAULT // Define Program ROM and Interrupt Vectors,Return Default Area
void Delay(void)
{
int i,j;
for(i = 0; i<1000; i++)
{
for(j = 0; j<1000; j++);
}
}
我来回答
附件:
您需要 登录 才可以下载或查看,没有帐号?注册