ASM51无参数化调用C51函数的实现原理解析方案

嵌入式系统 时间:2012-06-19来源:网络

sample: ;采样程序,该标号即是C51定义外部函数

;sample()的入口地址

……

ret

……

res_ram: ;62256指针复位,该标号即是C51定义外部函数res_ram()的入口地址

……

ret

end

在研制无纸记录仪之前,作者用MASM51开发了其他仪表,采样部分有些相同,因此这次A51采样程序并不是重新编写,而是把以前的MASM51程序按A51的规则来修改。以前ASM的程序(数据段部分)如下所示:

bseg

;

write_alw bit 00h;

vz_bit bit 01h

fs_bit bit 02h

ce_bit bit p1.6

ram_cs bit p1.2

b373 bit p1.1

bit_dog bit p1.4

data_bit bit P2.6

sclk_bit bit P3.4

drdy_bit bit p3.3

ends

;

dseg

org 08h

org 28h

sample_w; ds 12

sa_p: ds 1 ;当前通道号

ram_point: ds 2

sa_timer: ds 8 ;0,1,2,3每通道两字节

sa_vzt: ds 8 ;0,1,2,3 vz

ends

;

cseg

org 0h

begin: reti

org 03h

lcall sample

reti

sample:

……

ends

从上述程序可以看出,在采样程序中所用到的变量并不少,定义在数据存储区28H单元起始的空间中。这样安排,对汇编程序没什么问题,但与C51主程序连接的时候,并不一定好,很多时候碰到地址空间溢出的问题(C51主程序编译连接后将近16K字节,CPU采用ATMEL公司的AT89C55WD)。如何调整这些变量的分配,并非容易。另外,C51随时要用到采样单元sample_w[12]的值,如果采用一般的参数传递,将是相当复杂而繁琐的;而采用全局及外部变量实现C51无参数经调用A51函数,极大简化了这些工作,大大提高了工作效率。

1 2 3

关键词: 原理 解析 方案 实现 函数 参数 调用 C51 ASM51

加入微信
获取电子行业最新资讯
搜索微信公众号:EEPW

或用微信扫描左侧二维码

相关文章

查看电脑版