微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 利用全局及外部变量实现C51无能数化调用A51函数

利用全局及外部变量实现C51无能数化调用A51函数

时间:03-08 来源:互联网 点击:

//以下变量为采样程序模块ZTDJLY.A51中所用到的变量
bit write_alw,vz_bit,fs_bit;//write_alw=1,写放FLASH允许,vz_bit,fs_bit是零标定及满刻度标定的标志
uchar sample_w[12];//4路连零点采样值,每路2个字节共10个字节,另外2个字节作定改62256前把采样值添加通道号处理所需单元
uchar xdata *ram_point;//62256的指针
uchar sa_p,sa_vzt[8];//sa_p为采样当前路,sa_vzt[8]为4路的零点
uchar sa_timer[8]={1,1,1,1,1,1,1,1}; //4路的转储速率,前为子,后为母本
……
void disp_int0() interrupt 0 using 2 //用中断0,使用寄存器2组
{
sample();//C51无参数化调用A51函数
}
main()
{

initial();
while(1) //主循环
{
……
}
}

A51程序如下:
NAME ztdjly.a51
ram_cs bit 090h.2 ;p1.2 ;62256片选
b373 bit 090h.1 ;p1.1
bit_dog bit 0b0h.4 ;3.4
;以上3个是AD7715的引脚定义
data_bit bit 0a0h.6 ;P2.6
adsclk_bit bit 0b0h.5 ;P3.5
drdy_bit bit 0b0h.3 ;P3.3
?PR?sample?SAMPLE SEGMENT CODE ;定义程序代码段
EXTRN DATA (sample_w) ;声明外部变量,在C51程序定义分配在DATA区
EXTRN DATA(sa_p)
EXTRN DATA(ram_point)
EXTRN DATA (sa_timer)
EXTRN DATA (sa_vzt)
EXTRN BIT (write_alw) ;声明外部变量,在C51程序定义分配在可位寻址区
EXTRN BIT (vz_bit)
EXTRN BIT (fs_bit)
PUBLIFC sample ;分用符号说明
PUBLIC initial,res_ram
RSEG ?PR?sample?SAMPLE
using 0
initial:;AD7715初始化,该标号即是C51定义外部函数
;initial()的入口地址
……
ret
;
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函数,极大简化了这些工作,大大提高了工作效率。

本文第2部分的程序,采用Keil公司的Keil C V6.10集成开发工具包完成。所研制的无纸记录仪已经通过福建省科技厅的鉴定。

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

网站地图

Top