| 
 
| 基于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;
 
 }
 
 
 | 
 |