基于PC/104的多串口通讯的设计
else outportb(0xa1,inportb(0xa1)|ControlWord[IntNum-8]);
}
串口的中断可以在PC/104的板子上参照手册,进行跳线设计。
1. 3串口通讯的中断向量设置:
当中断小于8时,中断向量地址为中断号加8,当中断大于8时,中断向量地址为中断号加0x68。
下面是完整的串口初始化程序(以COM1为例)
void int_setup(unsigned char comPort,char control)
{
static void interrupt (*old_int)(void);
static void interrupt (*new_int)(void);
int baseAdd;
if(comPort<8) baseAdd=8;
else baseAdd=0x68;
disable();
if(control!=0)//当control为1时是串口的初始化,为0时是恢复系统状态
{init_com(comBaseAddr[comPort]);
switch (comPort)
{case 4: old_int = oldhandler_com1;
new_int = handler_com1;
break; }
old_int = getvect(baseAdd+comPort);
setvect(baseAdd+comPort, new_int); file://保存旧中断向量地址,并设置新的中断向量地址
OpenInterrupt(comPort);}
else
{CloseInterrupt(comPort);
setvect(baseAdd+comPort,old_int);}//恢复中断向量地址
enable();}
1. 4串口数据的发送和接收:
当串口需要发送数据时,只要将待发送的数据以字符串的形式依次写入基地址中即可。当接收数据时,由于每接收到一个字符便产生一个中断,因此要在中断服务子程序的最后向8259写入20H到地址20H即可,如果中断号大于8,还要向从片8259写入20H到地址A0H。
2 串口的硬件设计
目前较为常用的串口有9针串口(DB9)和25针串口(DB25),通信距离较近时(<12m),可以用电缆线直接连接标准RS232端口。若距离较远,需附加调制解调器(MODEM)。最为简单且常用的是三线制接法,即地、接收数据和发送数据三脚相连,只需要如图2进行连接即可。
目前较为常用的串口有9针串口(DB9)和25针串口(DB25),通信距离较近时(<12m),可以用电缆线直接连接标准RS232端口。若距离较远,需附加调制解调器(MODEM)。最为简单且常用的是三线制接法,即地、接收数据和发送数据三脚相连,只需要如图2进行连接即可。
3 结束语:
本文较全面介绍了基于PC/104的多串口卡的通讯软件的设计,提出了串口通讯应注意的问题,并将此串口通讯软件应用在大庆油田的数据采集系统中,系统工作稳定,可靠。
《基于PC/104的多串口通讯的设计(第2页)》