智能车制作
标题:
大家帮忙看下这个外部中断!或者发给我一个外部中断的例程,谢谢了!
[打印本页]
作者:
riyakiss
时间:
2009-5-12 18:11
标题:
大家帮忙看下这个外部中断!或者发给我一个外部中断的例程,谢谢了!
本帖最后由 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++);
}
}
作者:
riyakiss
时间:
2009-5-12 20:43
只能自己先顶一个了,难道没有人写过外部中断吗!!!
作者:
jianghaitaoo
时间:
2009-5-13 16:39
把开关去了,直接用导线接GND和外部中断引脚,试试看有什么结果。我用的是凌阳的61板,不过和你这个差不多的。这个开关对我来说不懂,哎,知晓的搞些简单的程序。我一点电路知识都没有啊。好在我是在程序组。
作者:
riyakiss
时间:
2009-5-13 18:40
我先用过你那种方案,直接把导线连起来,但那个样子,系统会更加不稳定,想问下,你那边有类似的外部中断程序吗,要是有的话,能否给我一个参考下,万分感谢了。
作者:
TAOBINGJUN
时间:
2012-4-16 16:24
有 INTCR 这个寄存器么?编译都出错了
欢迎光临 智能车制作 (http://dns.znczz.com/)
Powered by Discuz! X3.2