首先說壹下硬件連接,USB轉485信號電路塊(只要20塊錢,貴的都是妳的),MAX485芯片,11.0592M晶振(這個頻率晶振產生的波特率誤差低)。
思路:用串口中斷控制P0口的LED(我只是舉個例子,自己寫程序)。
該過程如下:
# include & ltreg 51 . h & gt;//選擇晶振11.0592MHz。
#define AddressID 0x31 //本地地址1
sbit rs485e=p3^7;//定義485 // RS5485E=0的使能引腳為接收狀態,RS5485E=1為發送狀態。
sbit max485_dir=p3^7;
主()
{
//* * * * * * * * * *通信設置
SCON = 0xf 0;//REN=1允許串口接受狀態,串口工作模式3,=1。
TMOD | = 0x 20;//定時器工作模式2
PCON | = 0x 80;//波特率加倍
IP = 0x 10;//串口優先級高。
th 1 = 0x F4;//FA///Baud * 2/*波特率4800,數據位8,停止位1。無效(11.0592M)
TL 1 = 0x F4;
tr 1 = 1;//啟動計時器1
EA = 1;//打開主機中斷
ES = 1;//打開串行端口中斷
RS 485 e = 0;// RS5485E=0為接收狀態,RS5485E=1為發送狀態。
while(1);
}
無效計數器4(無效)中斷4使用2//串行端口中斷
{
while(RI = = 0);
RI = 0;
if(SBUF==0x2a) //2a的ASCII碼是*
{
while(RI = = 0);
RI = 0;
If(SBUF==AddressID) //發送本地地址31的ASCII碼是1。
{
while(RI = = 0);
RI = 0;
if(SBUF==0x23) //23的ASCII碼是#
{
P0 = 254//P0 = 11111110。在這裏寫下妳想要控制LED的程序。
}
}
}
}
就這麽簡單。已經調試完畢,評論完畢。
PS:五天答題後補充:如果妳解決了問題,不要提問,不要給分。這個樓主不厚道,鑒定完了!