DSPIC30F不仿真时读到的IO口电平一直是0

2019-03-25 18:55发布

最近在用DSPIC30F做一项目,其中用到了独立键盘,UART和CAN,还有一个模拟IIC按口的240*128的点阵,
遇到一个很奇怪的问题,如果我进入仿真状态,程序可以正常运行,读到PB口的值为0x3f(PB0~PB5接了6个按键,上拉),按下后相应位为0,UART和CAN和点阵也都可以正常使用,但我退出仿真后UART和CAN可以正常使用,接键读到的值一直是0,可是我明明是上拉的啊,万用表测量也是5V啊,屏也不亮了

IMG_20161205_092558.jpg

#include<p30f4011.h>
#include "uart.h"
#include "type.h"

_FOSC(CSW_FSCM_OFF&XT_PLL4);
_FWDT(WDT_OFF);
_FBORPOR(PBOR_OFF&MCLR_EN);
_FGS(CODE_PROT_OFF);

这是按键的初始化
void Key_Init()
{
//    TRISB |= 0x3f;      //将RB0~RB5设为输入
    TRISBbits.TRISB0 = 1;
    TRISBbits.TRISB1 = 1;
    TRISBbits.TRISB2 = 1;
    TRISBbits.TRISB3 = 1;
    TRISBbits.TRISB4 = 1;
    TRISBbits.TRISB5 = 1;
}

//main函数
int main(void)
{
    uint16_t key_value;
    TRISF=0x0000;
    Key_Init();
    Uart1_Init(6000000, 9600);
    Uart1_Send(0x12);//可以正常打印,说明程序已经运行了
    while(1)
    {     
        key_value = PORTB;        //读一次端口的值
        Uart1_Send(PORTB);//不仿真时一直打印0x00,仿真就打印正确值
        delayms(1000);
    }
}

我用MPLAB X IDE v3.45和MPLAB IDE都试过,结果是一样的,仿真就可以读到按键值,不仿真就读不到
ide.png

不仿真时确定程序已经运行了,因为串口和CAN口可以正常收发数据
我把我的程序给同事,同事下载到他的板子里也是这样,就明应该是程序的问题
第一次用dspic,搞了几天了都没搞明白是怎么回事,
附件中是完整的工程,有没有遇到过这种问题的大神,求解答

此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。