Dos环境下串口编程.doc

  1. 1、本文档共10页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
#includestdio.h /*导入stdio.h头文件*/ #includedos.h /*导入dos.h头文件夹*/ #includeconio.h /*导入conio.h头文件*/ #define SIZE 1024*16?? /*定义接收缓冲区大小*/ #define PTL 0x01 /*波特率是115200*/ unsigned char state; void init_com_interrupt();?? /*初始化COM2端口,用于中断*/ void init_com_chanxun();?? /*初始化COM2端口,用于查询方式*/ void send_wait();/*发送等待*/ void receive_wait();??? /*接收等待*/ long file_size(FILE *fp);/*计算文件大小*/ void send_ch();/*发送字符,字符串*/ void send_file();/*发送文件*/ void receive_ch();/*接收字符,字符串*/ void receive_file();/*接收文件*/ void close_intr();/*关闭中断服务*/ void interrupt (*old_int)(void); void interrupt far receive_intr();/*中断服务程序,用于中断接收文件*/ void file_begin(); int flag=1; /* outputb和inportb对应的函数为_inp和_outp。使用时需要conio.h头文件。 建议使用_inp和_outp,而不是使用inp和outp。因为_inp和_outp在Debug和Release都可以使用, 而inp和outp只能用于Release设置。如果在Debug设置时使用inp和outp,编译时不会错, 但会产生链接错误如下:???? ??????????? error?? LINK2001:Unresolved?? external?? symbol?? _inp???? ??????????? error?? LINK2001:Unresolved?? external?? symbol?? _outp???? ??????????? fatal?? error?? LNK1120:2?? Unresolved?? externals.???? 以上方法只适用于Win9x,在Windows?? NT/2000下任何硬件I/O操作均需要通过设备启动程序。 你可以借助DDK(/ddk)编写设备驱动程序。当然你也可以购买现成的软件, 如/~zealsoft/cn/ntport/。 ********************************************** int _inp( unsigned short port ); int _outp( unsigned short port, int databyte ); _inp原型为: int _inp(unsigned short port); port参数为指定的输入端口号。调用后,它从port参数指定的端口读入并返回一个字节, 输入值可以是在0—255范围内的任意无符号整数值。 _outp原型为: int _outp(unsigned short port, int databyte ); port 参数为指定的输出端口号,databyte 参数为输出的值。 调用后,它将databyte参数指定的值输出到port 参数指定的端口并返回该值。 databyte 可以是0—255范围内的任何整数值。 这两个函数都没有错误值返回。 所在库为bios.h 在Win98下可以直接用, 但在NT下必须要挂driver */ void init_com_chanxun()??? /*初始化COM2端口*/ { ??? /*0x代表16进制*/ ???? outportb(0x2FB,0x80); /*最高位置为1设置波特率*/ ???? outportb(0x2F8,PTL);??? /*除数的低8位*/ ???? outportb(0x2F9,0x00);?? /*除数的高8位*/ ???? outportb(0x2FB,0x0b);?? /*2FB是通信线路控制寄存器,设置8数据位,一个停止位,有奇偶校验位*/ ???? outportb(0x2FC,0x03);????? /*设置2FC端口调制解调控制寄存器,使8250输出DTR(数据终端准备好)和RTS(请求发送)*/ ???? outportb(0x2F9,0x00);???? /*屏蔽所有中断*/ } void

文档评论(0)

hong333666 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档