电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

c语言串口通信范例

16页
  • 卖家[上传人]:桔****
  • 文档编号:490552377
  • 上传时间:2023-07-05
  • 文档格式:DOC
  • 文档大小:45KB
  • / 16 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • 1、一个c语言的串口通信程序范例标签: c语言串口通信通信程序it分类: 技术笔记 最近接触一个项目,用HL-C1C激光位移传感器+易控组态软件完成生产线高度跳变检测,好久没有接触c c#,一些资料,找来做个记录,也许大家用的着#include #include #include #include #define COM232 0x2f8#define COMINT 0x0b#define MaxBufLen 500#define Port8259 0x20#define EofInt 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 Com

      2、PortAddr, unsigned char IntVectNum, int Baud, unsigned char Data, unsigned char Stop, unsigned char Parity)unsigned char High,Low;int f;comportaddr=ComPortAddr;intvectnum=IntVectNum;授课:XXXCharsInBuf=0;CircIn=0;CircOut=0;f=(Baud/100);f=1152/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,0x0a);outp(ComPortAddr+1,0x01

      3、);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);static void interrupt far AsyncInt(void)disable();if(CharsInBufMaxBufLen) BufferCircIn=inp(comportaddr);if(CircIn0) (*Char)=BufferCircOut; if(CircOutMaxBufLen-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,C

      4、har);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); if(GetCharInBuf(&InChar)=0) printf(%c,InChar);Restore();授课:XXX授课:XXX接收程序:#include #include #include #include #include #include #define RXD 0 /接收#define TXD 0 /发送#define LSB 0 /波特率调节低8位#define MSB 1 /波特率调节高8位#define IER 1 / 中断起用寄存器#define IIR 2 /中断标识寄存器#define LCR 3 /线路控制寄存器#define MCR 4 /调制解调器控制寄存器#define LSR 5 /线路状态寄存器#define MSR 6 /调制解

      5、调器状态寄存器#define IERV 1#define OUT2 0x08#define ERTS 2#define EDTR 1#define EMPTY 0X20#define READY 0X30#define ICREG 0X20#define IMASKREG 0X21#define EOI 0X20#define WAITCOUNT 5000#define BUFFLEN 2048 /用于存储字符的数组的界#define ALTE 0X12#define ALTQ 0X10#define SER_BAUD_1200 96 #define SER_BAUD_2400 48#define SER_BAUD_9600 0x0C#define SER_BAUD_19200 6#define SER_STOP_1 0 /*/ 1 stop bit per character*/#define SER_STOP_2 4 /*/ 2 stop bits per character*/#define SER_BITS_5 0 /*/ send 5 bit characters*/#def

      6、ine SER_BITS_6 1 /*/ send 6 bit characters*/#define SER_BITS_7 2 /*/ send 7 bit characters*/#define SER_BITS_8 3 /*/ send 8 bit characters*/#define SER_PARITY_NONE 0 /*/ no parity*/#define SER_PARITY_ODD 8 /*/ odd parity*/#define SER_PARITY_EVEN 24 /*/ even parity*/int port;int ComNum;unsigned portaddr;unsigned portf;unsigned int baudtable=0x180,0xc0,0x60,0x30,0x18,0x0c,0x06;unsigned char paritytable=0x08,0x18,0x00,0x28,0x38;unsigned char bufferBUFFLEN;/recv bufint buffin=0;int buffout=0;int inc

      7、ount=0;int outcount=0;void interrupt(*vect_com)(.);void putb(unsigned char ch)/write a char to the recvbuf 将中断得到的数据写到缓冲区int temp;temp=buffin;if(+buffin=BUFFLEN) buffin=0;if(buffin!=buffout) bufferbuffin=ch; / printf(bufferin%d=%c,bufferbuffin); / getch(); else buffin=temp;unsigned char getb()/read a char from the recvbufif(buffout!=buffin) if(+buffout=BUFFLEN) buffout=0; /printf(bufferout%d=%c,buffout,bufferbuffout); return(bufferbuffout); else return(0xff);/*unsigned char sender( unsigned char ch)outportb(portaddr2+TXD,ch);printf(nsender outportdata=%cn,ch);outcount+;return(1);*/void interrupt receiver(.)unsigned char ch;ch=inportb(portaddr+RXD);putb(ch);incount+; /记录接收了多少个数据。outportb(ICREG,EOI);void SerInit(int baud,int configuration)dis

      《c语言串口通信范例》由会员桔****分享,可在线阅读,更多相关《c语言串口通信范例》请在金锄头文库上搜索。

      点击阅读更多内容
    关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
    手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
    ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.