#include "led.h"
#define __led_on_swi_no 1 // 软中断号1,调用管理模式下的do_led_on函数
#define __led_off_swi_no 2 // 软中断号2,调用管理模式下的do_led_off函数
int led_on(int led_no){
int ret; // 返回值
__asm{ // 由于C程序中没有SWI对应表达式,所以使用混合编程
mov r0, led_no // 根据ATPCS规则,r0存放第一个参数
swi __led_on_swi_no // 产生SWI软中断,中断号为__led_on_swi_no
mov ret, r0 // 软中断处理结束,取得中断处理返回值,传递给ret变量
}
return ret; // 将ret返回给调用led_on的语句
}
int led_off(int led_no){
int ret; // 返回值
__asm{ // 由于C程序中没有SWI对应表达式,所以使用混合编程
mov r0, led_no // 根据ATPCS规则,r0存放第一个参数
swi __led_off_swi_no // 产生SWI软中断,中断号为__led_off_swi_no
mov ret, r0 // 软中断处理结束,取得中断处理返回值,传递给ret变量
}
return ret; // 将ret返回给调用led_off的语句
}