基于pic16f877A单片机,用MPLAB编写。编写的子程序(延时程序或者空语句),不管主程序有没有调用,都会出现程序跑飞的现象(端口呈高阻抗状态),软件仿真不断报错(PIC16 CORE PC=0x000E.stack underflow executing RETFIE instrucion.),实际搭建的硬件电路板也不工作。而将子程序屏蔽掉后,中断工作正常(B端口闪烁)。同样若将中断屏蔽掉,也正常。1,如果说是因为现场保护没做好的问题,但在没有调用的情况下,程序也不应该跑飞才对,2,或者说还是编译器本身出现了未知问题需要重装软件?
贴出简化后源程序如下
#include<pic.h>
#define uchar unsigned char
#define uint unsigned int
#define LED0 RB0
#define LED1 RB1
#define LED2 RB2
#define LED3 RB3
#define LED4 RB4
#define LED5 RB5
#define LED6 RB6
__CONFIG(XT&WDTDIS&LVPDIS);
/*************函数声明**************************/
void INITIAL(void);
void interrupt aiie(void);
/*
void INITIAL()
{
;
}
*/
void main()
{
TRISB=0x00; //RB设置为输出
TRISD=0x00; //RD设置为输出
PORTD=0xff; //初始化为高
TMR1L=0;
TMR1H=0;
PORTB=0xff; //初始化为高
OPTION=0B10000101;//TIMERO 对内部时钟计数,预分频64
INTCON=0B10100000;//运行TMR0溢出中断
while(1);
}
void interrupt aiie(void)
{
T0IF=0;TMR0=0;PORTB=~PORTB;
}
|