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
|
|