📄 main.c
字号:
#include <reg51.h>
#include <MODBUSCR.H>
typedef unsigned char BYTE;
sbit WDI = P3^4;
sbit PFO = P3^5;
sbit Light=P1^2;
sbit V_cont=P3^7;
bit mark_data;
BYTE SBUFlen, rxdata[7]; //接收数据缓存1
void slavetr_int(void) interrupt 4 using 1
{
if (RI)
{
if (SBUFlen == 0 && SBUF == 0x7e)
SBUFlen ++;
else if (SBUFlen == 1 && SBUF == rxdata[0])
SBUFlen ++;
else if (SBUFlen == 8)
{
if (SBUF != 0xaa)
SBUFlen = 0;
else if (!make_crc_rbank_1(rxdata, 7))
{
mark_data = 1;
SBUFlen ++;
}
else SBUFlen = 0;
}
else if (SBUFlen == 9)
0; //no action
else if (SBUFlen > 1)
{
rxdata[SBUFlen - 1] = SBUF; //SBUFlen:1-5为数据,6,7为CRC校验。
SBUFlen ++;
}
RI = 0;
}
return;
}
#define AppendCRC(dataBlock, num) { make_crc_rbank_0((dataBlock), (num)); (dataBlock)[(num)] = (byte)crc; (dataBlock)[(num)+1] = crc >> 8;}
BYTE tx[24]="\x01\x11\x11"; //发送数据缓存
void send_data(BYTE data *temp, BYTE num)
{
EA = 0; //关中断;
AppendCRC(temp, num);
num += 2;
SBUF = 0X7E; while(TI == 0); TI = 0;
while (num --)
{
SBUF = *temp ++;
while(TI == 0); TI=0;
}
SBUF = 0XAA; while(TI == 0); TI = 0;
EA = 1; //开中断;
}
void main()
{
bit dec_mark,dec_ok;
BYTE order_ok,act_ok; //接收数据存
BYTE i,dec_num,order_type,adc_step;
int count;
mark_data = 0; SBUFlen = 0;
tx[0] = rxdata[0] = 0x01;
/*串口232初始化*/
TMOD = 0x20;
TL1 = 0xfd;
TH1 = 0xfd;
SCON = 0x50;
PCON = 0x00;
TR1= 1;
ES = 1; //使用串口中断;
EA = 1; //开中断;
dec_mark = 0; order_ok = 0x00;
act_ok = 0xFF; dec_num = 0x00;
send_data(tx, 3); //串口发数据
Light = !Light;
while(1) //进入循环
{
WDI = !WDI;
if (mark_data == 1)
{
switch (rxdata[1])
{
case 0xEE: //数据请求指令
{
if (rxdata[2] == 0xEE)
{
tx[1] = 0xEE; tx[2] = 0x0A;
send_data(tx, 18); //串口发数据
}
} break;
case 0xB9: //确认减压后保压指令
{
tx[1] = 0xC4; tx[2] = rxdata[2]; tx[3] = 0xFF;
send_data(tx, 4); //串口发确认未执行保压
if(rxdata[2] == 0x11) V_cont=1;
else if(rxdata[2] == 0x22) V_cont=0;
} break;
default: break;
}
SBUFlen = 0; mark_data = 0;
}
if (PFO == 0) //低压报警
{
tx[1] = 0xE7; tx[2] = 0xD8; tx[3] = 0xD8;
send_data(tx, 4); //串口发请求低压报警
}
if (count > 12000)
{
count = 0;
Light = !Light;
}
count ++;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -