最近用了个AVR的TINY25芯片,按照网上查的资料写的中断程序有问题,求大神指点!!
#include <iot25v.h>
#include <macros.h> //包含"位"操作头文件
#include <stdio.h> //标准输入输出头文件
#define STBOH PORTB|=(1<< PB3)
#define STBOL PORTB&=~(1<<PB3)
#pragma interrupt_handler Int0:2 //外部中断0中断函数声明
char edge;
/*******************************************
函数名称: Init_kb
功 能: 初始化PS2函数
参 数: 无
返回值 : 无
/********************************************/
void Init_kb()
{
MCUCR = 2; //设置INT0为下降沿触发中断
edge = 0; //0为下降沿中断标志,1为上升沿中断标志
DDRB&=~BIT(2); //配置中断管脚为输入
PORTB|=BIT(2); //使能中断管脚的上拉
//GIMSK|=BIT(6);
SREG|=BIT(7);//打开全局中断
GICR|=BIT(6);
}
void delay(unsigned char k)
{
unsigned char i;
for(i=0;i<k;i++)
;
}
/*******************************************
函数名称: Int0
功 能: 外部中断0的中断服务函数
参 数: 无
返回值 : 无
/********************************************/
void Int0(void)
{
if (!edge) // 如果是下降沿触发中断
{
STBOL;
MCUCR=3; //设置INT0为上升沿触发中断
edge=1; //设置上升沿中断标志
}
else //如果是上升沿触发中断
{
delay(2);
STBOH;
MCUCR=2; //设置INT0为下降沿触发中断
edge=0; //设置下降沿中断标志
}
}
/*******************************************
函数名称: main
功 能: ?
参 数: 无
返回值 : 无
/********************************************/
void main(void)
{
Init_kb(); //初始化
}
\iCCAvr\attiny\main.c(22): undeclared identifier `GICR'
C:\iccv7avr\bin\imakew.exe: Error code 1
C:\iccv7avr\bin\imakew.exe: 'main.o' removed.
Done: there are error(s). Exit code: 1. Fri Aug 17 08:34:31 2018 |