您的位置:網站首頁 > 電器維修資料網 > 正文 >
單片機與電腦串口通信控制及附帶遙控控制程序
來源: 日期:2013-12-12 11:13:51 人氣:標簽:
/****** 單片機接收電腦串口發出的指令并執行相應動作。同時,也接收無線遙控發出的信號,并執行動作**************/
#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};//數碼管編碼,預留
uchar code ACT[4]={0xfe,0xfd,0xfb,0xf7};//數碼管顯示相關,預留
/*************************************************************/
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腳成高電平狀態,所以延時一下,下面把需要的引腳清0******、
P1=0x00;
D1=0;//要控制的引腳,清0.防止上電動作后不能復原
D2=0;
init();
while(1)
{
if(P1!=0x00) //無線遙控接收腳狀態掃描
{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)//串口接收數據處理
{
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++;} //串口發送數據
SBUF=b;while(!TI);TI=0; //回應串口指令內容
EA=1;
}
}
}
//*****************************************
void serial_serve(void) interrupt 4 //串口中斷
{
a=SBUF;
b=a;
EA=0;
}
【看看這篇文章在百度的收錄情況】
相關文章
- 上一篇: 匯編電子鐘的設計編程
- 下一篇: LCOS光學引擎架構分類解析