?? fc802b.c
字號:
//***************************************
//修改:修改了
//int SetYMDH(int STimeFlag,unsigned char *time,unsigned char Tvalue,int Ulimt,int Dlimt);
//void SetYearMoDay(void); 這兩個函數
//時間:2003.7.1
//***************************************//
#include<msp430x14x.h>
#include<in430.h>
//#include"802b.h"
#include "sysinit.c" //系統初始化
//#include "display.c" //顯示程序
#define FLASH_ADDRESS 0x1000 //宏定義信息FLASH存儲器B段地址
#define O_ADress 0x28//源地址
#define T_ADress 0x01//目的地址
#define ID_Adress 0x02//本機識別地址
#define OilPresAdrH 0x10f1//油壓傳感器常數存放高位地址
#define OilPresAdrL 0x10f0//油壓傳感器常數存放低位地址
#define OilTempAdrH 0x10f3//油溫傳感器常數存放高位地址
#define OilTempAdrL 0x10f2//油溫傳感器常數存放低位地址
#define auchCRCHi 0x0c000;//CRC16高位參數的存放地址占256字節
#define auchCRCLo 0x0c100;//CRC16低位參數的存放地址占256字節
unsigned char cFLASH_Value=0;
unsigned int iFLASH_Value=0;
//unsigned char *puchMsg ; /* 要進行CRC校驗的消息 */
//unsigned short usDataLen ; /* 消息中字節數 */
unsigned short KeyFlag=1,FunctionValue,KeyValue,SendTimerFlag,Read9033Flag;
unsigned char Sw[2],OilFlag,SwFlag,T500msFlag,ErrFlag,flag;
void Flash_wb(char *,char);
void Flash_ww(int *,int);
void Flash_clr(int *);
void Init(void);
void SendEFrame(void);
unsigned short CRC16(unsigned char *puchMsg, unsigned short usDataLen);
int ADvalue[8];
struct SysTime
{
int s01;
int s;
int m;
int h;
int dot;
};
struct SysTime Time;
struct SetTime
{
int year;
int month;
int week;
int day;
int hour;
int min;
int sec;
} STime;
//void sys_init(void);
//void Display(char* D_Value);
//void Display1(int Tvalue);
void SetYearMoDay(void);
unsigned char CRC_FUN(unsigned char total);
void ADInit(void);
void UartInit(void);
void delay(int value);
void AFrame_data(void);
void EFrame_data(void);
void SysTest(void);
//int SetYMDH(int Tvalue,int Ulimt,int Dlimt);
int SetYMDH(int STimeFlag,unsigned char *time,unsigned char Tvalue,int Ulimt,int Dlimt);
void UIAlarmLimitSet(void);
void OilAlarmLimitSet(void);
void UpDispData(char* D_Data);
void DownDispData(char* D_Data);
void InitEDA9033(void);
void TimeSet(void);//上位機對該設備設置年月日和時間
void RelayCtl(void); //對繼電器開關控制
void StartAdc1(void);
void SendOK(void);
void SendErr(void);
extern int _setMap(int * A_ptr,char name[],char x,char g[]);
unsigned char A_Data[100];
unsigned char E_Data[100];
unsigned char Data[100],RxBuffer[100],TxBuffer[100];
unsigned int cosq;
int U[3],I[3],UaLimitH,UaLimitL,UbLimitH,UbLimitL,UcLimitH,UcLimitL;
char IaLimitH,IaLimitL,IbLimitH,IbLimitL,IcLimitH,IcLimitL;
long int P,unP;
int OilPLimitH,OilPLimitL,OilTLimitH,OilTLimitL;
char Sw1State,Sw2State;
int Crc_R[8]={0xe0,0x70,0x38,0x1c,0x0e,0x07,0xe3,0x91};
int DispFlag=0,CommandFlag=1,Q,unQ;
unsigned char UI[18];//Ua=UI[0,1];Ia=UI[2,3];Ub=UI[4,5];Ib=UI[6,7];Uc=UI[8,9];Ic=UI[10,11];P=UI[12,13];Q=UI[14,15],COSQ=UI[16,17]
//高位在前,低位在后, P,Q,COSQ的最高位為符號位, 1表示負數,0表示正數。
//P表示有功功率,Q表示無功功率, COSQ表示功率因數。
unsigned char PL[6];//Pa=PL[0,1];Pb=PL[2,3];Pc=PL[4,5]
// 高位在前,低位在后, Pa,Pb,Pc的最高位為符號位, 1表示負數,0表示正數。
unsigned char WP9033[4];//WP_9033=WP9033[0,1,2,3]
// 高位在前,低位在后, WP_9033的最高位為符號位, 1表示負數,0表示正數。
//WP_9033表示總的有功電量。
float Computer_value[14];//Computer_value[1]=Ua;Computer_value[2]=Ia;Computer_value[3]=Ub;Computer_value[4]=Ib;Computer_value[5]=Uc;
//Computer_value[6]=Ic;Computer_value[7]=P;Computer_value[8]=Q;Computer_value[9]=COSQ;Computer_value[10]=Pa;
//Computer_value[11]=Pb;Computer_value[12]=Pc;Computer_value[13]=WP_9033;
//這個數組保存的是已經計算為浮點數的各測量參數的值。
void main(void)
{
//unsigned char systime[7]={0,40,22,29,0,6,3};
int UpFlag=5,DownFlag=5;
unsigned char DataLen,i;
unsigned char DispSel_Value=0; //在顯示功能中顯示項的選擇標志
//char D_Data[40];
WDTCTL=WDTPW+WDTHOLD; //*關WDT只在調試時使用,發行時應正常使用WDT。*//
//系統時鐘初始化
do
{
IFG1 &= ~OFIFG; // Clear OSCFault flag
for (i = 0xFF; i > 0; i--); // Time for flag to set
}
while ((IFG1 & OFIFG) != 0); // OSCFault flag still set?
BCSCTL1 &=~(XT2OFF+XTS); //啟動XT2晶振,ACK為XT1,不分頻;
BCSCTL2 |=(SELS+SELM_2); //MCLK=XT2不分頻;SMLCK=XT2不分頻;
//系統初始化 sysinit.c\sysinit();
//1、系統檢測(功能代碼:E8H,幀類別代碼:57H,命令代碼:01H);
//2、系統遙測(三相交流電電壓(Ua、Ub、Uc)、電流(Ia、Ib、Ic)有效值、有功功率P、無功功率、功率因數、累計電量;功能代碼:E8H,幀類別代碼:57H,命令代碼:02H,該命令用于從新啟動測量);
//3、遙信(可以返回油壓、油溫兩路模擬量和兩路開關量;功能代碼:E8H,幀類別代碼:57H,命令代碼03H);
//4、系統遙控(繼電器開關量包含8路無源開關量控制輸出(開關編碼1…8);功能代碼E0H/E1H/E2H/E3H,幀類別代碼:57H,命令代碼:04H)
//5、設置時鐘(功能代碼:EEH,:1…8,功能代碼:E9H,幀類別代碼:48H,命令代碼:07H);
//8、設置油壓、油溫測量常數(功能粗±啾鶇
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -