CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  C/C++ >  C语言

谁用过Int14H 中断写过串口程序,在线

楼主GoldWood()2004-08-03 11:47:43 在 C/C++ / C语言 提问

我连初始化端口都有问题,紧急求助!  
  谢谢! 问题点数:100、回复次数:14Top

1 楼sekelon(罗伦罗亚索龙)回复于 2004-08-03 11:51:11 得分 100

void   initport(void)  
  {  
    disable();  
    inportb(portaddr+RXD);  
    inportb(portaddr+LSR);  
    inportb(portaddr+MSR);  
    inportb(portaddr+IIR);  
    outportb(portaddr+IER,0);  
    outportb(portaddr+LCR,0x80);  
    outportb(portaddr+MSB,0);  
    outportb(portaddr+LSB,speed);  
    outportb(portaddr+LCR,FORMAT);  
    inportb(portaddr+RXD);  
    inportb(portaddr+RXD);  
    inportb(portaddr+RXD);  
    enable();  
  }  
  Top

2 楼GoldWood()回复于 2004-08-03 12:03:54 得分 0

to   sekelon(罗伦罗亚索龙)   :不是很明白,我是用如下方法初始化的,  
  int   initSerial(int   nPort,   int   nSpeed)  
  {  
  union   REGS   inregs,   outregs;  
   
  RESDOG;  
   
   
  inregs.h.ah   =   0x04;  
  inregs.h.al   =   0x00; //断开标志  
  inregs.h.bh   =   0x00; //奇偶校验  
  inregs.h.bl   =   0x00; //终止位  
  inregs.h.ch   =   0x11; //字长  
  switch   (nSpeed)   { //速率  
  case   110:  
  inregs.h.cl   =   0x00;  
  break;  
  case   150:  
  inregs.h.cl   =   0x01;  
  break;  
  case   300:  
  inregs.h.cl   =   0x02;  
  break;  
  case   600:  
  inregs.h.cl   =   0x03;  
  break;  
  case   1200:  
  inregs.h.cl   =   0x04;  
  break;  
  case   2400:  
  inregs.h.cl   =   0x05;  
  break;  
  case   4800:  
  inregs.h.cl   =   0x06;  
  break;  
  case   9600:  
  inregs.h.cl   =   0x07;  
  break;  
  case   19200:  
  inregs.h.cl   =   0x08;  
  break;  
  default:  
  inregs.h.cl   =   0x07;  
  break;  
  }  
  inregs.x.dx   =   nPort   -   1; //端口号  
  int86(0x14,   &inregs,   &outregs);  
   
  return   1;  
  }  
  好像有问题,初始化好后无法发数据Top

3 楼GoldWood()回复于 2004-08-03 13:36:56 得分 0

UUUUUUUUUUPTop

4 楼lwj_dxy(豆芽--抵制日货)回复于 2004-08-03 15:11:32 得分 0

up  
  Top

5 楼sekelon(罗伦罗亚索龙)回复于 2004-08-03 16:21:02 得分 0

我没有用过中断去初始化串口,一般用串口时我就使用上面那个函数通过直接对串口寄存器口进行读写操作来初始化的,函数里的一些大写字母是宏定义,表示各个寄存器的意思,实际上是端口的偏移量,一般串口的端口地址为2F8和3F8,这个地址加上适当的偏移量就是寄存器口了,不晓得你对串口的寄存器是否了解Top

6 楼peter9606( 荷尔蒙一失效 人就清醒了)回复于 2004-08-03 16:39:58 得分 0

markTop

7 楼Behard(我爱天安门)回复于 2004-08-03 18:05:51 得分 0

没有使用过   int   14   去操作  
  我都是使用   outportb、inportb   的Top

8 楼GoldWood()回复于 2004-08-04 09:38:18 得分 0

我在PIII的机器上为什么调不通dos下的串口程序,什么方法都不行Top

9 楼GoldWood()回复于 2004-08-04 09:41:30 得分 0

to   sekelon(罗伦罗亚索龙)   :我对串口寄存器不了解,是否有详细资料,谢谢!Top

10 楼sekelon(罗伦罗亚索龙)回复于 2004-08-04 10:00:33 得分 0

我手头上只有书,家里有电子版的,回去后给你Top

11 楼GoldWood()回复于 2004-08-04 10:02:21 得分 0

我的EM:zhbei@sh163a.sta.net.cn  
  谢谢,希望不是E文的Top

12 楼ckc(火)回复于 2004-08-04 10:48:31 得分 0

中断14不太好用,它要求握手线比较多,无法使用三线制传输。  
  你检查一下你的通讯线吧Top

13 楼GoldWood()回复于 2004-08-04 11:03:15 得分 0

to   ckc(火):?????,要如何连线呢,谢谢  
  Top

14 楼sekelon(罗伦罗亚索龙)回复于 2004-08-04 11:07:27 得分 0

用inportb(),outportb()就比较方便了,一般的三线就可以了,将两个串口的2,3号线对接(一个的2号接另一个的3号,交叉接线),5号直接连就可以了Top

相关问题

  • 在串口中断子程序中,如何关闭中断?
  • 怎样采用串口中断监视RS232串口有无数据上传
  • dos下串口中断程序怎么编?
  • Help Me!!!TC串口编程中的中断问题
  • 控制串口中断开启/禁止 用EA 保险吗
  • 串口中断 和定时器有怎样的关系?
  • 快快!!!简单的串口问题,如何让串口安接收数据长度中断?(50分)
  • 此生难忘,单片机中的串口接收中断触发事件!!!!
  • 如何用中断方式接收串口的数据!!(200分求)
  • 请问如何编程实现中断机制读取串口数据

关键词

  • portaddr+
  • inregs
  • inportb
  • outportb
  • rxd
  • cl
  • 线
  • 谢谢
  • break
  • case

得分解答快速导航

  • 帖主:GoldWood
  • sekelon

相关链接

  • C/C++ Blog
  • C/C++类图书
  • C/C++类源码下载

广告也精彩

反馈

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