当前位置:首页 > 嵌入式 > 嵌入式软件
[导读]基于ISA总线与KH-9300的数据采集系统软件设计

1 引言
    该数据采集系统采用硬中断方式,通过对KH-9300板卡上的8254定时器和8259中断控制器编程定时触发中断并对外部脉冲计数,设计中每隔1 s采集1次数据,数据采集卡第0和1号通道采用串行方式并使用板卡上的内部时钟进行计时,第2、3、4、5号通道输人外部计数脉冲计数。所有通道采用内部门控信号。当串行的第0~1通道计数满时,就向板卡上的8259中断控制器的IN1引脚发出中断指令。通过8259中断控制器向计算机内的8259A的中断引脚(这里设计为第5号中断引脚)发出中断指令。CPU响应中断请求,执行中断程序,对板卡上第2、3、4、5号通道进行数据采集,并把采集后的数据写入文件。

2 板卡及8254定时、计数常数的设置
    时钟跳线的设置:0号通道选内部时钟,0和1两通道级联,2~5号通道接外部脉冲,选外部时钟。门控跳线设置为所有通道都选内部门控;基地址设置为280H;中断号设置为INT5(中断向量号为13);内部时钟频率设置为2 MHz。
    (1)定时常数的计算 定时系数=要求定时的时间/时钟脉冲的周期。若定时的时间为1 s,内部时钟频率为2 MHz。则时钟脉冲的周期为1 s/2 MHz=0.5μs,定时系数为1s/0.5 μs=2×106=2 000 000。由于8254定时计数器6个通道为16位减计数器,每个通道计数值最大为216-1=65 535<2 000 000。所以必须采用2个通道计时,设计中将第0通道和第1通道串联。由2×106=1 000×2×103,则定时系数:第0通道为2 000,第1通道为1 000。
    (2)计数通道的初始化 计数通道常数设置为最大值:FFFFH。最大计数频率为65 535 Hz/s。
    (3)计数累计脉冲量计算 计数累计脉冲量=FFFFH-计数器本次读数。

3 用Turbo C编写中断服务程序的方法
    C语言中断服务程序可由3部分实现。即编写中断服务程序、安装中断服务程序、激活中断服务程序。

[!--empirenews.page--]
    (1)编写中断服务程序由于产生中断时,必须保留被中断程序中断时的一些现场数据,即保存断点,这些值都在寄存器中,以便恢复中断时使这些值复原。以继续执行原来被中断的程序。 Turbo C为此提供一种新的函数类型:inter-rupt,它将保存由该类型函数所指寄存器的值,而在退出该函数时,再复原这些寄存器的值,因而用户的中断服务程序必须定义成该类型的函数,如中断服务程序名为myp,则可将这个函数说明为:
    Void interrupt myp(unsigned bp,unsigned di,unsigned si,unsigned ds,unsigned es,unsigned dx,unsigned cx,unsignedbx,unsigned ax,unsiged ip,unsigned cs,unsigned flags)
    小模式下程序只有1段,在中断服务程序中用户可像用无符号整数变量一样使用这些寄存器。若中断服务程序中不使用上述寄存器,则可不写这些寄存器参数,而写为:

  
    对于硬件中断,则在中断服务程序结束前要将中断结束命令字送至系统的中断控制寄存器,其端口地址为0x20,中断结束命令字也为0x20,即outportb(0x20,0x20)。
    在中断服务程序中,若不允许别的优先级较高的中断打断它,则要禁止中断,可用函数disable()来关闭中断。若允许中断,则可用开中断函数enable()来开启中断。
    (2)安装中断服务程序定义中断服务程序后,还需将这个函数的人口地址填人中断向量表中,以便产生中断时程序能转入中断服务程序去执行。为防止正在改写中断向量表时,又产生别的中断而导致程序混乱,可先关闭中断,待改写完成后,再开启中断。

  
    其中faddr是中断服务程序的入口地址,其函数名代表入口地址,而inum表示中断类型号,setvect()函数设置中断向量,上述定义的install()函数将完成把中断服务程序入口地址填入中断向量inum中。
    (3)中断服务程序的激活对于硬件中断,在相应的中断请求线(IRQi,i=0,1,2,…,7)产生一个由低到高的中断请求电平,这个过程必需由接口电路来实现,这个电平可用程序控制实现,如发命令outportb(端口地址,命令)。然后程序等待中断,当中断产生时,便去执行中断。
    (4)恢复被修改的中断向量为在主程序结束后,恢复原来的中断向量以指向原中断服务程序,在主程序开始时,存下原中断向量的内容,用getvect()实现,如j=(char*)getvect(0x1c),这样指针变量中将是0xlc中断程序的入口地址,当主程序结束时,可恢复原来的中断服务入口地址,可用setvect(0x1c,i),也可用install()函数再次安装。

