專注電子技術(shù)學(xué)習(xí)與研究
當(dāng)前位置:單片機(jī)教程網(wǎng) >> MCU設(shè)計(jì)實(shí)例 >> 瀏覽文章

單片機(jī)與電腦串口通信控制,附帶遙控控制

作者:佚名   來源:本站原創(chuàng)   點(diǎn)擊數(shù):  更新時(shí)間:2010年09月07日   【字體:

/****** 單片機(jī)接收電腦串口發(fā)出的指令并執(zhí)行相應(yīng)動(dòng)作。同時(shí),也接收無線遙控發(fā)出的信號(hào),并執(zhí)行動(dòng)作**************/

#include <REG51.H>
#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 :\0"; 
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);/******因?yàn)閱纹瑱C(jī)上電后IO腳成高電平狀態(tài),所以延時(shí)一下,下面把需要的引腳清0******、
P1=0x00;
D1=0;//要控制的引腳,清0.防止上電動(dòng)作后不能復(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]!='\0'){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;   
}  
 
關(guān)閉窗口

相關(guān)文章