串口编程

来源:百度知道 编辑:UC知道 时间:2024/05/11 15:18:36
void OpenPort()//⑴
{//⑵
unsigned char ucTemp;//⑶
InitCom();//⑷

asyncoldvect=getvect(0x0c);//⑹
disable();//⑺
inportb(0x3f8);//⑻
inportb(0x3fe);//⑼
inportb(0x3fb);//⑽
inportb(0x3fa);//⑾
outportb(0x3fc,0x08|0x0b);//⑿
outportb(0x3f9,0x01);//⒀
ucTemp=inportb(0x21)&0xef;//⒁
outportb(0x21,ucTemp);//⒂
setvect(0x0c,asyncint);//⒃
enable();//⒄
}//⒅

我想问一下第⒁行(ucTemp=inportb(0x21)&0xef;)中的0x21是什么东西?inportb(0x21)与0xef相与后D4强制性置零,请问D4置0又是什么意思?它的各位表示什么?有人解释如下:
------------------
0x21是中断掩码端口。
DO:该为为1时,表示允许接收器数据就绪中断
D1:该为为1时,允许发送保持寄存器空中断
D2:该为为1时,表示接受到有错信息,允许接收器中断
D3:该为为1时,表示允许“猫”状态变化中断
D4-D7,为0,属于保留位
------------------
可是既然D4是保留位,那为什么又要对D4进行操作呢?
非常感谢匿名人士及时地回答我的问题并提供一些比较好的资料,但非常抱歉我无法从你提供的资料中找到我所需的答案。

虽然你要问的问题我不知道,但是这里给你推荐下面几篇文章,你看了之后应该有些理解。

深入浅出VC++串口编程之基于Win32 API
http://dev.yesky.com/401/2308901.shtml

Win32串口编程
http://www.vckbase.com/document/viewdoc/?id=1734

使用Win32创建串口通讯程序
http://www.vckbase.com/document/viewdoc/?id=1114

封装较完整的串口类库
http://www.vckbase.com/document/viewdoc/?id=1268