📄 pc_com.c
字号:
#include <REG922.H>
#include "pc_com.h"
#include "sart.h"
#include "plc.h"
#include "string.h"
#include "amr_cctr.h"
#include "amr_config.h"
#include "wr_flash.h"
#define uint unsigned int
#define uchar unsigned char
//#define reg_setting 0x1d06
extern idata uchar amr_frame[]; // AMR frame buffer
extern code uchar METER_ADDR[6];
uchar code reg_setting[2];
/*=============================================================================* /
读FLASH 写入8300寄存器
/*=============================================================================*/
void RW_flash_data()
{
uchar d_frame[2];
EA = 0;
FLASH_ReadNByte ((int code *)®_setting[0], d_frame,2);
EA = 1;
write_reg(REG_WR_3E, d_frame[0]); //写入8300寄存器
write_reg(REG_WR_3F, d_frame[1]);
//新方法写入8300
// write_reg(REG_WR_3E, reg_setting[0]); //写入8300寄存器
// write_reg(REG_WR_3F, reg_setting[1]);
// uart_sendchar(d_frame[0]);
// uart_sendchar(d_frame[1]);
}
/*=============================================================================*/
// 减0x33
/*=============================================================================*/
void eviscerate(uchar frame[],uchar k)//减0x33
{
uchar i;
for(i = 0;i < k;i ++)
frame[i] -= 0x33;
}
/*=============================================================================*/
// 加0x33
/*=============================================================================*/
void punctuate(uchar frame[],uchar k)
{
uchar i;
for(i = 0;i < k;i ++)
frame[i] += 0x33;
}
/*=============================================================================*/
/*=============================================================================*/
void tx_com_data(uchar frame[],bit me) //串口查看数据处理
{
uchar i;
for(i = 0; i < 6;i++)amr_frame[i] = METER_ADDR[i]; //地址
amr_frame[6] = 0; //C = 0
amr_frame[7] = 20; //L = ?
if(me)amr_frame[8] = 0x55; //ID1 +33 电力网发出数据
else amr_frame[8] = 0x57; //ID1 +33 本地发出的数据
amr_frame[9] = 0x13; //ID0 +33
for(i = 0; i < 20;i++)
amr_frame[10 + i] = frame[i];
punctuate(&amr_frame[10],18); //+33
amr_frame[amr_frame[AMR_OS_L] + 8] = amr_check_cs(amr_frame,0);//校验和
amr_send_frame(METER_ADDR, amr_frame);
// com_reuner(buf);
}
/*=============================================================================*/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -