?? host.h
字號:
#ifndef HOST_H
#define HOST_H
#include "SegCode.h"
//定義輸出引腳
sbit JDQH = P1^3;
sbit JDQL = P1^4;
sbit TRG = P1^5;
sbit DATA = P1^6;
sbit CLK = P1^7;
sbit BUSY = P3^2;
sbit RST = P3^3;
sbit SO = P2^3; /*25045輸出*/
sbit SI = P2^1; /*25045輸入*/
sbit SCK = P2^2; /*25045時鐘*/
sbit CS = P2^0; /*25045片選*/
sbit WP = P0^2; /*25045寫保護*/
sbit DE = P1^2; /*MAX485的DE*/
#define WREN_INST 0X06
/* Write enable latch instruction (WREN)*/
#define WRDI_INST 0X04
/* Write disable latch instruction (WRDI)*/
#define WRSR_INST 0X01
/* Write status register instruction (WRSR)*/
#define RDSR_INST 0X05
/* Read status register instruction (RDSR)*/
#define WRITE_INST 0X02
/* Write memory instruction (WRITE)*/
/*寫入25045的先導字,應當為0000A010,其中的A為寫入25045的高位地址
將此WRITE_INST和寫入高位地址相或后即為正確的寫先導字*/
#define READ_INST 0X03
/* Read memory instruction (READ)*/
/*讀出25045的先導字,應當為0000A011,其中的A為讀出25045的高位地址
將此READ_INST和讀出高位地址相或后即為正確的讀先導字*/
#define BYTE_ADDR 0X55
/* Memory address for byte mode operations*/
#define BYTE_DATA 0X11
/*Data byte for byte write operation*/
#define PAGE_ADDR 0X1F
/* Memory address for page mode operations*/
/*頁面寫入的其始地址*/
#define PAGE_DATA1 0X22
/* 1st data byte for page write operation*/
#define PAGE_DATA2 0X33
/* 2nd data byte for page write operation*/
#define PAGE_DATA3 0X44
/* 3rd data byte for page write operation*/
#define STATUS_REG 0X00
/* Status register,設置DOG時間設置為200毫秒,無寫保護*/
/*這是狀態寄存器的值,他的意義在于第5,第4位為WDI1,WDI0代表DOG的時間,00為1.4秒,01為600毫秒,10為200毫秒,00為disabled
第3位和第2位為BL1,BL0,是寫保護設置位,00為無保護,01為保護180-1FF,10為保護100-1FF,11為保護000-1FF.第1位為WEL,
當他為1時代表已經"寫使能"設置了,現在可以寫了,只讀位.第0位為WIP,當他為1時代表正在進行寫操作,是只讀*/
#define MAX_POLL 0x99
/* Maximum number of polls*/
/*最大寫過程時間,確定25045的最大的寫入過程的時間*/
#define INIT_STATE 0x09
/* Initialization value for control ports*/
#define SLIC 0x30
/* Address location of SLIC*/
typedef union _WordType
{
word w;
byte b[2];
}WordType;
typedef union _DwordType
{
dword dw;
word w[2];
byte b[4];
}DwordType;
//運算參數
typedef struct _Param
{
DwordType wZero; //零位
DwordType wInCount; //校準信號
WordType Current; //當前電流值
WordType wInput; //輸入值
WordType wOutput; //輸出值
WordType wALR_L; //報警下限
WordType wALR_H; //報警上限
WordType Password; //密碼
byte bAlert; //報警標志位
byte PointPos; //小數點位置
byte bAddress; //地址
byte BaudIndex; //波特率下標
}PARAM, *PPARAM;
PARAM idata Param;
bit flag = 1;
byte idata Rarray[10];
byte idata Tarray[10];
byte changed = 0;
uchar KeyFuncIndex = 0;
void (*KeyFuncPtr)() reentrant; //按鍵功能指針
typedef struct
{
uchar KeyStateIndex; //當前狀態索引號
uchar KeyLeftState; //按下"向左"鍵時轉向的狀態索引號
uchar KeyRightState; //按下"向右"鍵時轉向的狀態索引號
uchar KeyMenuState; //按下"MENU"鍵時轉向的狀態索引號
uchar KeyEnterState; //按下"回車"鍵時轉向的狀態索引號
void (*CurrentOperate)() reentrant; //當前狀態應該執行的功能操作
}KbdTabStruct;
void wren_cmd(void);/*寫使能子程序*/
//void wrdi_cmd(void);/*寫使能復位*/
void wrsr_cmd(void);/*復位時間位和數據保護位寫入狀態寄存器*/
uchar rdsr_cmd(void);/*讀狀態寄存器*/
void byte_write(uchar aa,uint dd);/*字節寫入,aa為寫入的數據,dd為寫入的地址*/
uchar byte_read(uint dd);/*字節讀出,dd為讀出的地址,返回讀出的數據*/
void page_write(uchar aa1,uchar aa2,uchar aa3,uchar aa4,uint dd);/*頁寫入*/
void rst_wdog(void);/*DOG復位*/
void outbyt(uchar aa);/*輸出一個字節到25045中,不包括先導字等*/
uchar inputbyt();/*由25045輸入一個字節,不包括先導字等額外的東西*/
void wip_poll(void);/*檢查寫入過程是否結束*/
void Delay(uint utime, uint utime2) reentrant;
void I_Send(byte Data);
uchar GetKeyValue(uint *pValue, word Data, uchar uNum) reentrant;
//參數*pValue返回輸入,Data為輸入顯示,uNum為顯示的位數
void KeyResult(uchar uKey, uchar uMenu, uchar uEnter, word Value) reentrant;
void WriteParams(); //保存參數
void ReadParams(); //讀參數
//顯示數據
void Display(dword Data, uchar PointIndex) reentrant;
void GetKeyInput(void);
void Hints(uchar *pChar) reentrant;
//顯示參數
void GetParamsCode(uchar *pChar, uchar begin, word wData) reentrant; //段碼、顯示片選起點、參數
//測量BUSY的量(查詢方式)
dword GetCount();
//顯示測量數據
void DisplayCurrent();
//設置Prog
void OptionProg() reentrant;
void OptionAYS() reentrant;
void OptionIn_Out() reentrant;
void OptionALR() reentrant;
void OptionSecr() reentrant;
void OptionAdBd() reentrant;
void AutoZero() reentrant; //顯示零點
void InputX() reentrant; //顯示輸入值
void OutputX() reentrant; //顯示輸出值
void ALROFF() reentrant; //關閉報警
void ALRON() reentrant; //啟動報警
void Passward() reentrant; //密碼輸入
void AddrX() reentrant; //顯示當前地址
void BaudX() reentrant; //顯示當前波特率
void Inp() reentrant; //顯示INP
void Oup()reentrant; //顯示OUP
void Point() reentrant; //提示小數點輸入
void SetInput() reentrant; //設置輸入值
void SetOutput() reentrant; //設置輸出值
void SetPoint() reentrant; //設置小數點
void ALRLX() reentrant; //顯示報警下限
void ALRHX() reentrant; //顯示報警上限
void AL_L() reentrant; //報警下限輸入
void AL_H() reentrant; //報警上限輸出
void SetAL_L() reentrant; //設置低報警值
void SetAL_H() reentrant; //設置高報警值
void Address() reentrant; //提示地址輸入
void Baud() reentrant; //提示波特率輸入
void SetAddress() reentrant; //設置地址
void SetBaud() reentrant; //設置波特率
void SetTimer(uchar uIndex); //設置定時器的參數
void SendData(uchar uNum); //發送串行口數據
bit ReceiveData(uchar uNum); //接收串行口數據
#endif
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -