一个c语言的串口通信程序范例_第1页
一个c语言的串口通信程序范例_第2页
一个c语言的串口通信程序范例_第3页
一个c语言的串口通信程序范例_第4页
一个c语言的串口通信程序范例_第5页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、精选文档#include <stdio.h>#include <dos.h>#include <conio.h>#include <string.h>#define COM232  0x2f8#define COMINT  0x0b#define MaxBufLen      500#define Port8259       0x20#define EofInt    

2、0;   0x20static int  comportaddr;static char intvectnum;static unsigned char maskb;static unsigned char BufferMaxBufLen;static int  CharsInBuf,CircIn,CircOut;static void (interrupt far *OldAsyncInt)();static void interrupt far AsyncInt(void);void Init_COM(int ComPortAddr, unsigne

3、d char IntVectNum, int Baud,       unsigned char Data, unsigned char Stop, unsigned char Parity) unsigned char High,Low; int f; comportaddr=ComPortAddr; intvectnum=IntVectNum; CharsInBuf=0;CircIn=0;CircOut=0;  f=(Baud/100); f=1152

4、/f; High=f/256; Low=f-High*256; outp(ComPortAddr+3,0x80); outp(ComPortAddr,Low); outp(ComPortAddr+1,High);  Data=(Data-5)|(Stop-1)*4); if(Parity=2) Data=Data|0x18; else if(Parity=1) Data=Data|0x8; outp(ComPortAddr+3,Data);  outp(ComPortAddr+4,0x

5、0a);  outp(ComPortAddr+1,0x01);  disable(); OldAsyncInt=getvect( IntVectNum ); setvect( IntVectNum, AsyncInt ); enable();  maskb=inp(Port8259+1); if(IntVectNum=0x0c)outp(Port8259+1,maskb&0xef); else outp(Port8259+1,maskb&0xf7); 

6、0;            static void interrupt far AsyncInt(void) disable(); if(CharsInBuf<MaxBufLen)  BufferCircIn=inp(comportaddr); if(CircIn<MaxBufLen-1) CircIn+; else CircIn=0; if(CircIn=CircOut) CircOut+; 

7、else CharsInBuf+; enable(); outp(Port8259,EofInt);void Restore(void) setvect(intvectnum,OldAsyncInt); outp(Port8259+1,maskb); int GetCharInBuf(unsigned char *Char) int Flag; Flag=-1; if(CharsInBuf>0)     (*Char)=BufferCircOut;   if(

8、CircOut<MaxBufLen-1)CircOut+;   else CircOut=0;   CharsInBuf-;   Flag=0;     return Flag;int SendChar(unsigned char Char) if(inp(comportaddr+5)&0x20)=0) return -1; outp(comportaddr,Char); return 0;main() int i,c; unsigned char InChar; Init_COM(COM232,COMINT,1200,8,1,0); while(1)     if(kbhit()     if(InChar=getch()=27)break;      else while(SendChar(InChar);  

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论