⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 headfiles.h

📁 实现了dsPIC30f6012a通过SPC3与PLC通信
💻 H
字号:
//Name:Headfiles.h
#include "p30f6012a.h"
#include "p30fxxxx.h"
#include "DataEEPROM.h"

#define _T1ON() {T1CON |= 0x8000;}
#define _T1OFF() {T1CON &= 0x7FFF;}
#define _T2ON() {T2CON |= 0x8000;}
#define _ADCON() {ADCON1 |= 0x8000;} //Enable A/D Converte
#define _ADCOFF() {ADCON1 &= 0x7FFF;} //Disable A/D Converte
#define _ADCSAMPSTART() {ADCON1 |= 0x0004;} //Start sample and conversion
#define _ADCSAMPOVER() {ADCON1 &= 0xFFFB;} //End sample
#define _SPION() {SPI1STAT |= 0x8000;}  //Enable SPI
#define _SPIOFF() {while (!SPI1STATbits.SPIRBF); SPI1STAT &= 0x7FFF;} //Disable SPI
#define _DACSYNC_ENABLE() {_RF2 = 0;}
#define _DACSYNC_DISABLE() {_RF2 = 1;}
#define EEPROM_START_ADDR   0x7FF000

#define SYSTME_SERVO_CYCLE 0x099D //start value for Timer1 counter
//the basic digital 1 is approximately 0.065us, so...

//-----------------------Define the labels to decide which key is pressed
#define NON_KEY    0     //No key
#define UP_KEY     1     //'Up' key
#define DOWN_KEY   2     //'Down' key
#define LEFT_KEY   3     //'Left' key
#define RIGHT_KEY  4     //'Right' key
#define MENU_KEY   5     //'menu' key
#define ENTER_KEY  6     //'enter' key

//-----------------------Define the steps for keyboard scan
#define KEYBOARD_SCAN_START     0  //Scan starts
#define KEYBOARD_SCAN_DELAY_1   1  //Delay to avoid mechanical vibration
#define KEYBOARD_SCAN_GETKEY    2  //Read the value of scan 
#define KEYBOARD_SCAN_DELAY_2   3  //Delay for acceleration
#define KEYBOARD_SCAN_SPDUP_1   4  //Acceleration one mode
#define KEYBOARD_SCAN_SPDUP_2   5  //Acceleration another mode

//-------------------------Define the labels for LCD display
#define MAIN_VIEW           0  //Main interface which is the first view
#define ENTER_ASK_VIEW      1  //Ask interface for saving data
#define ENTER_ANS_VIEW      2  //Result interface for saving completion
#define MENU_VIEW           3  //Menu interface
#define CONTROL_SET_VIEW    4  //Control parameter config interface
#define CHANNEL_1SET_VIEW   5  //Channel-one parameter config ...
#define CHANNEL_2SET_VIEW   6  //Channel-two para ...
#define SYSTEM_SET_VIEW     7  //System Para ...
#define SYSTEM_TEST_VIEW    8  //System test data interface for testing
#define SYSTEM_CHECK_VIEW   9
#define SYSTEM_ADJUST_VIEW  10
#define HISTORY_INFOR_VIEW  11
#define HELP_VIEW           12

//----------------------------Define the parameters of software filter
#define AD_FILTER_COUNT                4  //The volume of soft filter
#define AD_FILTER_POWERE_COEFFICIENT   2  //The math_power of the filter

//----------------------------Define condition compile
//Use the sentence "#define GLOBAL_VAR" for using the fllowing variables...
//as global ones in this headfiles; and do not use that sentence means...
//use the fllowing variables as external ones.
#ifdef GLOBAL_VAR
#define EXTERN_VAR  
#else
#define EXTERN_VAR  extern
#endif

//---------------------------Define Variables for all functions
EXTERN_VAR unsigned char Code[5][20], Code_Buffered[5][20];
EXTERN_VAR int P1_Cylinder[2], P2_Cylinder[2], L_Cylinder[2],
               L_Set[2], I_Sevovalve[2];
