//编译器:WINAVR20050214
#include <avr/io.h> #include <avr/iom64.h> #include <avr/delay.h> #include <avr/signal.h> #include <avr/interrupt.h> #include <math.h> #include <ctype.h> volatile unsigned char clk_num;
SIGNAL(SIG_INTERRUPT3) //INT0中断服务程序 { cli(); clk_num++; *hp=clk_num; if(clk_num>250) {clk_num=0;} sei();
} int main(void) { MCUCR=0X00; EIMSK=0X00; EICRA=0Xff;//上升沿触发中断 EIMSK=0X08;//只打开外部中断3 clk_num=0; while(1) { 应用处理程序 } } 我现在的问题是, 1:虽然我把外部中断3设置成上升沿触发模式了,可是调试中发现外部中断3还是低电平触发。 2:clk_num :这个变量在我的应用处理程序中没有做修改,只是读取该参数,可是我发现每次进了外部中断服务程序对这个变量做了处理后,在主程序中读取该变量,这个变量没有变化。还是0 3:我的外部中断程序可以进去,每次进去后对clk_num的操作是正常的,该变量是可以变化的,就是每次退出外部中断处理程序后,该变量还是0
|