文章
博客 网店

 汇编程序中调用C函数测试程序


main.c文件:

/********************************
  汇编程序中调用C函数测试程序 
  文件名:main.c
  编译:WinAVR-20070122

  硬件:CA-M8X  
      配置:外部4MHz
      打开:S6(1,2) S1(8)
  
  芯艺设计室 2004-2007  版权所有 
  转载请保留本注释在内的全部内容
  WEB: http://www.chipart.cn
  Email: changfutong@sina.com
*******************************/
#include 
#include 
#include 

uint16_t g_wDelayCount=500; //全局变量声明

void DelayMs(uint16_t t) //延时t ms
{
  uint16_t i;
  for(i=0;i     _delay_loop_2(4*250);
}


asm.s文件:


;  汇编程序中调用C函数 
; 汇编程序中使用C全局变量
;  文件名:asm.s
;  硬件:CA-M8X
;  
;  芯艺 2004-2007


#include 

  .extern DelayMs    ;外部C函数声明
  .extern g_wDelayCount ;外部C变量声明

  .section .text
  .global main
main:
  ;i/o 初始化
  ldi r25 , 0x01
  out _SFR_IO_ADDR(DDRB),r25

LOOP:

  ;C变量g_wDelayCount值传递到函数DelayMs
  lds r25,g_wDelayCount+1
  lds r24,g_wDelayCount  
  rcall DelayMs  ;DealyMs(500);

  cbi _SFR_IO_ADDR(PORTB),0

  lds r25,g_wDelayCount+1 
  lds r24,g_wDelayCount 
  rcall DelayMs  ;DelayMs(500);

  sbi _SFR_IO_ADDR(PORTB),0

    
  rjmp LOOP


芯艺工作室    蒙ICP备06005492号
Copyright© 2004-2023 ChipArt Studio All Rights Reserved