工控網(wǎng)首頁
>

應(yīng)用設(shè)計

>

單片機與電腦串口通信控制

單片機與電腦串口通信控制

2016/4/1 17:23:49

/****** 單片機接收電腦串口發(fā)出的指令并執(zhí)行相應(yīng)動作。同時,也接收無線遙控發(fā)出的信號,并執(zhí)行動作**************/ #include #define uchar unsigned char #define uint unsigned int uchar code SEG7[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};//數(shù)碼管編碼,預(yù)留     uchar code ACT[4]={0xfe,0xfd,0xfb,0xf7};//數(shù)碼管顯示相關(guān),預(yù)留 /*************************************************************/ uchar code as[]=" shoudao zhiling :"; uchar a=0x30,b; sbit D1=P2^3; sbit D2=P2^4; //**************************************************** void init(void) { TMOD=0x20; TH1=0xfd; TL1=0xfd; SCON=0x50; TR1=1; ES=1; EA=1; } //************************ void delay(uint k) { uint data i,j; for(i=0;i<k;i  ) { for(j=0;j<121;j++){;} } } //************************************** void main(void) { uchar i,temp; P2=0xff; delay(3000);/******因為單片機上電后IO腳成高電平狀態(tài),所以延時一下,下面把需要的引腳清0******、 P1=0x00; D1=0;//要控制的引腳,清0.防止上電動作后不能復(fù)原 D2=0; init(); while(1) { if(P1!=0x00) //無線遙控接收腳狀態(tài)掃描 {delay(10); if(P1!=0x00) temp=P1; } switch(temp )//遙控接收處理 { case 0x01:D1=1;break; case 0x02:D1=0;break; case 0x04:D2=1;break; case 0x08:D2=0;break; default:break; } switch(b)//串口接收數(shù)據(jù)處理

{ case 0x31:D1=1;break; case 0x32:D1=0;break; case 0x33:D2=1;break; case 0x34:D2=0;break; case 0x35:D1=0;D2=0;break; default:break; } delay(1); if(RI) { RI=0;i=0; while(as[i]!=''){SBUF=as[i];while(!TI);TI=0;i++;} //串口發(fā)送數(shù)據(jù) SBUF=b;while(!TI);TI=0; //回應(yīng)串口指令內(nèi)容 EA=1; } } } //***************************************** void serial_serve(void) interrupt 4 //串口中斷 { a=SBUF; b=a; EA=0; }

 

投訴建議

提交

查看更多評論
其他資訊

查看更多

超越傳統(tǒng)直覺,MATLAB/Simulink助力重型機械的智能化轉(zhuǎn)型

新大陸自動識別精彩亮相2024華南國際工業(yè)博覽會

派拓網(wǎng)絡(luò)被Forrester評為XDR領(lǐng)域領(lǐng)導(dǎo)者

智能工控,存儲強基 | ??低晭砭手黝}演講

展會|Lubeworks路博流體供料系統(tǒng)精彩亮相AMTS展會