###下位機程序
/*********************************************************************************************
硬件支持: DB1(PCB1)
修改日誌:
完成開發,7路開關控制+全局開關
加入5到11路的擴展項目
/*********************************************************************************************
說明:
請使用DBC軟件進行控制。
DB1端串口波特率4800,每次接收2個字節的數據(數據頭碼+控制項目序號)
/*********************************************************************************************/
#include <reg52.h> //頭文件
#define HEAD 0x00//數據頭碼
sbit J1 = P0 ^ 0;//控制器接口定義
sbit J2 = P0 ^ 1;//
sbit J3 = P0 ^ 2;//
sbit J4 = P0 ^ 3;//
sbit J5 = P0 ^ 4;//
sbit J6 = P0 ^ 5;//
sbit J7 = P0 ^ 6;//
sbit J8 = P0 ^ 7;//
sbit LED_RUN = P1^4;
sbit LED_ERROR = P3^3;
/*sbit J9 = P1 ^ 7;//
sbit J10 = P1 ^ 7;//
sbit J11 = P1 ^ 7;//
/*********************************************************************************************/
void DELAY_MS (unsigned int a){//毫秒級延時
unsigned int i;
while( a-- != 0){
for(i = 0; i < 600; i++);
}
}
/*********************************************************************************************/
void UART_init (void){//UART串口初始化函數
TMOD = 0x20; //定時器T/C1工作方式2,定時器自動重載8位計數器
SCON = 0x50; //串口工作方式1,允許串口接收(SCON = 0x40 時禁止串口接收)
TH1 = 0xFD; //定時器初值高8位設置()
TL1 = 0xFD; //定時器初值低8位設置
PCON = 0x80; //波特率倍頻
TR1 = 1; //定時器啓動
}
/**********************************************************************************************/
void main (void){
unsigned char UART_data1,UART_data2; //定義串口接收數據變量
unsigned int s; //
LED_RUN = 0; //運行燈
DELAY_MS(1000);//延時防止下載時死機
UART_init();//串口初始化(查尋)
while(1)
{
if (RI == 1)
{ //接收中斷標誌位爲1時//接受數據頭碼
UART_data1 = SBUF; //接收數據 SBUF 爲單片機的接收發送緩衝寄存器
RI = 0; //令接收中斷標誌位爲0(軟件清零)
s=0;
while (s<2000 && UART_data1==HEAD)
{
//判斷頭碼是否正確,等待時間過長時跳出。
s++;
if (RI == 1)
{//開始接受控制數據
UART_data2 = SBUF;//
RI = 0;
switch (UART_data2)
{
case 0x01:J1=0;break;//第1路開
case 0x81:J1=1;break;//第1路關
case 0x02:J2=0;break;
case 0x82:J2=1;break;
case 0x03:J3=0;break;
case 0x83:J3=1;break;
case 0x04:J4=0;break;
case 0x84:J4=1;break;
case 0x05:J5=0;break;
case 0x85:J5=1;break;
case 0x06:J6=0;break;
case 0x86:J6=1;break;
case 0x07:J7=0;break;
case 0x87:J7=1;break;
case 0x08:J8=0;break;
case 0x88:J8=1;break;
/*case 0x09:J9=0;break;
case 0x89:J9=1;break;
case 0x0A:J10=0;break;
case 0x8A:J10=1;break;
case 0x0B:J11=0;break;
case 0x8B:J11=1;break;*/
case 0x0C:J1=0;J2=0;J3=0;J4=0;J5=0;J6=0;J7=0;/*J8=0;J9=0;J10=0;J11=0;*/break;//全局開關
case 0x8C:J1=1;J2=1;J3=1;J4=1;J5=1;J6=1;J7=1;/*J8=1;J9=1;J10=1;J11=1;*/break;
default://冗餘語句
break;
}
}
}
}
}
}
常用波特率 Fosc(MHZ) SMOD TH1初值
19200 11.0592 1 FDH
9600 11.0592 0 FDH
4800 11.0592 0 FAH
2400 11.0592 0 F4H
1200 11.0592 0 E8H