首先我們說下硬件接法,USB轉485信號電路塊(只要20元,貴了的都是坑妳的),MAX485芯片,11.0592M晶振(這個頻率的晶振產生的波特率誤差低)
思路:利用串口中斷方式對P0口的LED進行控制(我只是舉例,程序妳自己寫)
程序如下:
#include <reg51.h> //選用晶振11.0592MHz
#define AddressID 0x31 //本機地址1
sbit RS485E=P3^7; //定義485的使能腳// RS5485E=0為接收狀態 RS5485E=1為發送狀態
sbit MAX485_DIR=P3^7;
main()
{
//****************通訊設置
SCON = 0xF0; //REN=1允許串行接受狀態,串口工作模式3,SM2=1
TMOD|= 0x20; //定時器工作方式2
PCON|= 0x80; //波特率提高壹倍
IP=0x10; //串口優先級高
TH1 = 0xf4; //fa // //baud*2 /* 波特率4800、數據位8、停止位1。效驗位無 (11.0592M)
TL1 = 0xf4;
TR1 = 1; //開啟定時器1
EA = 1; // 開總中斷
ES = 1; //開串口中斷
RS485E=0; // RS5485E=0為接收狀態 RS5485E=1為發送狀態
while(1);
}
void counter4(void) interrupt 4 using 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=1111 1110,這裏寫妳要對LED控制的程序
}
}
}
}
就是這麽簡單,已經調試通過,註釋也有
PS:回答問題五天後的補充:解決了問題不追問,不給分,這個樓主不厚道,鑒定完畢 !