微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 用IAR编译器开发DS80C400

用IAR编译器开发DS80C400

时间:12-16 来源:互联网 点击:

,r4_b0

orl a,r5_b0

orl a,r6_b0

jz ltob_err ; is (longptr == NULL)?

mov dpx,r6_b0 ; point to the memory where 'longptr' is pointing to

mov dph,r5_b0

mov dpl,r4_b0

pop r6_b0 ; restore r6:r7 for the compiler

pop r7_b0

push dpx

push dph

push dpl

movx a,@dptr ; get the long value (in r4:r3:r2:r1) from the memory

mov r4,a

inc dptr

movx a,@dptr

mov r5,a

inc dptr

movx a,@dptr

mov r6,a

inc dptr

movx a,@dptr

mov r7,a

inc dptr

pop dpl

pop dph

pop dpx

mov a,r7_b0 ; swap the long value bytes and store it in memory

movx @dptr,a

inc dptr

mov a,r6_b0

movx @dptr,a

inc dptr

mov a,r5_b0

movx @dptr,a

inc dptr

mov a,r4_b0

movx @dptr,a

mov a,r1_b0 ; is (shortptr == NULL)?

orl a,r2_b0

orl a,r3_b0

jz ltob_err

mov dpx,r3_b0 ; point to a memory where the 'shortptr' is pointing to

mov dph,r2_b0

mov dpl,r1_b0

push dpx

push dph

push dpl

movx a,@DPTR ; get the integer value from memory

mov r2,a

inc dptr

movx a,@dptr

mov r1,a

inc dptr

pop dpl

pop dph

pop dpx

mov a,r1_b0 ; swap the integer bytes

movx @dptr,a

inc dptr

mov a,r2_b0

movx @dptr,a ; bytes of an integer are swapped and stored in

memory

mov r3,#00 ; return 'success'

mov r2,#00

sjmp ltob_exit

ltob_err:

mov r3,#00 ; return 'error'

mov r2,#01

ltob_exit:

ret

END ; end of assembly program

局限性以及开发问题

以下是使用6.11A版的IAR编译器时发现的局限性:

IAR编译器用堆栈存储本地变量。在DS80C400中,堆栈限制为1024字节。DS80C400库的默认堆栈交换为384字节(ROM_SAVESIZE) .如果您的程序声明了多个堆栈变量,确保该限制也适当地变化。要改变默认任务的交换大小,使用Dallas Semiconductor的task_genesis(unsigned int savesize)库或rom400_task.h中定义的task_fork(unsigned char priority, unsigned int savesize),并给savesize参数提供正确的值。

printf、sprintf等函数存在一些问题:只有选择了'lowest optimization level'函数才能正常工作。要选择优化等级,找到project→options→ICC8051,并选择Code标签中的'None'.

IAR printf, sprintf的默认库不能正常工作。要使它们正常工作,您的C程序应包含IAR提供的C文件(如#include printf.c>)。

结论

Dallas Semiconductor为IAR编译器提供支持C程序访问DS80C400 ROM软件的函数。用C程序能够访问网栈、存储管理器、进程调度器以及DS80C400的其它许多函数。使用C语言的DS80C400微控制器开发者能够编写出更精简的应用程序,赋予系统足够的速度、能力和代码空间。Dallas Semiconductor正致力于将所有目前工作与Keil编译器的DS80C400库移植到IAR.请经常访问DS80C400 IAR库主页获得升级。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top