锐单电子商城 , 一站式电子元器件采购平台!
  • 电话:400-990-0325

c语言串口通信范例完整版.docx

时间:2023-02-25 03:30:00 b668传感器

标准化管理办公室编码[BBX968T-XBB8968-NNJ668-MM9N]

标准化管理办公室编码[BBX968T-XBB8968-NNJ668-MM9N]

c语言串口通信示例

串口通信程序示例C语言

标签

分类:

最近接触了一个项目,用HL-C1C激光位移传感器 易控组态软件已完成生产线高跳变检测,长期未接触c c#,找一些资料做个记录,也许大家都用。

#include <>#include <>#include <>#include <>

#define COM232 0x2f8#define COMINT 0x0b

#define MaxBufLen 500#define Port8259 0x20#define EofInt 0x20

static int comportaddr;static char intvectnum;static unsigned char maskb;static unsigned char Buffer[MaxBufLen];static int CharsInBuf,CircIn,CircOut;

static void (interrupt far *OldAsyncInt)();static void interrupt far AsyncInt(void);

void Init_COM(int ComPortAddr, unsigned 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/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);

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(CharsInBuf

void Restore(void){setvect(intvectnum,OldAsyncInt);outp(Port8259 1,maskb);}int GetCharInBuf(unsigned char *Char){int Flag;

Flag=-1;

if(CharsInBuf>0) { (*Char)=Buffer[CircOut]; if(CircOut

int SendChar(unsigned char Char){if((inp(comportaddr 5)&0x20)==0) return -1;outp(comp

锐单商城拥有海量元器件数据手册IC替代型号,打造电子元器件IC百科大全!

相关文章