碧波液压网 欢迎你,游客。 登录 注册

TurboC在嵌入式PC/104系统中的应用

版权信息:站内文章仅供学习与参考,如触及到您的版权信息,请与本站联系。

  1 引言

  随着电子技术的高速发展,嵌入式计算机已得到了广泛的应用。PC/104就是专门为嵌入式控制而定义的工业控制总线,它是一种优化的、小型、堆栈式结构的嵌入式控制系统,其有效信号线和控制线完全与PC和PC/AT兼容。在PC/104系统中,一般的硬盘是不适用的,常使用Flash EEPROM固态电子盘,其存储空间一般较小,无法使用Windows下的编程语言,而汇编语言的执行速度虽快,但移植性较差,调试较复杂,不宜在复杂系统中使用。TurboC则既有低级语言的直接控制硬件的能力,又有高级语言的灵活性,易于维护,是目前嵌入式PC/104系统中应用较广泛的编程语言。在我们所设计的国产某型大气数据计算机的外场检测仪就是TurboC与PC/104的结合。

  2 用TurboC编写中断服务程序

  所谓中断是指CPU在正常运行程序时,由于程序的预先安排或内外部事件,引起CPU中断正在运行的程序,而转到为预先安排的事件或外部事件服务的程序中去。由于我们的检测仪要求实时地检测并显示大气机输出的各种参数,在时间上又不是非常精确,为了实现这一任务,我们利用了中断向量表中类型码为1CH的定时器中断。它以每秒18.2次的频率进行时钟硬中断(使用中断请求IRQ0),即执行8号中断。这个中断周而复始的在运行,在它的中断服务程序中除了进行日时钟计数和磁盘驱动器超时检测控制外,接着又进行0x1C的软中断调用,0x1C软中断只有一条返回指令,它不做什么事情,因而我们利用这一特点,修改该向量使其在中断时指向我们自己定义的中断服务程序的入口,完成特定的工作,使我们的数据采集在“后台”工作,而数据处理及显示在“前台”工作。所要注意的是,我们所编制的中断服务程序的执行周期应小于原有中断的执行周期(1/18.2秒),以免造成系统崩溃。

  一般地讲,编写这类程序应首先定义一个中断类型的句柄:

  void interrupt for handler( );

  然后将我们所编制的中断服务程序安装在所要替代的中断INTERRUPT上。

  oldhandler=getvect(INTERRUPT);

  setvect(INTERRUPT,handler);

  注意应将中断INTERRUPT保存在oldhandler中,以便在程序结束时恢复,恢复时用setvect(INTERRUPT,oldhandler)完成。

  3 系统简介

  3.1 系统硬件构成

  由于我们所要检测的大气机输出三种类型的数据,即模拟量、开关量和串行数字量,我们采用了CPU卡配套数据采集卡的模式,使用的是Advantech公司生产的PCM-3350CPU模块、PCM-3718HG可编程12位数据采集卡(带16位DI/DO)和PCM-3610串口通讯卡,系统构成如图1。

  

你没有登陆,无法阅读全文内容

您需要 登录 才可以查看,没有帐号? 立即注册

标签:
点赞   收藏

相关文章

发表评论

请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。

用户名: 验证码:

最新评论