首页 理论教育 DOS控制软件的设计优化

DOS控制软件的设计优化

时间:2023-06-29 理论教育 版权反馈
【摘要】:在不需要复杂界面显示时,为提高控制系统的实时性,本文同时开发了DOS平台下的控制程序。DOS下的集成开发环境采用Borland公司在1992年推出的Turbo C++3.0,该软件既可支持C语言程序设计,也可支持C++面向对象的程序设计,是DOS系统下较为常用的编程软件。在DOS下,对CAN卡的操作过程与在Windows XP下相似,只是各个控制函数需要重新编写;但是对串口的操作与在Windows XP下有很大不同。对于中断方式,还需设置MODEM控制寄存器。图4-20DOS下的串口操作流程

DOS控制软件的设计优化

虽然Windows XP系统下开发可视化程序简单,但由于它是事件(消息)驱动的多任务操作系统,消息需要在系统或者应用程序的消息队列中进行排队等待来完成任务。但消息的产生是随机的,因而无法判断程序下一步的动作,实时性不强。在不需要复杂界面显示时,为提高控制系统的实时性,本文同时开发了DOS平台下的控制程序。

DOS(Disk Operating System),即“磁盘操作系统”。它是20世纪80年代初,由微软推出的一款PC机的单任务操作系统。它与现在的基于图形界面的Windows操作系统的最大区别在于:DOS是一个对用户来说硬件开放的操作系统,通过输入命令来进行人机对话,可以直接操作底层硬件资源;DOS是单任务操作系统,同一时间只能运行一个任务(应用程序),也就是说,在运行某一个程序的时候,DOS的所有控制权都只属于本程序,其他程序将停止运行,直到从程序返回,因此DOS的实时性强;DOS是单用户的操作系统,它没有多用户的用户登录和隔离功能等。由于其具有开放性、实时性、易用性、稳定性等诸多优点,在一些中小型的工业控制、科学计算等实时系统中,被广泛应用。DOS有很多的版本,本文采用比较流行的兼容性最好的MS-DOS 7.10。该版本全面支持大硬盘、大内存、长文件名(LFN)、FAT32分区等,性能稳定,并且已经免费。

DOS下的集成开发环境采用Borland公司在1992年推出的Turbo C++3.0,该软件既可支持C语言程序设计,也可支持C++面向对象的程序设计,是DOS系统下较为常用的编程软件。

在DOS下,对CAN卡的操作过程与在Windows XP下相似,只是各个控制函数需要重新编写;但是对串口的操作与在Windows XP下有很大不同。

在PC主板上,负责串口通信的核心芯片是INS8250或者其兼容芯片,DOS可以很方便地通过读写INS8250的寄存器进行串口编程,表4-4是其内部各个寄存器地址的定义及相关描述。

表4-4 INS8250内部寄存器定义及描述

由表4-4可知,INS8250的地址3F8H(2F8H)、3F9 H(2F9H)是复用地址,通过借用线控制寄存器的最高位D7来选通A2A1A0进行控制。当D7=0时,寄存器0、1分别为接收/发送数据寄存器、中断允许寄存器;当D7=1时,寄存器0、1分别为波特率除数锁存器低位和高位。

INS8250是使用频率为1.843 2 MHz的时钟源作为主数据时钟的,因此,波特率可用下式计算:

(www.xing528.com)

线路控制寄存器(LCR)是用来设置数据格式的,它的最高位D7用以控制寄存器0、1,D6为BREAK位,D5D4D3用以设置奇偶校验,D1D0用以设置数据位数,具体如表4-5所示。

表4-5 线路控制寄存器各位设置组合

通过中断方式进行串口编程时,需要对中断允许寄存器(IER)的低4位进行设置,进而可产生4类UART中断,高4位D7~D4恒为0;D3=1表示当MODEM状态变化时允许CPU中断,即在任何一个RS-232的输入端状态改变时,CPU会有一个中断产生;D2=1表示在接收到错误信息时CPU会产生一个中断;D1=1表示当发送保持寄存器内容为空时,CPU会产生一个中断;D0=1表示在接收器缓冲寄存器中有待读的有效数据时允许CPU产生一个中断。

对于中断方式,还需设置MODEM控制寄存器(MCR)。MODEM控制寄存器用于完成对MODEM控制逻辑的管理,其控制逻辑包括4个控制输入信号和4个控制输出信号控制寄存器用于设置4个输出信号,其D7~D5恒为0,当使能INTRPT中断请求输出,故在中断方式必须置该位为1,查询方式D3清零。

在进行中断处理之前,需要申明一个中断指针以保存原中断向量,同时需要设置新的中断向量,以保证CPU执行中断服务程序时有一个正确的入口地址。

串口通信的具体操作流程如图4-20所示。

图4-20 DOS下的串口操作流程

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