SAM8系列S3C825A型单片机及其软件设计
[09-12 17:48:05] 来源:http://www.88dzw.com 单片机学习 阅读:8966次
文章摘要:LD R9,R15;C函数传递参数给R15,暂时存储在R9CALL rand ;调用C库函数得到一个随机数,作为add的第一实参,存储在R15LD R14,R9;C函数传递的参数,作为add的第二实参,存储在R14CALL add ;add返回的值存储在R15中POP R9 ;add出栈恢复寄存器内定RETEND/ 汇编语言源程序结束 /4.2 汇编语言写中断服务程序为了提高系统响应速度,设计时往往要求中断服务程序的执行时间较短,执行速度较快。因此,最好的方法就是用汇编语言编写中断服务程序。但要注意以下2点:(1)中断函数不传递参数和返回结果;(2)中断过程中用到的寄存器都要进行保护。本例中用
SAM8系列S3C825A型单片机及其软件设计,标签:单片机开发,单片机原理,单片机教程,http://www.88dzw.comLD R9,R15;C函数传递参数给R15,暂时存储在R9
CALL rand ;调用C库函数得到一个随机数,作为add的第一实参,存储在R15
LD R14,R9;C函数传递的参数,作为add的第二实参,存储在R14
CALL add ;add返回的值存储在R15中
POP R9 ;add出栈恢复寄存器内定
RET
END
/**** 汇编语言源程序结束 ****/
4.2 汇编语言写中断服务程序
为了提高系统响应速度,设计时往往要求中断服务程序的执行时间较短,执行速度较快。因此,最好的方法就是用汇编语言编写中断服务程序。但要注意以下2点:
(1)中断函数不传递参数和返回结果;
(2)中断过程中用到的寄存器都要进行保护。
本例中用汇编语言编写看门狗定时器的中断服务程序,而用C语言编写主程序。
/****C语言主程序****/
#include<ios3c825a.h> /*头文件*/
extern void in0(void); /*中断函数声明*/
void main(void)
{
CLKCON=0X98; /*开中断*/
IMR=0X10; /*IRQ4使能*/
WTCON=0X84;/*看门狗定时器设为0.25秒*/
P2CONL=0X03; /*P2.0为输出*/
IPH=0X00;
IPL=0XD6; /*中断函数所对矢量位置*/
CLKCON=0X18; /*关中断*/
while(1);
}
/****C语言主程序结束****/
/****汇编语言编写的中断程序****/
#include <ios3c825a.h> ;头文件
public 'int0' ;中断函数声音
RSEG WATCHT:CODE:RROT (1),0X00D6 ;中断矢量在代码段中的绝对位置
Int0:
PUSH R1 ;寄存器保护
LD R1,#01H ;给PORT2寄存器赋值,使连接P2.1的LED定时发头
POP R1;寄存器恢复
IRET;中断返回
END
/****汇编语言编写的中断程序逻辑****/
5 结束语
以上方法已经应用于笔者参与设计的校音器设计中并取得良好的效果。但也要注意调试过程中编译器选项的设置对程序运行结果有一定的影响,因此,对SAM8系统中不同的核,一定要选用不同的内核版本号,否则,寄存器传递的参数可能会错位,从而导致参数传递错误,给调试带来不便。
- 上一篇:新一代单片PFC+PWM控制器
《SAM8系列S3C825A型单片机及其软件设计》相关文章
- › SAM8系列单片机及其软件设计
- › SAM8系列S3C825A型单片机及其软件设计
- 在百度中搜索相关文章:SAM8系列S3C825A型单片机及其软件设计
- 在谷歌中搜索相关文章:SAM8系列S3C825A型单片机及其软件设计
- 在soso中搜索相关文章:SAM8系列S3C825A型单片机及其软件设计
- 在搜狗中搜索相关文章:SAM8系列S3C825A型单片机及其软件设计