Data=(Data-5)|((Stop-1)*4);
if(Parity=2)Data=Data|0x18;
else if(Parity==1)Data=Data|0x8;
outportb(ComPortAddr+3,Data);
/*set MCR(DTR,RTS=0,OUTl,OUT2=1)设置MODEM控制位*/
outportb(ComPortAddr+4,0xob);
/*set input data ready interrupt mode设置输入数据中断模式*/
outportb(ComPortAddr+1,Ox01);
/*set OC interrupt vector设置中断源*/
disable ();
OldAsyncInt=getvect(IntVectNum);
setvect(ImVectNum,AsyncInt);
enable ();
/*open interrupt打开中断*/
maskb=inp(Port8259+1);
if(IntVectNum一0x0c)outport(Port8259+1,maskb&Oxef);/*INT4*/
else outport(Port8259+1,maskb&0xf7);/*INT3*/
}
2)握手信号控制。
该函数引入递归调用的方式,很好的解决了以往串口通信过程中,在握手信号方面选择发送指定特定字符(例如"样")所带来的误传送问题,大大提高了串口通信的成功率。
void wait(char ch)
上一篇:单片机在程控交换机多机通信应用