厂家提供的芯片资料

This commit is contained in:
2026-10-19 15:33:00 +08:00
commit dcee04a348
36 changed files with 7640 additions and 0 deletions

View File

@@ -0,0 +1,306 @@
/**************************************************************************
**************************************************************************/
#include "Define_Global.h"
/**************************************************************************
* 函数名称:Init_UserRam
* 函数功能:初始化用户寄存器
* 入口参数:无
* 出口参数:无
* 备 注:初始化调用
**************************************************************************/
void Init_UserRam()
{
#if _MODE_COMM_NO_
B_Comm_No = 1; //无通信模式
#elif _MODE_COMM_HAVE_
B_Comm_Have = 1; //有通信模式
#endif
Buzz_Long_One(); //蜂鸣器长鸣1声
B_Adc_Curr = 1; //检测工作电流AD
//---------------------------------------------------------------------
//配置缓存初始化:
Buf_PPGMin = C_PPGMin;
Buf_PPGMax = C_PPGMax;
Buf_PPGMax_Steel = C_PPGMax_Steel;
Buf_PPGMax_Iron = C_PPGMax_Iron;
Buf_Power_CurrerConst = (unsigned int)(C_Vol_Low * C_Currer_Const);
Buf_PowerLose_VHigh = C_PowerLose_VHigh;
Buf_PowerLose_VLow = C_PowerLose_VLow;
Buf_Vol_LowErr_In = C_Vol_LowErr_In - C_Vol_Comp;
Buf_Vol_LowErr_Out = C_Vol_LowErr_Out - C_Vol_Comp;
Buf_Vol_HighErr_In = C_Vol_HighErr_In - C_Vol_Comp;
Buf_Vol_HighErr_Out = C_Vol_HighErr_Out - C_Vol_Comp;
Buf_AD_Pan_FanOn = C_AD_Pan_FanOn;
Buf_AD_Pan_FanOff = C_AD_Pan_FanOff;
Buf_AD_Pan_OverIn = C_AD_Pan_OverIn;
Buf_AD_Pan_OverOut = C_AD_Pan_OverOut;
Buf_AD_Igbt_FanOn = C_AD_Igbt_FanOn;
Buf_AD_Igbt_FanOff = C_AD_Igbt_FanOff;
Buf_AD_Igbt_OverIn = C_AD_Igbt_OverIn;
Buf_AD_Igbt_OverOut = C_AD_Igbt_OverOut;
Buf_AD_Igbt_HighIn = C_AD_Igbt_HighIn;
Buf_AD_Igbt_HighOut = C_AD_Igbt_HighOut;
//---------------------------------------------------------------------
ValueOPA_Set = 0B00000000;
#ifdef _TEST_PGAOUT_
ValuePGA_Set = 0B10000010 | ((C_Times_PGA & 0x03) << 5);
#else
ValuePGA_Set = 0B10000000 | ((C_Times_PGA & 0x03) << 5);
#endif
#ifdef _TEST_CMPOUT_
ValueCM_Test = 0x08 | (C_CMOUTEN_Num & 0x07);
#else
ValueCM_Test = 0;
#endif
ValuePPG_Single = C_PPGSingle;
ValueCnt_HaveNoPan = C_Vaule_HaveNoPan;
ValueTime_PPGDly = C_PPGDly;
ValueVol_VolSurge = C_Vol_VolSurge;
ValueVol_CurrSurge = C_Vol_CurrSurge;
ValueVol_OnStep = C_Vol_OnStep;
ValueVol_BackPress1 = C_Vol_BackPress1;
ValuePPG_BackPress1 = C_PPG_BackPress1;
ValueVol_BackPress2 = C_Vol_BackPress2;
}
/**************************************************************************
* 函数名称:Clean_Ram
* 函数功能:清通用寄存器
* 入口参数:无
* 出口参数:无
* 备 注:初始化调用
**************************************************************************/
void Clean_Ram()
{
CLRWDT(); //清看门狗
for(FSR = 0x20; FSR < 0x7F; FSR++)
{
INDF = 0;
}
for(FSR = 0xA0; FSR < 0xEF; FSR++)
{
INDF = 0;
}
IRP = 1;
for(FSR = 0x20; FSR < 0x7F; FSR++)
{
INDF = 0;
}
for(FSR = 0xA0; FSR < 0xEF; FSR++)
{
INDF = 0;
}
IRP = 0;
}
/**************************************************************************
* 函数名称:Init_System
* 函数功能:初始化系统
* 入口参数:无
* 出口参数:无
* 备 注:初始化调用
**************************************************************************/
void Init_System()
{
NOP();
INTCON = 0; //中断禁止
NOP();
NOP();
NOP();
NOP();
CLRWDT(); //清看门狗
OSCCON = 0x70; //内部振荡频率为32MHz(默认为16MHz)
OPTION_REG = 0B00001100; //WDT分频:1/16
PORTA = C_Init_PORTA;
PORTB = C_Init_PORTB; //初始化IO电平
PORTC = C_Init_PORTC;
#if _MODE_COMM_NO_ || !_MODE_COMM_HAVE_
WPUA = SetWPUX_CommNo(0xA);
WPUB = SetWPUX_CommNo(0xB); //初始化IO上拉
WPUC = SetWPUX_CommNo(0xC);
TRISA = SetTRISX_CommNo(0xA);
TRISB = SetTRISX_CommNo(0xB); //初始化IO方向
TRISC = SetTRISX_CommNo(0xC);
#else
WPUA = SetWPUX_CommHave(0xA);
WPUB = SetWPUX_CommHave(0xB); //初始化IO上拉
WPUC = SetWPUX_CommHave(0xC);
TRISA = SetTRISX_CommHave(0xA);
TRISB = SetTRISX_CommHave(0xB); //初始化IO方向
TRISC = SetTRISX_CommHave(0xC);
#endif
PORTA = C_Init_PORTA;
PORTB = C_Init_PORTB; //初始化IO电平
PORTC = C_Init_PORTC;
INTCON = 0; //中断禁止
INTCON2 = 0;
PIR1 = 0; //清中断请求标志
PIR2 = 0;
PIR3 = 0;
PIE1 = 0; //清中断允许标志
PIE2 = 0;
PIE3 = 0;
OPTION_REG = 0B00000111; //Timer0分频:1/256
TMR0 = 0;
TMR1H = 0;
TMR1L = 0;
T1CON = 0B00110001; //使能Timer1,预分频=8
PR2 = C_TimeUS_Int * 4; //设置Timer2时间
T2CON = 0B00001100; //使能Timer2,预分频=1,后分频=2
TMR2IE = 1; //Timer2中断使能
INTCON = 0xC0; //中断使能
}
/**************************************************************************
* 函数名称:Refurbish_IO
* 函数功能:刷新IO
* 入口参数:无
* 出口参数:无
* 备 注:主循环调用,可增强抗干扰能力
*【注 意】:RB1必须设为推挽输出,RB2必须设为上拉输入(程序默认设置,可不改动)
**************************************************************************/
void Refresh_IO()
{
#if !_MODE_COMM_NO_ && !_MODE_COMM_HAVE_
if(B_Comm_No)
#endif
#if _MODE_COMM_NO_ || !_MODE_COMM_HAVE_
{
WPUA = SetWPUX_CommNo(0xA);
WPUB = SetWPUX_CommNo(0xB);
WPUC = SetWPUX_CommNo(0xC);
TRISA = SetTRISX_CommNo(0xA);
TRISB = SetTRISX_CommNo(0xB);
TRISC = SetTRISX_CommNo(0xC);
}
#endif
#if !_MODE_COMM_NO_ && !_MODE_COMM_HAVE_
else
#endif
#if !_MODE_COMM_NO_
{
WPUA = SetWPUX_CommHave(0xA);
WPUB = SetWPUX_CommHave(0xB);
WPUC = SetWPUX_CommHave(0xC);
TRISA = SetTRISX_CommHave(0xA);
TRISB = SetTRISX_CommHave(0xB);
TRISC = SetTRISX_CommHave(0xC);
}
#endif
}
/**************************************************************************
* 函数名称:Refurbish_Sfr
* 函数功能:刷新特殊功能寄存器
* 入口参数:无
* 出口参数:无
* 备 注:主循环调用,可增强抗干扰能力
**************************************************************************/
void Refresh_Sfr()
{
PIE1 = 0x02;
PIE2 = 0;
PIE3 = 0;
INTCON = 0xC0; //中断使能
INTCON2 = 0;
OPTION_REG = 0B00000111; //Timer0分频:1/256
if(0B00110001 != T1CON) //T1CON值不变就不写
{ //写操作会影响计时,在T1CON没有乱的时候不写
T1CON = 0B00110000;
T1CON |= 0x01;
}
PR2 = C_TimeUS_Int * 4; //设置Timer2时间
if(0B00001100 != T2CON) //T2CON值不变就不写
{ //写操作会影响计时,在T2CON没有乱的时候不写
T2CON = 0B00001000;
T2CON |= 0x04;
}
}
/**************************************************************************
-------------------------------- 主循环处理 -------------------------------
**************************************************************************/
void main() @0x0800
{
CRCDL--;CRCDH--;
Clean_Ram(); //清通用寄存器
Init_System(); //初始化系统
#if !_MODE_IHDEBUG_ && (_MODE_COMM_NO_ || !_MODE_COMM_HAVE_)
Init_HMI(); //初始化人机界面
#endif
Delay_Xms(200); //上电延时
Init_UserRam(); //初始化用户寄存器
while(1)
{
if(TMR1IF)
{
TMR1IF = 0;
TMR1L = 0xFFFF - C_TimeMS_Main * 4000;
TMR1H = (0xFFFF - C_TimeMS_Main * 4000) >> 8;
CLRWDT(); //清看门狗
Refresh_IO(); //刷新IO
Refresh_Sfr(); //刷新特殊功能寄存器
Deal_Adc(); //ADC处理
Set_OutPut(); //输出设置
Set_PPGWork(); //PPG工作设置
#if _MODE_IHDEBUG_
REL_IhDebug_Main(); //IH调试处理(主循环)
#else
#if !_MODE_COMM_NO_ && !_MODE_COMM_HAVE_
if(B_Comm_No)
#endif
#if _MODE_COMM_NO_ || !_MODE_COMM_HAVE_
{
Deal_HMI(); //人机界面处理
}
#endif
#if !_MODE_COMM_NO_ && !_MODE_COMM_HAVE_
else
#endif
#if !_MODE_COMM_NO_
{
Deal_CommData(); //通信数据处理
}
#endif
#endif
}
}
}