4 程序设计
4.1 程序说明
    程序主要分为主程序和中断处理子程序2部分。其中主要程序是采用 I/O接口的输入输出函数进行初始化。包括设置KH-9300定时计数器8254和中断控制器8259的工作方式、初值、开中断、触发方式,对计算机的 8259开中断等。在主程序的最后把采集的通道数据写入文件。而中断处理子程序是由CPU在每次接到IRQ5中断请求信号后立即执行,主要作用是把KH- 9300卡的第2、3、4、5号通道的计数值采集到程序的变量中。主程序和中断处理子的程序流程分别如图1、图2所示。

4.2 编程注意事项
    (1)不要用任何DOS功能调用,避免DOS重入。尽量避免使用与屏幕相关、检查状态、读键盘及任何磁盘I/O子程序:避免使用浮点(实数)运算。中断服务程序中所调用函数尽量是BIOS级库函数;(2)中断程序执行的时间应尽可能的短。若 ISR中消耗时间过长,在完成一次运行前有可能被再次调用,导致系统被挂起。(3)控制变量可以是全局变量,也可通过寄存器变量传递给interrupt 函数;(4)若实时控制系统对中断响应速度要求较高,可采用嵌入汇编技术。[!--empirenews.page--]
4.3 程序调试结果
    图3为调试结果。图3中每1行后4个数据为每1 s所采集的4通道数据,第1列是第几次采集,即第几秒采集,后4列是第2、3、4、5通道所采集的数据。因此采集的数据具有较高稳定性。

5 结束语
    从程序调试数据可看出,采集到的数据具有很高的稳定性。该系统可方便组成连续监测系统或其他需要记录脉冲的系统。同时利用Turbo C可方便的控制其端口和硬件中断。

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

作者 Mohamad Ali| IBM咨询首席运营官 北京2024年5月24日 /美通社/ -- 生成式AI的兴起几乎在所有面向上给业务带来改变。根据 IBM 商业价值研究院最新的年度 CEO 研究,近60%...

关键字: IBM AI BSP 模型

台北2024年5月21日 /美通社/ -- 提供针对AMD WRX90和TRX50主板优化的DDR5 OC R-DIMM 提供容量128GB(16GBx8)到768GB(96GBx8),速度5600MHz到8...

关键字: AMD 内存 BSP GB

上海2024年5月20日 /美通社/ -- 2024年5月16日,世界知名的生命科学公司 Eppendorf 集团于第二十三届生物制品年会上成功举办了"疫路超越 推流出新"的产品发布会,正式推出大规模...

关键字: RF PEN BSP IMAC

北京2024年5月20日 /美通社/ -- 过去五年里,支付和收款方式日新月异,其发展和变化比过去五十年都要迅猛。从嵌入式数字商务的出现,到"一拍即付"的...

关键字: VI BSP PAY COM

华钦科技集团(纳斯达克代码: CLPS ,以下简称"华钦科技"或"集团")近日宣布致敬 IBM 大型机 60 载辉煌历程,并将继续实施集团大型机人才培养计划。

关键字: IBM BSP 研发中心 PS

助力科研与检测新突破 上海2024年5月15日 /美通社/ -- 全球知名的科学仪器和服务提供商珀金埃尔默公司今日在上海举办了主题为"创新不止,探索无界"的新品发布会,集中展示了其在分析仪器领域的最...

关键字: 质谱仪 BSP DSC 气相色谱

上海2024年5月16日 /美通社/ -- 2024年5月10日至5月13日,富士胶片(中国)投资有限公司携旗下影像产品创新力作亮相北京P&E 2024。在数码相机展览区域,全新制定的集团使命"为世界绽...

关键字: 富士 数码相机 影像 BSP

贝克曼库尔特目前已成为MeMed Key免疫分析平台和MeMed BV检测技术的授权经销商 在原有合作的基础上,继续开发适用于贝克曼库尔特免疫分析仪的MeMed BV检测 加州布瑞亚和以色列海法2024年5月16日...

关键字: BSP IO 检测技术 免疫分析仪

英国英泰力能的燃料电池是可产业化的产品解决方案 英国首个专为乘用车市场开发的燃料电池系统 在 157kW 功率下,此燃料电池比乘用车的其他发动机更为强大 &...

关键字: ENERGY INTELLIGENT 氢燃料电池 BSP

深爱人才,共赴"芯"程 深圳2024年5月15日 /美通社/ -- 5月11日,深圳国资国企"博士人才荟"半导体与集成电路产业专场活动在深圳市重投天科半导体有限公司(简...

关键字: 半导体 集成电路产业 BSP 人工智能
关闭
关闭