PIC16f767单片机在中断程序里怎么不能调用函数?

2020-02-08 09:25发布

/********************************************************************************************
* 实验四:   外部中断实验
* CPU型号: PIC16F877A
* 晶振:    4MHz
* 说明:     用MPLAB IDE V8。53       HI-TECH PICC编译
* 作    者:MCU.2000
* 日    期:2009年8月8号
*********************************************************************************************/
//#include <pic.h>        //调用头文件
#include <pic1687x.h>
//__CONFIG(0x3F32); //芯片配置字
//__CONFIG(HS&UNPROTECT&PWRTEN&BORDIS&WDTDIS);//芯片配置字
//__CONFIG(0x3FFD&0x3FFF&0x3FF7&0x3FBF&0x3FFB);//芯片配置字

#define        uchar  unsigned        char
#define uint   unsigned int
void delay(uchar a,uchar i);
void interrupt INT(void);
uchar temp;
void main (void)
{
     OPTION=0X00;
     TRISA=0Xc0;   //RA0设为输出(D301指示进入中断)

     INTE=1;       //INT外部中断允许位
     GIE=1;         //开放全局中断
     PEIE=1;       //使能外部中断
     RA0=1;        //LED灭
     
     while(1)      //等待中断
     {
        // delay(12,34);///////////////////在这里加上这个函数,就编译出错。
           。
           。
            。
     }
}
//中断函数
void interrupt INT(void)
{
  if(INTE && INTCON)   //判断是否为外部中断
   {
        INTF=0;        //清除中断标志
        temp=~temp;
        PORTA=temp;         //点亮LED D301     
        delay(255,255);
        delay(255,255);
   }
}  

////////////延时子函数/////////////////
void delay(uchar a,uchar i)
{       
    while(--a)
    while(--i);
}


(原文件名:untitled.JPG)


要向大侠们请教的问题是:1。主程序里while()循环语句里加上delay(12,34);函数,为什么会编译出错,出错如图。
                         2。有什么方法可以解决这个这人问题。。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
11条回答
headwolf_83
2020-02-09 13:46
根据PICC的规定,中断和主函数不能调用同样的子函数,具体解释,请查张明锋的《PIC单片机入门与实战》C语言部分,愿意看英文的C编译器手册也可以。

一周热门 更多>