CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  专题开发/技术/项目 >  网络通信

怎么用c语言,编写串口的通讯程序(关于com2的)这次给80分

楼主ioh(小宝)2002-06-03 14:39:38 在 专题开发/技术/项目 / 网络通信 提问

这是一个串口中断的初始化。有谁帮我解释一下?      
  void     v2()      
  {unsigned     char     b;      
  disable(     );      
  inportb(0x3f8);      
  inportb(0x3fe);void     v2()      
  {unsigned     char     b;      
  disable(     );      
  inportb(0x3f8);      
  inportb(0x3fe);      
  inportb(0x3fb);      
  inportb(0x3fa);      
  outportb(0x3fc,0x08     ¦0x0b);      
  outportb(0x3f9,0x01);      
  b=inportb(0x21)&0xef;      
  outportb(0x21,b);      
  setvect(0x0c,v1);      
  enable();}      
     
  inportb(0x3fb);      
  inportb(0x3fa);      
  outportb(0x3fc,0x08     ¦0x0b);      
  outportb(0x3f9,0x01);      
  b=inportb(0x21)&0xef;      
  outportb(0x21,b);      
  setvect(0x0c,v1);      
  enable();}      
  问题点数:80、回复次数:4Top

1 楼ckc(火)回复于 2002-06-03 16:55:19 得分 60

我仔细看了一下。你这代码很不对头,首先,3F8是串口1的基地址  
  其次,你的代码在C中都无法通过语法检查  
  我只好随便看一看。  
   
  unsigned     char     b;      
  disable(     );       禁止中断  
  inportb(0x3f8);     从串口1读入1个数据  
  inportb(0x3fe);void     v2()      
  {unsigned     char     b;      
  disable(     );      
  inportb(0x3f8);   这几句没什么意思,从3F8中读数据有清缓冲区的功能    
  inportb(0x3fe);     这3句读没有任何意思  
  inportb(0x3fb);      
  inportb(0x3fa);      
  outportb(0x3fc,0x08     ¦0x0b);    看不明白  
  outportb(0x3f9,0x01);     本来应该是初始化波特率的  
  b=inportb(0x21)&0xef;      
  outportb(0x21,b);     打开串口中断  
  setvect(0x0c,v1);     设置串口中断地址  
  enable();}      
     
  inportb(0x3fb);      
  inportb(0x3fa);      
  outportb(0x3fc,0x08     ¦0x0b);      
  outportb(0x3f9,0x01);      
  b=inportb(0x21)&0xef;      
  outportb(0x21,b);      
  setvect(0x0c,v1);      
  enable();}      
  Top

2 楼lupao(一点通)回复于 2002-06-05 09:50:32 得分 20

你的代码太乱,但是我可以建议你先看一本书,西安电子科大出版社的,《MODEM   编程》。我很想帮助你,也一直在编写一些串口通信程序。DOS的有  
  中断和查询都作过,现在用WIN32API。但是我想你先得好好的看一下书才行。Top

3 楼ioh(小宝)回复于 2002-06-06 10:36:09 得分 0

两位,多谢了。我给分了,60和20,   不知道是不是这样给的?(我是个刚来的,不太懂)。  
  还是每个人都给80   ??????  
  这样我的分可不够啊   !!!!Top

4 楼ioh(小宝)回复于 2002-06-06 11:18:16 得分 0

上次代码发错了这次在发一次,这是两个过程:一个是中断响应,一个是端口的初始化。有劳两位了。谢谢!  
  void   interrupt   v1()  
  {disable();  
  if(vz1==1)   {out1=inportb(0x3f8);   }  
  else  
  {out=inportb(0x3f8);  
  flowp=-flowp;  
  done=1;}  
  vz1=-vz1;  
  outportb(0x20,0x20);  
  enable();  
  }  
   
  void   v2()  
  {unsigned   char   b;  
  disable(   );  
  inportb(0x3f8);  
  inportb(0x3fe);  
  inportb(0x3fb);  
  inportb(0x3fa);  
  outportb(0x3fc,0x08|0x0b);  
  outportb(0x3f9,0x01);  
  b=inportb(0x21)&0xef;  
  outportb(0x21,b);  
  setvect(0x0c,v1);  
  enable();}Top

相关问题

  • 用纯C语言编写串口通讯的程序
  • c# 串口通讯
  • 求教C#串口通讯
  • C#如何实现串口通讯
  • tc下如何编写串口通讯程序?
  • 在VB中如何编写串口通讯程序的问题
  • C中 串口程序中波特率程序怎么编写
  • 串口通讯
  • 串口通讯!!!
  • 串口通讯

关键词

  • 中断
  • 代码
  • inportb
  • f8
  • outportb
  • 串口
  • f9
  • setvect
  • xef
  • 初始化

得分解答快速导航

  • 帖主:ioh
  • ckc
  • lupao

相关链接

  • CSDN Blog
  • 技术文档
  • 代码下载
  • 第二书店
  • 读书频道

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo