資源描述:
《c語言串口通信典范文本》由會員上傳分享,免費在線閱讀,更多相關內容在教育資源-天天文庫。
1、''一個c語言的串口通信程序范例標簽:c語言串口通信通信程序it分類:技術筆記最近接觸一個項目,用HL-C1C激光位移傳感器+易控組態(tài)軟件完成生產(chǎn)線高度跳變檢測,好久沒有接觸cc#,一些資料,找來做個記錄,也許大家用的著#include#include#include#include#defineCOM232?0x2f8#defineCOMINT?0x0b#defineMaxBufLen?????500#definePort8259??????
2、0x20#defineEofInt???????0x20staticint?comportaddr;staticcharintvectnum;staticunsignedcharmaskb;staticunsignedcharBuffer[MaxBufLen];staticint?CharsInBuf,CircIn,CircOut;staticvoid(interruptfar*OldAsyncInt)();staticvoidinterruptfarAsyncInt(void);voidInit_COM(int
3、ComPortAddr,unsignedcharIntVectNum,intBaud,??????unsignedcharData,unsignedcharStop,unsignedcharParity){?unsignedcharHigh,Low;?intf;?comportaddr=ComPortAddr;?intvectnum=IntVectNum;''?CharsInBuf=0;CircIn=0;CircOut=0;??f=(Baud/100);?f=1152/f;High=f/256;?Low=f-Hi
4、gh*256;?outp(ComPortAddr+3,0x80);?outp(ComPortAddr,Low);?outp(ComPortAddr+1,High);??Data=(Data-5)
5、((Stop-1)*4);?if(Parity==2)Data=Data
6、0x18;?elseif(Parity==1)Data=Data
7、0x8;?outp(ComPortAddr+3,Data);??outp(ComPortAddr+4,0x0a);??outp(ComPortAddr+1,0x01);??disab
8、le();?OldAsyncInt=getvect(IntVectNum);?setvect(IntVectNum,AsyncInt);?enable();??maskb=inp(Port8259+1);?if(IntVectNum==0x0c)outp(Port8259+1,maskb&0xef);?elseoutp(Port8259+1,maskb&0xf7);??????????????}staticvoidinterruptfarAsyncInt(void){?disable();?if(CharsInB
9、uf10、CharInBuf(unsignedchar*Char){?intFlag;?Flag=-1;?if(CharsInBuf>0)?{??(*Char)=Buffer[CircOut];??if(CircOut11、p(comportaddr,Char);?return0;}main(){?inti,c;?unsignedcharInChar;?Init_COM(COM232,COMINT,1200,8,1,0);?while(1)?{??if(kbhit())????{if((InChar=getch())==27)break;?????elsewhile(SendChar(InC