ccbbcc 2024-08-08 20:29 采纳率: 91.6%
浏览 4
已结题

PIC16C程序调用汇编程序的问题

C程序



#include<htc.h>
extern void my_asm_function(void);
 
void main(void) {
    
    my_asm_function();
   
}

汇编代码


global _my_asm_function
i equ 20h

_my_asm_function:
   
    movlw 0x55
    movwf i
Loop
     decfsz i,f
    goto Loop
    ret

goto Loop那一行出错。

img


请指教,谢谢

  • 写回答

1条回答 默认 最新

  • 一直免费一直爽 2024-08-11 23:35
    关注

    以下回复参考:皆我百晓生券券喵儿等免费微信小程序作答:

    在您的C程序中,my_asm_function函数的声明与定义不匹配,导致了错误。在C语言中,函数的声明应该放在相应的头文件(在这个例子中是htc.h)内,并且函数名必须小写。同时,汇编代码中的movlw 0x55指令也存在问题。

    解决这个问题的方法是在main函数内部定义my_asm_function函数,而不是将其声明在main函数之外。然后,在main函数中调用这个函数。下面是一个修改后的示例:

    #include <htc.h>
    
    extern void my_asm_function();
    
    void main(void)
    {
        // 在此处调用我的汇编函数
        my_asm_function();
    }
    
    // 汇编代码
    global my_asm_function
    i equ 20h
    
    _my_asm_function:
        ; 修改这里的代码以实现您的功能
        movlw 0x55
        movwf i
        decfsz i, f
        Output
        goto _My_asm_function
        ret
    

    在上面的代码中,我们首先将my_asm_function声明放在main函数内部。这样,当我们在main函数中调用它时,就可以正确地执行我们的汇编代码。

    请注意,上述代码仅适用于C语言环境。如果你正在使用的是其他编程语言,可能需要根据具体情况调整代码。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录

报告相同问题?

问题事件

  • 系统已结题 8月23日
  • 已采纳回答 8月15日
  • 创建了问题 8月8日

悬赏问题

  • ¥15 multisim电路设计
  • ¥20 用keil,写代码解决两个问题,用库函数
  • ¥50 ID中开关量采样信号通道、以及程序流程的设计
  • ¥15 U-Mamba/nnunetv2固定随机数种子
  • ¥15 C++行情软件的tick数据如何高效的合成K线
  • ¥15 vba使用jmail发送邮件正文里面怎么加图片
  • ¥15 vb6.0如何向数据库中添加自动生成的字段数据。
  • ¥20 在easyX库下编写C语言扑克游戏跑的快,能实现简单的人机对战
  • ¥15 svpwm波形异常求解答
  • ¥15 STM32——硬件IIC从机通信代码实现