基于C语言的RS232串行接口通信实现
2.2.1串口通信软件流程图
图2数据通信的流程图
由于I/O串行通信口的速度远远低于CPU的速度,在查询工作方式时,CPU长时间处于等待状态,其效率非常低,不利于CPU的资源利用。解决这一矛盾的有效办法是采取中断的通信方式,即当通信口自身准备就绪时,主动提出中断申请,一旦CPU响应此申请,便暂停执行的工作,转向中断服务子程序,与外设进行数据的交换,数据交换完成后返回到主程序中的断点继续执行未完成的任务,这样就避免了CPU资源的浪费㈨。
为此必须对异步通信适配器以及中断控制器进行控制。作为系统的外设,异步通信适配器和中断控制器都有其对应的I/O口地址,所以本文采用C语言函数库中的寻址函数outportb()和函数inportb()对上述芯片进行直接读写操作。其控制包括对中断控制器地址的编程,允许IRQ3,IRQ4中断,同时置MODEM控制寄存器地址为有效,这样即可实现中断方式的通信。根据图2的串口通信流程图,其具体实现串口通信的过程如下:
1)初始化串口函数。
参数说明:
ComPortAddr 串口端口地址(coMl口是03F8H COM2口是02F8H)
IntVectNum 中断处理号(一般选择0X0b)
Baud 波特率
Data 数据位
STop 停止位
Parity 奇偶校验位
c语言相关文章:c语言教程
数字通信相关文章:数字通信原理
通信相关文章:通信原理
交换机相关文章:交换机工作原理
评论