You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MPLAB XC8编译器中_delay_ms函数无法编译的问题求助

问题解决:MPLAB中PIC16F628A的_delay_ms编译错误

核心原因

MikroC的_delay_ms()是其专属封装的延迟函数,而MPLAB配套的XC8编译器使用的是双下划线开头的官方延迟宏__delay_ms(),单下划线版本在XC8环境中不存在,因此会触发编译错误。

修复步骤

  1. 替换延迟函数名:将代码中所有的_delay_ms(xxx)替换为__delay_ms(xxx)(注意是两个下划线)。
  2. 确认时钟频率定义:你已正确定义#define _XTAL_FREQ 4000000对应4MHz外部时钟,该定义是XC8延迟宏正常工作的必要条件,无需修改。

修复后的关键代码片段

while(1)
{
   if (BT1 == 1)
   {
     a = 0x00;
     b = 0x01;
     c = 0x01;
     d = 0x00;
     e = 0x00;
     f = 0x00;
     g = 0x00;
     __delay_ms(5000); // 替换为双下划线
     a = 0x00;
     b = 0x00;
     c = 0x00;
     d = 0x00;
     e = 0x00;
     f = 0x00;
     g = 0x00;
     __delay_ms(1000); // 替换为双下划线
   }    
}

额外提示

你的代码中TRISA = 0x01仅将RA0设为输入,但你定义了BT2-BT4对应RA1-RA3引脚。如果这些也是按钮输入,应将TRISA修改为0x0F(低4位全部设为输入),避免引脚配置错误导致的功能异常。

内容的提问来源于stack exchange,提问作者Guilherme Barbieri

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.22 06:06:20