EXTERN_VAR int P1_Cylinder_AD[2], P2_Cylinder_AD[2], L_Cylinder_AD[2],
               I_Sevovalve_AD[2];
EXTERN_VAR int L_Cylinder_AD[2], L_Set_AD[2];
EXTERN_VAR int Offset[2][5], PID[2];
EXTERN_VAR unsigned int Output[2];
EXTERN_VAR int PID_Error_Sum[2], P_Force_Sum[2];
EXTERN_VAR int PID_Proportional[2], PID_Integral[2], PID_Derivative[2];
EXTERN_VAR int L_Filter[2][AD_FILTER_COUNT], P1_Filter[2][AD_FILTER_COUNT],
               P2_Filter[2][AD_FILTER_COUNT];
EXTERN_VAR unsigned char Filter_Ptr;
EXTERN_VAR unsigned char Key_Value, Key_Buffer, Key_Counter, Key_Step;
EXTERN_VAR unsigned char Arrow_Position;
EXTERN_VAR unsigned char Interface;
EXTERN_VAR int Control_Parameter[26],
               Channel_Parameter[2][6],
               System_Parameter[6],
               System_Zero_Point[2],
               System_Parameter_Asic[11];
EXTERN_VAR unsigned char Refresh_LCD_Flag, Refresh_Key_Flag;
EXTERN_VAR unsigned int Refresh_LCD_Cycle, Refresh_Key_Cycle;
EXTERN_VAR unsigned int Frequency_PWM;
EXTERN_VAR unsigned char Function_Ctrl;
EXTERN_VAR unsigned int System_Zero_Flag;
EXTERN_VAR long int Temp_Lint;
EXTERN_VAR long int System_Delay;
EXTERN_VAR int P1_sample_recorder[2][3], P2_sample_recorder[2][3], L_sample_recorder[2][3];

//----------------------------------Illustrate the functions
//Sub-Functions in "ADCDAC.c" file
void ADC(void);
void DAC(void);

//Sub-Functions in "Assistant.c" file
void SPI_Data_Output(unsigned char send_data);
int Middle_Value(int first, int second, int third);
int Absolute_Value(int number);
void Zero_Study_Self(unsigned char channel, int input);
void Force_Study_Self(unsigned channel);
void Number_Display(unsigned char x, unsigned char y,
                    unsigned char num_total_digit,
                    unsigned char radix_ptr_digit,
                    int number);
void LCD_Arrow_Position(unsigned char value, unsigned char *y_arrow,
                        unsigned char arrow_min, unsigned char arrow_max);
void LCD_Arrow_Display(unsigned char y_arrow);
void Number_Indecrease_Asic(unsigned char key_value, int *parameter,
                            unsigned char max, unsigned char min);
void Number_Indecrease(unsigned char key_value, int *parameter,
                       int max, int min, int delt);
void Array_Ptr(unsigned char interface, unsigned char y_arrow,
               unsigned char *array_ptr);
void Code_Inputs(unsigned char Code0[20], unsigned char Code1[20], 
                 unsigned char Code2[20], unsigned char Code3[20],
                 unsigned char Code4[20]);

//Sub-Funcitons in "Flash.c" file
void EEPROM_Write(void);
void EEPROM_Read(void);

//Sub-Functions in "Init.c" file
void Hardware_Init(void);
void Software_Init(void);

//Sub-Functions in "Keyboard.c" file
void Key_Scan(unsigned char *buffer, unsigned char *counter,
              unsigned char *step, unsigned char *key_value);
void Key_Treat(unsigned char key_value);

//Sub-Functions in "LCDDrive.c" &"LCDInterface.c" files
void LCD_Clear(void);
void LCD_Drive(void);
void LCD_Display(void);

//Sub-Functions in "PIDControl.c" & "PWM.c" files
void PID_Control(void);
void Tremble_Frequency(unsigned int frequency);

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -