上传文件至 /

This commit is contained in:
2025-07-05 07:58:42 +08:00
parent 1df71b7ef3
commit 9f0b84b83d
5 changed files with 1083 additions and 0 deletions

122
SwDriver.H Normal file
View File

@@ -0,0 +1,122 @@
#ifndef _MC33993_H_
#define _MC33993_H_
//*****************************************************************************
//<2F><EFBFBD><EAB6A8>
//*****************************************************************************
//<2F><><EFBFBD><EFBFBD>20Ƭ<30><C6AC>Ҫ<EFBFBD><D2AA><EFBFBD><EFBFBD>
#define Mc33993_0 0
#define Mc33993_1 1
#define Mc33993_2 2
#define Mc33993_3 3
#define Mc33993_4 4
#define Mc33993_5 5
#define Mc33993_6 6
#define Mc33993_7 7
#define Mc33993_8 8
#define Mc33993_9 9
#define Mc33993_10 10
#define Mc33993_11 11
#define Mc33993_12 12
#define Mc33993_13 13
#define Mc33993_14 14
#define Mc33993_15 15
#define Mc33993_16 16
#define Mc33993_17 17
#define Mc33993_18 18
#define Mc33993_19 19
#define Mc33993_20 20
#define D24V 0
#define Gnd 1
#define TriOff 0
#define TriOn 1
#define WetCur2mA 0
#define WetCur16mA 1
#define SwToGnd 0
#define SwToPwr 1
#define ALLTRI 0xff
#define ALLD24V 0x0
#define DF_CMDSWSTATUS 0x00
#define DF_CMDSETTING 0x01
#define DF_CMDINT_SP 0x02
#define DF_CMDINT_SG 0x03
#define DF_CMDMETALLIC_SP 0x04
#define DF_CMDMETALLIC_SG 0x05
#define DF_CMDANALOG 0x06
#define DF_CMDWETCURR_SP 0x07
#define DF_CMDWETCURR_SG 0x08
#define DF_CMDTRISTATE_SP 0x09
#define DF_CMDTRISTATE_SG 0x0A
#define DF_CMDCALIBRATION 0x0B
#define DF_CMDSLEEP 0x0C
#define DF_CMDRESET 0x7F
#define DF_FLGTHEM 10
#define DF_FLGINT 11
#define DF_FLGSP7 12
#define DF_FLGSP6 13
#define DF_FLGSP5 14
#define DF_FLGSP4 15
#define DF_FLGSP3 16
#define DF_FLGSP2 17
#define DF_FLGSP1 18
#define DF_FLGSP0 19
#define DF_FLGSG13 20
#define DF_FLGSG12 21
#define DF_FLGSG11 22
#define DF_FLGSG10 23
#define DF_FLGSG9 24
#define DF_FLGSG8 25
#define DF_FLGSG7 26
#define DF_FLGSG6 27
#define DF_FLGSG5 28
#define DF_FLGSG4 29
#define DF_FLGSG3 30
#define DF_FLGSG2 31
#define DF_FLGSG1 32
#define DF_FLGSG0 33
//Analog
#define DF_AN_HIMP 1
#define DF_AN_2MA 2
#define DF_AN_16MA 3
#define DF_CH_SG0 1
#define DF_CH_SG1 2
#define DF_CH_SG2 3
#define DF_CH_SG3 4
#define DF_CH_SG4 5
#define DF_CH_SG5 6
#define DF_CH_SG6 7
#define DF_CH_SG7 8
#define DF_CH_SG8 9
#define DF_CH_SG9 10
#define DF_CH_SG10 11
#define DF_CH_SG11 12
#define DF_CH_SG12 13
#define DF_CH_SG13 14
#define DF_CH_SP0 15
#define DF_CH_SP1 16
#define DF_CH_SP2 17
#define DF_CH_SP3 18
#define DF_CH_SP4 19
#define DF_CH_SP5 20
#define DF_CH_SP6 21
#define DF_CH_SP7 22
//*****************************************************************************
//<2F>ⲿ<EFBFBD><E2B2BF><EFBFBD><EFBFBD>ȫ<EFBFBD>ֺ<EFBFBD><D6BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//*****************************************************************************
void SwStaSample(UnSwSample *ptmp);
void InitSW(void);
void LedLight(UnSwOut *tmpUn);
//void Swtest2(void);
//ubyte Mc33993AnalogChSel(ubyte NumMc,ubyte Mode,ubyte Channal);
#endif

175
T2.C Normal file
View File

@@ -0,0 +1,175 @@
//****************************************************************************
// @Module Timer 2
// @Filename T2.C
// @Project CL2.0.dav
//----------------------------------------------------------------------------
// @Controller Infineon XC886CLM-8FF
//
// @Compiler Keil
//
// @Codegenerator 1.3
//
// @Description: This file contains functions that use the T2 module.
//
//----------------------------------------------------------------------------
// @Date 2025/1/18 20:45:31
//
//****************************************************************************
// USER CODE BEGIN (T2_General,1)
// USER CODE END
//****************************************************************************
// @Project Includes
//****************************************************************************
#include "MAIN.H"
// USER CODE BEGIN (T2_General,2)
// USER CODE END
//****************************************************************************
// @Macros
//****************************************************************************
// USER CODE BEGIN (T2_General,3)
// USER CODE END
//****************************************************************************
// @Defines
//****************************************************************************
// USER CODE BEGIN (T2_General,4)
// USER CODE END
//****************************************************************************
// @Typedefs
//****************************************************************************
// USER CODE BEGIN (T2_General,5)
// USER CODE END
//****************************************************************************
// @Imported Global Variables
//****************************************************************************
// USER CODE BEGIN (T2_General,6)
// USER CODE END
//****************************************************************************
// @Global Variables
//****************************************************************************
// USER CODE BEGIN (T2_General,7)
// USER CODE END
//****************************************************************************
// @External Prototypes
//****************************************************************************
// USER CODE BEGIN (T2_General,8)
// USER CODE END
//****************************************************************************
// @Prototypes Of Local Functions
//****************************************************************************
// USER CODE BEGIN (T2_General,9)
// USER CODE END
//****************************************************************************
// @Function void T2_vInit(void)
//
//----------------------------------------------------------------------------
// @Description This is the initialization function of the Timer 2 function
// library. It is assumed that the SFRs used by this library
// are in their reset state.
//
// The following SFRs and SFR fields will be initialized:
// T2_RC2H/RC2L - reload/capture timer 2 register
// T2_T2H/T2L - timer 2 register
// ET2 - timer 2 interrupt enable
// T2_T2MOD - timer 2 mode register
// CP/RL2 - Capture/Reload select
// EXEN2 - External enable control
// TR2 - Timer2 run control
//
//----------------------------------------------------------------------------
// @Returnvalue None
//
//----------------------------------------------------------------------------
// @Parameters None
//
//----------------------------------------------------------------------------
// @Date 2025/1/18
//
//****************************************************************************
// USER CODE BEGIN (T2_Init,1)
// USER CODE END
void T2_vInit(void)
{
// USER CODE BEGIN (T2_Init,2)
// USER CODE END
// -----------------------------------------------------------------------
// Operating Mode
// -----------------------------------------------------------------------
/// 16-bit timer function with automatic reload when timer 2 overflows
/// the timer 2 resolution is 1 ?s
/// the timer 2 overflow is 1000.000 ?s
/// timer 2 interrupt: enabled
/// timer 2 will be started
// -----------------------------------------------------------------------
// Register Initialization
// -----------------------------------------------------------------------
T2_T2L = 0x30; // load timer 2 register, low byte
T2_T2H = 0xF8; // load timer 2 register, high byte
T2_RC2L = 0x30; // load timer 2 reload/capture register,
// low byte
T2_RC2H = 0xF8; // load timer 2 reload/capture register,
// high byte
T2_T2MOD = 0x00; // load timer 2 mode register
/// timer 2 Interrupt enable bit is set in SHINT_vInit() function
// USER CODE BEGIN (T2_Init,3)
// USER CODE END
TR2 = 1; // start timer
} // End of function T2_vInit
// USER CODE BEGIN (T2_General,10)
// USER CODE END

104
T2.H Normal file
View File

@@ -0,0 +1,104 @@
//****************************************************************************
// @Module Timer 2
// @Filename T2.H
// @Project CL2.0.dav
//----------------------------------------------------------------------------
// @Controller Infineon XC886CLM-8FF
//
// @Compiler Keil
//
// @Codegenerator 1.3
//
// @Description: This file contains all function prototypes and macros for
// the T2 module.
//
//----------------------------------------------------------------------------
// @Date 2025/1/18 20:45:31
//
//****************************************************************************
// USER CODE BEGIN (T2_Header,1)
// USER CODE END
#ifndef _T2_H_
#define _T2_H_
//****************************************************************************
// @Project Includes
//****************************************************************************
// USER CODE BEGIN (T2_Header,2)
// USER CODE END
//****************************************************************************
// @Macros
//****************************************************************************
// USER CODE BEGIN (T2_Header,3)
// USER CODE END
//****************************************************************************
// @Defines
//****************************************************************************
// USER CODE BEGIN (T2_Header,4)
// USER CODE END
//****************************************************************************
// @Typedefs
//****************************************************************************
// USER CODE BEGIN (T2_Header,5)
// USER CODE END
//****************************************************************************
// @Imported Global Variables
//****************************************************************************
// USER CODE BEGIN (T2_Header,6)
// USER CODE END
//****************************************************************************
// @Global Variables
//****************************************************************************
// USER CODE BEGIN (T2_Header,7)
// USER CODE END
//****************************************************************************
// @Prototypes Of Global Functions
//****************************************************************************
void T2_vInit(void);
// USER CODE BEGIN (T2_Header,8)
// USER CODE END
//****************************************************************************
// @Interrupt Vectors
//****************************************************************************
// Shared interrupt vector definitions are defined in SHARED_INT.H
// USER CODE BEGIN (T2_Header,9)
// USER CODE END
#endif // ifndef _T2_H_

518
temperature.C Normal file
View File

@@ -0,0 +1,518 @@
#include "temperature.H"
#include <stdio.h>
#include <math.h>
UnSwSample UnSwSample_1 = {0};
#define Measure_Period 11000
unsigned char romid[MAXNUM][8];
int RomNum;
/**
* @brief <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֽ<EFBFBD><D6BD><EFBFBD><EFBFBD>е<EFBFBD>У<EFBFBD><D0A3><EFBFBD><EFBFBD>
* @param serial<61><6C><EFBFBD>ֽ<EFBFBD><D6BD><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8>
* @param length<74><68><EFBFBD>ֽ<EFBFBD><D6BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ij<EFBFBD><C4B3><EFBFBD>
* @retval У<><D0A3><EFBFBD>ͣ<EFBFBD>CRC<52><43>
*/
#define POLYNOMIAL 0x131 //100110001
ubyte MY_OW_CRC8(ubyte *serial, ubyte length)
{
ubyte result = 0x00;
ubyte pDataBuf;
ubyte i;
while(length--) {
pDataBuf = *serial++;
for(i=0; i<8; i++) {
if((result^(pDataBuf))&0x01) {
result ^= 0x18;
result >>= 1;
result |= 0x80;
}
else {
result >>= 1;
}
pDataBuf >>= 1;
}
}
return result;
}
//<2F>Ǿ<EFBFBD>ȷ<EFBFBD><C8B7>ʱ2*X us<75><73><EFBFBD>̶<EFBFBD><CCB6><EFBFBD><EFBFBD><EFBFBD>10us
//@12.000MHz 12Tģʽ
void Delay_us(uword x)
{
for (; x > 0; x--)
{
_nop_();
_nop_();
}
}
////////////////////////////////////////////////////////////////////
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>λ<EFBFBD><CEBB><EFBFBD><20><><EFBFBD><EFBFBD> 480 us <20>͵<EFBFBD>ƽ<EFBFBD><C6BD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
unsigned char OW_ResetPresence(void)
{
unsigned char presence; int count=0;
SFR_PAGE(_pp0, noSST); // switch to page 0
P3_DIR = P3_DIR | 0x20; // load direction register P3.5<EFBFBD>л<EFBFBD>Ϊ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
DQ = 0; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> DQ <20><><EFBFBD><EFBFBD>
Delay_us(240); // <20><><EFBFBD><EFBFBD> DQ <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> 480us
DQ = 1; // <20><><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD><CDB7><EFBFBD><EFBFBD>ߣ<EFBFBD><DFA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
SFR_PAGE(_pp0, noSST); // switch to page 0
P3_DIR = P3_DIR & 0xDF;// load direction register
Delay_us(40); // <20>ȴ<EFBFBD> 80us <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> presence
presence = DQ; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
while( presence && (count< 17) )
{
Delay_us(5);
presence = DQ;
count++;
}
Delay_us(200); // ʱ<><CAB1>ĩβ <20>ȴ<EFBFBD>
return (presence ? FALSE : TRUE);
} // presence =0 ʱ<><CAB1> M6 01 <20><><EFBFBD><EFBFBD> , presence =1 ʱ<><CAB1> M601 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
////////////////////////////////////////////////////////////////////
//// READ_BIT <20>C <20><> M601 <20><>ȡ һλ<D2BB><CEBB>
unsigned char read_bit(void)
{
unsigned char res;
SFR_PAGE(_pp0, noSST); // switch to page 0
P3_DIR = P3_DIR | 0x20; // load direction register <20>л<EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD>״̬
DQ = 0; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> DQ <20><><EFBFBD><EFBFBD>
Delay_us(1); // <20><><EFBFBD><EFBFBD> DQ <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> 3us
DQ = 1; // <20><><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD> DQ <20><><EFBFBD>ߣ<EFBFBD><DFA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
SFR_PAGE(_pp0, noSST); // switch to page 0
P3_DIR = P3_DIR & 0xDF;// load direction register
Delay_us(3); // <20>ȴ<EFBFBD> 10us ȷ<><C8B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȶ<EFBFBD>
res = DQ;
Delay_us(27); // ʱ<><CAB1>ĩβ <20>ȴ<EFBFBD>
return(res); // <20><><EFBFBD>ض<EFBFBD>ȡ <20><>ֵ
}
////////////////////////////////////////////////////////////////////
//// WRITE_BIT <20>C <20><><EFBFBD><EFBFBD> дһλ<D2BB><CEBB><EFBFBD><EFBFBD> <20><> M601
void write_bit(char bitval)
{
SFR_PAGE(_pp0, noSST); // switch to page 0
P3_DIR = P3_DIR | 0x20; // load direction register <20>л<EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD>״̬
DQ = 0; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> DQ <20><><EFBFBD><EFBFBD>
Delay_us(2); // <20><><EFBFBD><EFBFBD> DQ <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> 5us
if(bitval == 1) DQ =1; // <20><><EFBFBD><EFBFBD> д 1<><31><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD> DQ <20><><EFBFBD><EFBFBD>
Delay_us(25); // <20><><EFBFBD><EFBFBD> д 0<><30><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> DQ <20><><EFBFBD><EFBFBD> 60 us
DQ = 1; // <20>ͷ<EFBFBD> DQ <20><><EFBFBD><EFBFBD>
Delay_us(5); // <20><>д 0<><30><EFBFBD>ָ<EFBFBD> ʱ<><CAB1> 10us
}
/////////////////////////////////////////////////////////////////////
//// READ_BYTE - <20><> M601 <20><>ȡ һ<>ֽ<EFBFBD> <20><><EFBFBD><EFBFBD>
unsigned char OW_ReadByte(void)
{
unsigned char i, j;
unsigned char value = 0;
for (i = 0;i < 8;i++) {
j = read_bit();
value = (value) | (j<<i); // ÿ<>ζ<EFBFBD><CEB6><EFBFBD> 1 λ(<28><>λ <20><><EFBFBD><EFBFBD> ), Ȼ<><C8BB> <20><><EFBFBD><EFBFBD>
}
return(value);
}
/////////////////////////////////////////////////////////////////////
//// WRITE_BYTE - <20><><EFBFBD><EFBFBD> дһ<D0B4>ֽ<EFBFBD><D6BD><EFBFBD><EFBFBD><EFBFBD> <20><> M601
void OW_WriteByte(char val)
{
unsigned char i;
unsigned char temp;
for (i = 0; i < 8; i++) { // д<>ֽ<EFBFBD> ,ÿ<><C3BF> һλ
temp = val >> i;
temp &= 0x01; // <20><>λ <20><><EFBFBD><EFBFBD>
write_bit(temp);
}
}
/**
* @brief <20><>оƬ<D0BE>Ĵ<EFBFBD><C4B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݴ<EFBFBD><DDB4><EFBFBD><EFBFBD><EFBFBD>
* @param scr<63><72><EFBFBD>ֽ<EFBFBD><D6BD><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><20><><EFBFBD><EFBFBD>Ϊ @sizeof<6F><66>M601_SCRATCHPAD_READ<41><44>
* @retval <20><>״̬
*/
BOOL M601_ReadScratchpad_SkipRom(ubyte *scr)
{
int i;
// /*size < sizeof(M601_SCRATCHPAD_READ)*/
if(OW_ResetPresence() == FALSE)
return FALSE;
OW_WriteByte(SKIP_ROM);
OW_WriteByte(READ_SCRATCHPAD);
for(i=0; i < sizeof(M601_SCRATCHPAD_READ); i++)
{
*scr++ = OW_ReadByte();
}
return TRUE;
}
/**
* @brief доƬ<D0BE>Ĵ<EFBFBD><C4B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݴ<EFBFBD><DDB4><EFBFBD><EFBFBD><EFBFBD>
* @param scr<63><72><EFBFBD>ֽ<EFBFBD><D6BD><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><20><><EFBFBD><EFBFBD>Ϊ @sizeof<6F><66>M601_SCRATCHPAD_WRITE<54><45>
* @retval д״̬
**/
BOOL M601_WriteScratchpad_SkipRom(ubyte *scr)
{
int i;
if(OW_ResetPresence() == FALSE)
return FALSE;
OW_WriteByte(SKIP_ROM);
OW_WriteByte(WRITE_SCRATCHPAD);
for(i=0; i < sizeof(M601_SCRATCHPAD_WRITE); i++)
{
OW_WriteByte(*scr++);
}
return TRUE;
}
/**
* @brief <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڲ<EFBFBD><DAB2><EFBFBD>Ƶ<EFBFBD>ʺ<EFBFBD><CABA>ظ<EFBFBD><D8B8><EFBFBD>
* @param mps Ҫ<><D2AA><EFBFBD>õ<EFBFBD><C3B5><EFBFBD><EFBFBD>ڲ<EFBFBD><DAB2><EFBFBD>Ƶ<EFBFBD>ʣ<EFBFBD>ÿ<EFBFBD><C3BF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ
* @arg CFG_MPS_Single <09><>ÿִ<C3BF><D6B4>ConvertTempһ<70>Σ<EFBFBD><CEA3><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD>¶Ȳ<C2B6><C8B2><EFBFBD>
* @arg CFG_MPS_Half <09><>ÿִ<C3BF><D6B4>ConvertTempһ<70>Σ<EFBFBD><CEA3><EFBFBD><EFBFBD><EFBFBD>ÿ<EFBFBD><C3BF>0.5<EFBFBD><EFBFBD><EFBFBD>ظ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @arg CFG_MPS_1 <09><>ÿִ<C3BF><D6B4>ConvertTempһ<70>Σ<EFBFBD><CEA3><EFBFBD><EFBFBD><EFBFBD>ÿ<EFBFBD><C3BF>1<EFBFBD><31><EFBFBD>ظ<EFBFBD><D8B8><EFBFBD><EFBFBD><EFBFBD>
* @arg CFG_MPS_2 <09><>ÿִ<C3BF><D6B4>ConvertTempһ<70>Σ<EFBFBD><CEA3><EFBFBD><EFBFBD><EFBFBD>ÿ<EFBFBD><C3BF>2<EFBFBD><32><EFBFBD>ظ<EFBFBD><D8B8><EFBFBD><EFBFBD><EFBFBD>
* @arg CFG_MPS_4 <09><>ÿִ<C3BF><D6B4>ConvertTempһ<70>Σ<EFBFBD><CEA3><EFBFBD><EFBFBD><EFBFBD>ÿ<EFBFBD><C3BF>4<EFBFBD><34><EFBFBD>ظ<EFBFBD><D8B8><EFBFBD><EFBFBD><EFBFBD>
* @arg CFG_MPS_10 <09><>ÿִ<C3BF><D6B4>ConvertTempһ<70>Σ<EFBFBD><CEA3><EFBFBD><EFBFBD><EFBFBD>ÿ<EFBFBD><C3BF>10<31><30><EFBFBD>ظ<EFBFBD><D8B8><EFBFBD><EFBFBD><EFBFBD>
* @param repeatability<74><79>Ҫ<EFBFBD><D2AA><EFBFBD>õ<EFBFBD><C3B5>ظ<EFBFBD><D8B8><EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ
* @arg CFG_Repeatbility_Low <09><><EFBFBD><EFBFBD><EFBFBD>õ<EFBFBD><C3B5>ظ<EFBFBD><D8B8><EFBFBD>
* @arg CFG_Repeatbility_Medium <09><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ظ<EFBFBD><D8B8><EFBFBD>
* @arg CFG_Repeatbility_High <09><><EFBFBD><EFBFBD><EFBFBD>ø<EFBFBD><C3B8>ظ<EFBFBD><D8B8><EFBFBD>
* @retval <20><>
*/
BOOL SetConfig(ubyte mps, ubyte repeatability)
{
ubyte scrb[sizeof(M601_SCRATCHPAD_READ)];
M601_SCRATCHPAD_READ *scr = (M601_SCRATCHPAD_READ *) scrb;
/*<2A><>9<EFBFBD><39><EFBFBD>ֽڡ<D6BD><DAA1><EFBFBD>7<EFBFBD>ֽ<EFBFBD><D6BD><EFBFBD>ϵͳ<CFB5><CDB3><EFBFBD>üĴ<C3BC><C4B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>8<EFBFBD>ֽ<EFBFBD><D6BD><EFBFBD>ϵͳ״̬<D7B4>Ĵ<EFBFBD><C4B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֽ<EFBFBD><D6BD><EFBFBD>ǰ8<C7B0><38><EFBFBD><EFBFBD>У<EFBFBD><D0A3><EFBFBD><EFBFBD>--CRC<52><43>*/
if(M601_ReadScratchpad_SkipRom(scrb) == FALSE)
{
return FALSE; /*<2A><><EFBFBD>ݴ<EFBFBD><DDB4><EFBFBD><EFBFBD><EFBFBD>ˮƽ*/
}
/*<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>յ<EFBFBD>ǰ8<C7B0><38><EFBFBD>ֽڵ<D6BD>У<EFBFBD><D0A3><EFBFBD>ͣ<EFBFBD><CDA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>յĵ<D5B5>9<EFBFBD><39>CRC<52>ֽڱȽϡ<C8BD>*/
if(scrb[8] != MY_OW_CRC8(scrb, 8))
{
return FALSE; /*CRC<52><43>֤δͨ<CEB4><CDA8>*/
}
scr->Cfg &= ~CFG_Repeatbility_Mask;
scr->Cfg |= repeatability;
scr->Cfg &= ~CFG_MPS_Mask;
scr->Cfg |= mps;
M601_WriteScratchpad_SkipRom(scrb+4);
return TRUE;
}
/**
* @brief <20><>16λ<36><CEBB><EFBFBD><EFBFBD><EFBFBD>Ʋ<EFBFBD><C6B2><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><C2B6><EFBFBD><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD>϶<EFBFBD>Ϊ<EFBFBD><CEAA>λ<EFBFBD><CEBB><EFBFBD>¶ȶ<C2B6><C8B6><EFBFBD>
* @param out<75><74><EFBFBD>з<EFBFBD><D0B7>ŵ<EFBFBD>16λ<36><CEBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><C2B6><EFBFBD><EFBFBD><EFBFBD>
* @retval <20><><EFBFBD><EFBFBD><EFBFBD>϶<EFBFBD>Ϊ<EFBFBD><CEAA>λ<EFBFBD>ĸ<EFBFBD><C4B8><EFBFBD><EFBFBD><EFBFBD>
*/
float M601_OutputtoTemp(int out)
{
return ((float)(out/256.0) + 40.0);
}
/**
* @brief <20><><EFBFBD><EFBFBD><EFBFBD>¶Ȳ<C2B6><C8B2><EFBFBD>
* @param <20><>
* @retval <20><><EFBFBD><EFBFBD><EFBFBD>߷<EFBFBD><DFB7><EFBFBD>״̬
*/
BOOL ConvertTemp(void)
{
if(OW_ResetPresence() == FALSE)
return FALSE;
OW_WriteByte(SKIP_ROM);
OW_WriteByte(CONVERT_T);
return TRUE;
}
/**
* @brief <20>ȴ<EFBFBD>ת<EFBFBD><D7AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>@ConvertTemp<6D><70><EFBFBD><EFBFBD>ʹ<EFBFBD><CAB9>
* @param iTemp<6D><70><EFBFBD><EFBFBD><EFBFBD>ص<EFBFBD>16λ<36>¶Ȳ<C2B6><C8B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @retval <20><>״̬
*/
//BOOL ReadTempWaiting(uword *iTemp)
//{
// ubyte scrb[sizeof(M601_SCRATCHPAD_READ)];
// M601_SCRATCHPAD_READ *scr = (M601_SCRATCHPAD_READ *) scrb;
// /*<2A><>9<EFBFBD><39><EFBFBD>ֽڡ<D6BD>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ת<EFBFBD><D7AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֽ<EFBFBD><D6BD><EFBFBD>ǰ8<C7B0><38><EFBFBD><EFBFBD>У<EFBFBD><D0A3><EFBFBD><EFBFBD>--CRC<52><43>*/
// if(M601_ReadScratchpad_SkipRom(scrb) == FALSE)
// {
// UnSwSample_1.bit_data.temperature[1] = 1;
// return FALSE; /*<2A><><EFBFBD>Ĵ<EFBFBD><C4B4><EFBFBD>ʧ<EFBFBD><CAA7>*/
// }
// /*<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>յ<EFBFBD>ǰ8<C7B0><38><EFBFBD>ֽڵ<D6BD>У<EFBFBD><D0A3><EFBFBD>ͣ<EFBFBD><CDA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>յĵ<D5B5>9<EFBFBD><39>CRC<52>ֽڱȽϡ<C8BD>*/
// UnSwSample_1.bit_data.temperature[1] = scrb[8];
// if(scrb[8] != MY_OW_CRC8(scrb, 8))
// {
// return FALSE; /*CRC<52><43>֤δͨ<CEB4><CDA8>*/
// }
//// UnSwSample_1.bit_data.temperature[1] = *iTemp;
// /*<2A><><EFBFBD>¶Ȳ<C2B6><C8B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֽںϳ<DABA>Ϊ16λ<36>֡<EFBFBD>*/
// *iTemp = ((uword)(scr->T_msb) << 8) | scr->T_lsb;
//
// return TRUE;
//}
/**
* @brief <20><><EFBFBD><EFBFBD><EFBFBD>¶Ȳ<C2B6><C8B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param <20><>
* @retval ״̬
*/
//BOOL GetTemp(void)
//{
// static uword intTemp = 0;//<2F><><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>̬<EFBFBD><CCAC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD>Լ<EFBFBD><D4BC>
// float fTemp;
// int signedInt_f_tem = 0;
////---------------------------------------
// intTemp = 0;
// if(ConvertTemp() == FALSE) return FALSE;
// Delay_us(6000);
// ReadTempWaiting(&intTemp);
// signedInt_f_tem = (int)intTemp;
//
// fTemp = ( (float)(signedInt_f_tem)/256.0 ) + 40.0;
//
//
//// fTemp = M601_OutputtoTemp(signedInt_f_tem);
//// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>Ϊ<EFBFBD>з<EFBFBD><D0B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// signedInt_f_tem = (int)(fTemp*10);
//// <20><EFBFBD> <20>з<EFBFBD><D0B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ת<EFBFBD><D7AA><EFBFBD>޷<EFBFBD><DEB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// UnSwSample_1.bit_data.temperature[0] = signedInt_f_tem;
// return TRUE;
//}
/**-----------------------------------------------------------------------
* @brief <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>оƬ<D0BE><C6AC>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD>bit<69><74><EFBFBD><EFBFBD>ȡ˳<C8A1>򣺵<EFBFBD>λ-><3E><>λ<EFBFBD><CEBB>
* @param <20><>
* @retval <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>bit<69><74><EFBFBD><EFBFBD>
-------------------------------------------------------------------------*/
unsigned char OW_Read2Bits(void)
{
unsigned char i, dq, owdata;
owdata = 0;
for (i = 0; i < 2; i++)
{
dq = read_bit();
owdata = (owdata) | (dq << i);
}
return owdata;
}
// <20><><EFBFBD><EFBFBD><EFBFBD>
/**
* @brief <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ͻ<EFBFBD><CFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>оƬ<D0BE><C6AC>ROM ID
* @param <20><><EFBFBD><EFBFBD>ROM ID<49>Ķ<EFBFBD>ά<EFBFBD><CEAC><EFBFBD><EFBFBD>
* @retval <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>M601<30>ĸ<EFBFBD><C4B8><EFBFBD>
*/
int Search_ROM(unsigned char(*romID)[8])
{
unsigned char k, l = 0, ConflictBit, m, n;
unsigned char BUFFER[MAXNUM]={0};
unsigned char ss[64];
unsigned char s = 0;
int num = 0;
do
{
if (OW_ResetPresence() == 0)//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϴӻ<CFB4><D3BB>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD>
{
return 0;
}
OW_WriteByte(0xF0);//<2F><><EFBFBD><EFBFBD> ROM <20><><EFBFBD>к<EFBFBD>ָ<EFBFBD><D6B8>
for (m = 0; m < 8; m++)
{
for (n = 0; n < 8; n++)
{
k = OW_Read2Bits(); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> DQ <20><><EFBFBD><EFBFBD><EFBFBD>϶<EFBFBD><CFB6><EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD>
k = k & 0x03;
s = s >> 1;
if (k == 0x02)
{ //<2F><>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϵ<EFBFBD>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD>λΪ 0
write_bit(0); //<2F><><EFBFBD><EFBFBD>д 0, ʹ<><CAB9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λΪ 0 <20><><EFBFBD><EFBFBD><E8B1B8>Ӧ
ss[(m * 8 + n)] = 0;
}
else if (k == 0x01)
{ //<2F><>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϵ<EFBFBD>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD>λΪ 1
s = s | 0x80;
write_bit(1); //<2F><><EFBFBD><EFBFBD>д 1, ʹ<><CAB9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λΪ 1 <20><><EFBFBD><EFBFBD><E8B1B8>Ӧ
ss[(m * 8 + n)] = 1;
}
else if (k == 0x00)
{//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 00, <20><><EFBFBD><EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD>г<EFBFBD>ͻ<EFBFBD><CDBB><EFBFBD><EFBFBD>ѡ<EFBFBD><D1A1>
ConflictBit = m * 8 + n + 1;
if (ConflictBit > BUFFER[l])
{ //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>µIJ<C2B5><C4B2><EFBFBD>λ<EFBFBD><CEBB>ѡ<EFBFBD><D1A1> 0
write_bit(0);
ss[(m * 8 + n)] = 0;
BUFFER[++l] = ConflictBit;
}
else if (ConflictBit < BUFFER[l])
{//<2F><><EFBFBD>ϴα<CFB4><CEB1><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD> 0 <20>IJ<EFBFBD><C4B2><EFBFBD>λ֮ǰ<D6AE>IJ<EFBFBD><C4B2><EFBFBD>λ<EFBFBD>԰<EFBFBD><D4B0>ϴα<CFB4><CEB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>·<EFBFBD><C2B7>
s = s | ((ss[(m * 8 + n)] & 0x01) << 7);
write_bit(ss[(m * 8 + n)]);
}
else if (ConflictBit == BUFFER[l])
{ //<2F><><EFBFBD>ϴα<CFB4><CEB1><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD> 0 <20>IJ<EFBFBD><C4B2><EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD>Ӧ<EFBFBD><D3A6> 1
s = s | 0x80;
write_bit(1);
ss[(m * 8 + n)] = 1;
l = l - 1;
}
}
else
{ //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 11<31><31>˵<EFBFBD><CBB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϲ<EFBFBD><CFB2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
return num; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
}
}
romID[num][m] = s;
s = 0;
}
num = num + 1;
} while (BUFFER[l] != 0 && (num < MAXNUM));
return num; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> M601 <20><><EFBFBD><EFBFBD>
}
/**
* @brief <20><>оƬ<D0BE>Ĵ<EFBFBD><C4B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݴ<EFBFBD><DDB4><EFBFBD><EFBFBD><EFBFBD>
* @param scr<63><72><EFBFBD>ֽ<EFBFBD><D6BD><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><20><><EFBFBD><EFBFBD>Ϊ @sizeof<6F><66>M601_SCRATCHPAD_READ<41><44>
* @param j <20><>search<63><68><EFBFBD><EFBFBD>оƬ<D0BE><C6AC><EFBFBD><EFBFBD><EFBFBD>ţ<EFBFBD><C5A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֻ<EFBFBD><D6BB>һ<EFBFBD><D2BB>оƬ<D0BE><C6AC>j<EFBFBD><6A>ֵ0
* @retval <20><>״̬
*/
BOOL M601_ReadScratchpad(unsigned char* scr, unsigned char j)
{
unsigned char i, k;
/*size < sizeof(M601_SCRATCHPAD_READ)*/
if (OW_ResetPresence() == FALSE)
{
return FALSE;
}
//#ifdef SingleIC
// OW_WriteByte(SKIP_ROM);
//#else
OW_WriteByte(MATCH_ROM);
for (k = 0; k < 8; k++)
{
OW_WriteByte(romid[j][k]);
}
//#endif
OW_WriteByte(READ_SCRATCHPAD);
for (i = 0; i < sizeof(M601_SCRATCHPAD_READ); i++)
{
*scr++ = OW_ReadByte();
}
return TRUE;
}
/**
* @brief <20>ȴ<EFBFBD>ת<EFBFBD><D7AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>@ConvertTemp<6D><70><EFBFBD><EFBFBD>ʹ<EFBFBD><CAB9>
* @param iTemp<6D><70><EFBFBD><EFBFBD><EFBFBD>ص<EFBFBD>16λ<36>¶Ȳ<C2B6><C8B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param j <20><>search<63><68><EFBFBD><EFBFBD>оƬ<D0BE><C6AC><EFBFBD><EFBFBD><EFBFBD>ţ<EFBFBD><C5A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֻ<EFBFBD><D6BB>һ<EFBFBD><D2BB>оƬ<D0BE><C6AC>j<EFBFBD><6A>ֵ0
* @retval <20><>״̬
*/
BOOL ReadTempWaiting(unsigned short* iTemp, unsigned char j)
{
unsigned char scrb[sizeof(M601_SCRATCHPAD_READ)];
M601_SCRATCHPAD_READ* scr = (M601_SCRATCHPAD_READ*)scrb;
/*<2A><>9<EFBFBD><39><EFBFBD>ֽڡ<D6BD>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ת<EFBFBD><D7AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֽ<EFBFBD><D6BD><EFBFBD>ǰ8<C7B0><38><EFBFBD><EFBFBD>У<EFBFBD><D0A3><EFBFBD><EFBFBD>--CRC<52><43>*/
if (M601_ReadScratchpad(scrb, j) == 0)
{
return FALSE; /*<2A><><EFBFBD>Ĵ<EFBFBD><C4B4><EFBFBD>ʧ<EFBFBD><CAA7>*/
}
/*<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>յ<EFBFBD>ǰ8<C7B0><38><EFBFBD>ֽڵ<D6BD>У<EFBFBD><D0A3><EFBFBD>ͣ<EFBFBD><CDA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>յĵ<D5B5>9<EFBFBD><39>CRC<52>ֽڱȽϡ<C8BD>*/
if (scrb[8] != MY_OW_CRC8(scrb, 8))
{
return FALSE; /*CRC<52><43>֤δͨ<CEB4><CDA8>*/
}
/*<2A><><EFBFBD>¶Ȳ<C2B6><C8B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֽںϳ<DABA>Ϊ16λ<36>֡<EFBFBD>*/
*iTemp = (unsigned short)scr->T_msb << 8 | scr->T_lsb;
return TRUE;
}
/**
* @brief <20><><EFBFBD><EFBFBD><C2B6><EFBFBD>
* @param <20><>
* @retval ״̬
*/
BOOL GetTemp(void)
{
float fTemp;
static unsigned int iTemp[MAXNUM];
int i;
int signedInt_f_tem = 0;
//----------------------------------------------------
// memset(romid, 0, sizeof(romid));//<2F><><EFBFBD><EFBFBD>
/*<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>оƬһ<C6AC><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>*/
if(ConvertTemp() == FALSE) return FALSE;
Delay_us(6500);
for (i = 0; i < RomNum; i++) //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>оƬ
{
iTemp[i] = 0;
/*<2A><><EFBFBD><EFBFBD>*/
ReadTempWaiting(&iTemp[i], i);
fTemp = M601_OutputtoTemp((int)iTemp[i]); //<2F><EFBFBD><C2B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ĸ<EFBFBD><C4B8><EFBFBD><EFBFBD><EFBFBD>
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ת<EFBFBD><D7AA>Ϊ<EFBFBD>з<EFBFBD><D0B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
signedInt_f_tem = (int)(fTemp*10);
// <20><EFBFBD> <20>з<EFBFBD><D0B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ת<EFBFBD><D7AA><EFBFBD>޷<EFBFBD><DEB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
UnSwSample_1.bit_data.temperature[i] = (unsigned int)signedInt_f_tem;
}
return TRUE;
}

164
temperature.h Normal file
View File

@@ -0,0 +1,164 @@
#ifndef _TEMPERATURE_H_
#define _TEMPERATURE_H_
#include "MAIN.H"
#define DQ P3_5
///*Bit definition of config register*/
#define CFG_CLKSTRETCH_Mask 0x20
#define CFG_MPS_Mask 0x1C
#define CFG_Repeatbility_Mask 0x03
#define CFG_ClkStreatch_Disable (0x00 << 5)
#define CFG_ClkStreatch_Enable (0x01 << 5)
#define CFG_MPS_Single 0x00
#define CFG_MPS_Half 0x04
#define CFG_MPS_1 0x08
#define CFG_MPS_2 0x0C
#define CFG_MPS_4 0x10
#define CFG_MPS_10 0x14
#define CFG_Repeatbility_Low 0x00
#define CFG_Repeatbility_Medium 0x01
#define CFG_Repeatbility_High 0x02
#define MAXNUM 5 /*<2A><><EFBFBD>߼<EFBFBD><DFBC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>оƬ<D0BE><C6AC><EFBFBD><EFBFBD>*/
typedef enum {
FALSE = 0,
TRUE = !FALSE
} BOOL;
typedef struct
{
char Tha_set_lsb;
char Tla_set_lsb;
ubyte Cfg; /*ϵͳ<CFB5><CDB3><EFBFBD>üĴ<C3BC><C4B4><EFBFBD>, RW*/
} M601_SCRATCHPAD_WRITE;
/* M601/01 ow Commands-------------------------------------------------------*/
typedef enum
{
//ROM command
SKIP_ROM = 0xcc,
READ_ROM = 0x33,
MATCH_ROM = 0x55,
SEARCH_ROM = 0xf0,
ALARM_SEARCH = 0xec,
//Function command
CONVERT_T = 0x44,
READ_SCRATCHPAD = 0xbe,
WRITE_SCRATCHPAD = 0x4e,
} M601_OW_CMD;
/****************** Scratchpad/SRAM ******************/
/*SRAM scratchpad*/
typedef struct
{
ubyte T_lsb; /*The LSB of <20>¶Ƚ<C2B6><C8BD><EFBFBD>, RO*/
ubyte T_msb; /*The MSB of <20>¶Ƚ<C2B6><C8BD><EFBFBD>, RO*/
ubyte C1_lsb; /*The LSB of <20><><EFBFBD><EFBFBD>ͨ<EFBFBD><CDA8>C1, RO*/
ubyte C1_msb; /*The MSB of <20><><EFBFBD><EFBFBD>ͨ<EFBFBD><CDA8>C1, Ro*/
ubyte Tha_set_lsb;
ubyte Tla_set_lsb;
ubyte Cfg; /*ϵͳ<CFB5><CDB3><EFBFBD>üĴ<C3BC><C4B4><EFBFBD>, RW*/
ubyte Status; /*ϵͳ״̬<D7B4>Ĵ<EFBFBD><C4B4><EFBFBD>, RO*/
ubyte crc_scr; /*CRC for byte0-7, RO*/
} M601_SCRATCHPAD_READ;
//20250116 <20><><EFBFBD><EFBFBD><EFBFBD>¶Ȳɼ<C8B2><C9BC>ֽ<EFBFBD>
typedef struct _StrSwSample
{
unsigned int emergency_stop_switch : 1; // ͨ<><CDA8>1<EFBFBD><31><EFBFBD><EFBFBD>ͣ<EFBFBD><CDA3><EFBFBD><EFBFBD>
unsigned int High_voltage_switch : 1; // ͨ<><CDA8>2<EFBFBD><32><EFBFBD><EFBFBD>ѹ<EFBFBD><D1B9><EFBFBD><EFBFBD>
unsigned int CH03 : 1; // ͨ<><CDA8>3
unsigned int CH04 : 1; // ͨ<><CDA8>4
unsigned int CH05 : 1; // ͨ<><CDA8>5
unsigned int CH06 : 1; // ͨ<><CDA8>6
unsigned int CH07 : 1; // ͨ<><CDA8>7
unsigned int CH08 : 1; // ͨ<><CDA8>8
unsigned int CH09 : 1; // ͨ<><CDA8>9
unsigned int CH10 : 1; // ͨ<><CDA8>10
unsigned int CH11 : 1; // ͨ<><CDA8>11
unsigned int CH12 : 1; // ͨ<><CDA8>12
unsigned int CH13 : 1; // ͨ<><CDA8>13
unsigned int CH14 : 1; // ͨ<><CDA8>14
unsigned int CH15 : 1; // ͨ<><CDA8>15
unsigned int CH16 : 1; // ͨ<><CDA8>16
unsigned int CH17 : 1; // ͨ<><CDA8>17
unsigned int CH18 : 1; // ͨ<><CDA8>18
unsigned int CH19 : 1; // ͨ<><CDA8>19
unsigned int CH20 : 1; // ͨ<><CDA8>20
unsigned int CH21 : 1; // ͨ<><CDA8>21
unsigned int CH22 : 1; // ͨ<><CDA8>22
unsigned int CH23 : 1; // ͨ<><CDA8>23
unsigned int CH24 : 1; // ͨ<><CDA8>24
unsigned int CH25 : 1; // ͨ<><CDA8>25
unsigned int CH26 : 1; // ͨ<><CDA8>26
unsigned int CH27 : 1; // ͨ<><CDA8>27
unsigned int CH28 : 1; // ͨ<><CDA8>28
unsigned int CH29 : 1; // ͨ<><CDA8>29
unsigned int CH30 : 1; // ͨ<><CDA8>30
unsigned int CH31 : 1; // ͨ<><CDA8>31
unsigned int CH32 : 1; // ͨ<><CDA8>32
// unsigned int CH33 : 1; // ͨ<><CDA8>33
// unsigned int CH34 : 1; // ͨ<><CDA8>34
// unsigned int CH35 : 1; // ͨ<><CDA8>35
// unsigned int CH36 : 1; // ͨ<><CDA8>36
// unsigned int CH37 : 1; // ͨ<><CDA8>37
// unsigned int CH38 : 1; // ͨ<><CDA8>38
// unsigned int CH39 : 1; // ͨ<><CDA8>39
// unsigned int CH40 : 1; // ͨ<><CDA8>40
// unsigned int CH41 : 1; // ͨ<><CDA8>41
// unsigned int CH42 : 1; // ͨ<><CDA8>42
// unsigned int CH43 : 1; // ͨ<><CDA8>43
// unsigned int CH44 : 1; // ͨ<><CDA8>44
// unsigned int reserve : 4;
unsigned int temperature[2]; // <20><EFBFBD>
} StrSwSample;
typedef union _UnSwSample
{
StrSwSample bit_data; // ʹ<>ö<EFBFBD><C3B6><EFBFBD><EFBFBD>Ľṹ<C4BD><E1B9B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
unsigned char arr[sizeof(StrSwSample)]; // ͨ<><CDA8><EFBFBD><EFBFBD><E1B9B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȷ<EFBFBD><C8B7><EFBFBD><EFBFBD>С
} UnSwSample;
extern UnSwSample UnSwSample_1 ;
BOOL GetTemp(void);
BOOL SetConfig(ubyte mps, ubyte repeatability);
int Search_ROM(unsigned char(*romID)[8]);
extern unsigned char romid[MAXNUM][8];
extern int RomNum;
#endif // _TEMPERATURE_H_