求助:dsPIC单片机键盘ICD2调试没问题,烧写到板子上单独执行出问题

2020-02-09 09:37发布

RT,使用dsPIC30F5015。刚刚上手,从初始的I/O端口操作学习开始
编写如下程序
#include "p30f5015.h"
// Macros for Configuration Fuse Registers (copied from device header file):
_FOSC(CSW_FSCM_OFF & XT_PLL8);  //Set up for Crystal multiplied by 8x PLL
_FWDT(WDT_OFF);                 //Turn off the Watch-Dog Timer.
_FBORPOR(MCLR_EN & PWRT_OFF);   // Enable MCLR reset pin and turn off the power-up timers.
_FGS(CODE_PROT_OFF);            // Disable Code Protection


#define   S1        PORTBbits.RB15   //S1为按键
#define   STATUS    PORTCbits.RC14   //STATUS接到发光二极管的负端
#define   NOP( )  {__asm__ volatile ("nop");}

int main()
{
        INTCON1=0x0000;  //关闭所有中断
        INTCON2=0x0000;
       
        PORTC=0x4000;    //初始化RC端口
        NOP( );
        TRISC=0x0000;    //设置RC14为输出
        NOP( );


        while(1)
        {
                PORTB=0xffff;//初始化RB端口
                NOP( );
                TRISB=0xff00;//设置RB15为输入
                NOP( );
               
                STATUS=S1;
        }
        return 0;       
}

按理说不按键led亮,按键后led灭。用ICD2调试没问题,很正常,然而烧写到板子上后LED一直亮着,按键也不灭。已使用万用表测出按钮电平变化正常(不按时为高电平,按时为低电平,S1串接1k电阻到电源,并联0.1uF电容。)

使用RC13口代替RB15口一切正常。
望各位高手路过的指点小弟一下,不甚感激!
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。