无法调用第二个功能(PIC XC16)

问题描述 投票:0回答:1

我在 PIC24F16KA102 上使用 MPLABX XC16,并尝试从 PIC16 和 mpasm 迁移。

对一些 LED 进行排序的简单循环应该测试每个 LED 开/关之间的开关,然后如果开关未闭合则分支到

GoSleep

据我所知,

SwitchTest
函数从未被调用过。

void main(void) {
    AD1PCFG = 0xFFFF;           // All ports are digital
    TRISA = 0x0041;             // PORTA bit 0 and 6 input (port 0 = Select Button, port 6 = Wake INT) 
    __builtin_nop();
    TRISB = 0x0000;             // PORTB bit all outputs 
    __builtin_nop();
   
    while (1) {
        SwitchTest();           // if the switch is down cycle the LED's

        led_step = 0b11000001;  // and leave the last one selected on for 1 sec
        Display = led_step;     // mimic the selection in binary on LED's 5-7
        LED1 = LED_ON;          // turn on LED1 
        __delay_ms(2000);
        LED1 = LED_OFF;         // turn off LED1
        SwitchTest();
        
        led_step = 0b10100010;
        Display = led_step;
        LED2 = LED_ON;          // turn on LED2 
        __delay_ms(2000);
        LED2 = LED_OFF;         // turn off LED2
    }
}

void SwitchTest(void) 
{
    if (PORTAbits.RA0 == 0) 
    {                            // Is the Status Button pressed (low = 0)
        __delay_ms(25);
        if (PORTAbits.RA0 == 0)
        {
            return;              // Yes, resume main loop
        }
    }
    else                         // No, Sleep
    {
        GoSleep();    
    }
}

按下/释放开关时,RA0 上的外部上拉电阻和引脚会正确切换。

尝试使用正确连接的 PICKit 进行调试失败(指出位设置不正确,但不显示哪些位),尽管运行了代码(在 MPLABX 中),但当 PICKit/MPLABX 断开且外部电源断开时,该 PIC 不会保留代码已应用。

c pic
1个回答
0
投票

我刚刚阅读了该 PIC 的勘误表,似乎 RA0 和 RB0 以及其他功能存在重大问题。刚刚用 RA1 进行了测试,它似乎有效。我尝试迁移到更现代的代码和 PIC 是正确的。

© www.soinside.com 2019 - 2024. All rights reserved.