打印

MPLAB编译出现诡异现象 基于8位PIC单片机

[复制链接]
1475|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
kagaobin|  楼主 | 2012-12-20 09:59 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
基于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;
   
}

相关帖子

沙发
kagaobin|  楼主 | 2012-12-21 15:36 | 只看该作者
下载了MAPLAB  8.88 一切正常了。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:灵魂与工具的平衡

4

主题

143

帖子

1

粉丝