www.久久久久|狼友网站av天堂|精品国产无码a片|一级av色欲av|91在线播放视频|亚洲无码主播在线|国产精品草久在线|明星AV网站在线|污污内射久久一区|婷婷综合视频网站

當(dāng)前位置:首頁 > 單片機(jī) > 單片機(jī)
[導(dǎo)讀]#include#defineuint8unsignedchar#defineuint16unsignedint#defineFOSC16000000uint16BAUD=9600;uint16TEMP_Alert=1000;//字地址0-255(只取低8位)//位地址0-255(只取低8位)/*CRC高位字節(jié)值表*/constuint8codeauchCR

#include
#defineuint8unsignedchar
#defineuint16unsignedint
#defineFOSC16000000
uint16BAUD=9600;
uint16TEMP_Alert=1000;
//字地址0-255(只取低8位)
//位地址0-255(只取低8位)

/*CRC高位字節(jié)值表*/
constuint8codeauchCRCHi[]={
0x00,0xC1,0x81,0x40,0x01,0xC0,0x80,0x41,0x01,0xC0/**/,
0x80,0x41,0x00,0xC1,0x81,0x40,0x01,0xC0,0x80,0x41,
0x00,0xC1,0x81,0x40,0x00,0xC1,0x81,0x40,0x01,0xC0,
0x80,0x41,0x01,0xC0,0x80,0x41,0x00,0xC1,0x81,0x40,
0x00,0xC1,0x81,0x40,0x01,0xC0,0x80,0x41,0x00,0xC1,
0x81,0x40,0x01,0xC0,0x80,0x41,0x01,0xC0,0x80,0x41,
0x00,0xC1,0x81,0x40,0x01,0xC0,0x80,0x41,0x00,0xC1,
0x81,0x40,0x00,0xC1,0x81,0x40,0x01,0xC0,0x80,0x41,
0x00,0xC1,0x81,0x40,0x01,0xC0,0x80,0x41,0x01,0xC0,
0x80,0x41,0x00,0xC1,0x81,0x40,0x00,0xC1,0x81,0x40,
0x01,0xC0,0x80,0x41,0x01,0xC0,0x80,0x41,0x00,0xC1,
0x81,0x40,0x01,0xC0,0x80,0x41,0x00,0xC1,0x81,0x40,
0x00,0xC1,0x81,0x40,0x01,0xC0,0x80,0x41,0x01,0xC0,
0x80,0x41,0x00,0xC1,0x81,0x40,0x00,0xC1,0x81,0x40,
0x01,0xC0,0x80,0x41,0x00,0xC1,0x81,0x40,0x01,0xC0,
0x80,0x41,0x01,0xC0,0x80,0x41,0x00,0xC1,0x81,0x40,
0x00,0xC1,0x81,0x40,0x01,0xC0,0x80,0x41,0x01,0xC0,
0x80,0x41,0x00,0xC1,0x81,0x40,0x01,0xC0,0x80,0x41,
0x00,0xC1,0x81,0x40,0x00,0xC1,0x81,0x40,0x01,0xC0,
0x80,0x41,0x00,0xC1,0x81,0x40,0x01,0xC0,0x80,0x41,
0x01,0xC0,0x80,0x41,0x00,0xC1,0x81,0x40,0x01,0xC0,
0x80,0x41,0x00,0xC1,0x81,0x40,0x00,0xC1,0x81,0x40,
0x01,0xC0,0x80,0x41,0x01,0xC0,0x80,0x41,0x00,0xC1,
0x81,0x40,0x00,0xC1,0x81,0x40,0x01,0xC0,0x80,0x41,
0x00,0xC1,0x81,0x40,0x01,0xC0,0x80,0x41,0x01,0xC0,
0x80,0x41,0x00,0xC1,0x81,0x40
};
/*CRC低位字節(jié)值表*/
constuint8codeauchCRCLo[]={
0x00,0xC0,0xC1,0x01,0xC3,0x03,0x02,0xC2,0xC6,0x06/**/,
0x07,0xC7,0x05,0xC5,0xC4,0x04,0xCC,0x0C,0x0D,0xCD,
0x0F,0xCF,0xCE,0x0E,0x0A,0xCA,0xCB,0x0B,0xC9,0x09,
0x08,0xC8,0xD8,0x18,0x19,0xD9,0x1B,0xDB,0xDA,0x1A,
0x1E,0xDE,0xDF,0x1F,0xDD,0x1D,0x1C,0xDC,0x14,0xD4,
0xD5,0x15,0xD7,0x17,0x16,0xD6,0xD2,0x12,0x13,0xD3,
0x11,0xD1,0xD0,0x10,0xF0,0x30,0x31,0xF1,0x33,0xF3,
0xF2,0x32,0x36,0xF6,0xF7,0x37,0xF5,0x35,0x34,0xF4,
0x3C,0xFC,0xFD,0x3D,0xFF,0x3F,0x3E,0xFE,0xFA,0x3A,
0x3B,0xFB,0x39,0xF9,0xF8,0x38,0x28,0xE8,0xE9,0x29,
0xEB,0x2B,0x2A,0xEA,0xEE,0x2E,0x2F,0xEF,0x2D,0xED,
0xEC,0x2C,0xE4,0x24,0x25,0xE5,0x27,0xE7,0xE6,0x26,
0x22,0xE2,0xE3,0x23,0xE1,0x21,0x20,0xE0,0xA0,0x60,
0x61,0xA1,0x63,0xA3,0xA2,0x62,0x66,0xA6,0xA7,0x67,
0xA5,0x65,0x64,0xA4,0x6C,0xAC,0xAD,0x6D,0xAF,0x6F,
0x6E,0xAE,0xAA,0x6A,0x6B,0xAB,0x69,0xA9,0xA8,0x68,
0x78,0xB8,0xB9,0x79,0xBB,0x7B,0x7A,0xBA,0xBE,0x7E,
0x7F,0xBF,0x7D,0xBD,0xBC,0x7C,0xB4,0x74,0x75,0xB5,
0x77,0xB7,0xB6,0x76,0x72,0xB2,0xB3,0x73,0xB1,0x71,
0x70,0xB0,0x50,0x90,0x91,0x51,0x93,0x53,0x52,0x92,
0x96,0x56,0x57,0x97,0x55,0x95,0x94,0x54,0x9C,0x5C,
0x5D,0x9D,0x5F,0x9F,0x9E,0x5E,0x5A,0x9A,0x9B,0x5B,
0x99,0x59,0x58,0x98,0x88,0x48,0x49,0x89,0x4B,0x8B,
0x8A,0x4A,0x4E,0x8E,0x8F,0x4F,0x8D,0x4D,0x4C,0x8C,
0x44,0x84,0x85,0x45,0x87,0x47,0x46,0x86,0x82,0x42,
0x43,0x83,0x41,0x81,0x80,0x40
};

uint16TempRegister;//用于測試字址址16

uint8localAddr=0x01;//單片機(jī)控制板的地址
uint8sendCount;//發(fā)送字節(jié)個(gè)數(shù)
uint8receCount;//接收到的字節(jié)個(gè)數(shù)
//uint8sendPosi;//發(fā)送位置

uint8xdatareceBuf[1];
uint8xdatasendBuf[1];

voidcheckComm0Modbus(void);
uint16getRegisterVal(uint16addr,uint16*tempData);
uint16setRegisterVal(uint16addr,uint16tempData);
voidswitch_BAUD(uint16value);


/*****************************波特率調(diào)整函數(shù)********************************/
////函數(shù)功能:調(diào)整串口通信波特率
////串口工作在工作方式1,即8位波特率可變模式
/****************************************************************************/
voidswitch_BAUD(uint16value)
{
switch(value)
{
case0x0001:{BAUD=9600;break;}
case0x0002:{BAUD=14400;break;}
case0x0003:{BAUD=19200;break;}
}
TR1=0;//停止定時(shí)器1
ES=0;//關(guān)閉串口中斷
TH1=TL1=-(FOSC/12/32/BAUD);//設(shè)置波特率
TR1=1;//開啟定時(shí)器1
ES=1;//使能串口中斷
}
/*************************************end************************************/

/***************************CRC校驗(yàn)碼生成函數(shù)********************************/
////函數(shù)功能:生成CRC校驗(yàn)碼
////本代碼中使用查表法,以提高運(yùn)算速度
/****************************************************************************/
uint16crc16(uint8*puchMsg,uint16usDataLen)
{
uint8uchCRCHi=0xFF;/*高CRC字節(jié)初始化*/
uint8uchCRCLo=0xFF;/*低CRC字節(jié)初始化*/
uint16uIndex;/*CRC循環(huán)中的索引*/
while(usDataLen--)/*傳輸消息緩沖區(qū)*/
{
uIndex=uchCRCHi^*puchMsg++;/*計(jì)算CRC*/
uchCRCHi=uchCRCLo^auchCRCHi[uIndex];
uchCRCLo=auchCRCLo[uIndex];
}
return(uchCRCLo<<8|uchCRCHi);
}//uint16crc16(uint8*puchMsg,uint16usDataLen)
/*************************************end************************************/


/*******************************串口發(fā)送函數(shù)********************************/
////函數(shù)功能:將數(shù)據(jù)包通過串口發(fā)送至主機(jī)
////有待修改......
/****************************************************************************/
//開始發(fā)送
voidBegin_send(void)
{
uint16i=0;
while(sendCount--)
{
SBUF=sendBuf[i++];
while(!TI);
}
}
/*************************************end************************************/


/********從機(jī)響應(yīng)主機(jī)問詢函數(shù),functioncode:03,讀取多個(gè)寄存器值********/
////函數(shù)功能:叢機(jī)根據(jù)串口接收到的數(shù)據(jù)包receBuf[]里面的內(nèi)容,根據(jù)被讀取寄存器
////的起始地址和讀取的寄存器個(gè)數(shù),去讀相應(yīng)的寄存器的值,并將讀取的數(shù)據(jù)以MODBUS
////響應(yīng)數(shù)據(jù)的標(biāo)準(zhǔn)格式打包,經(jīng)過串口發(fā)送到主機(jī)。數(shù)據(jù)包格式同上。
/****************************************************************************/
//////////////詢問數(shù)據(jù)包格式:
/////////////////////////receBuf[0]receBuf[1]receBuf[2]receBuf[3]receBuf[4]receBuf[5]receBuf[6]receBuf[7]
//詢問數(shù)據(jù)格式:receBuf[]={從站地址,功能碼,起始地址高位,起始地址低位,寄存器數(shù)高位,寄存器數(shù)低位,校驗(yàn)碼低位,校驗(yàn)碼高位}

//////////////響應(yīng)數(shù)據(jù)包格式:
/////////////////////////sendBuf[0]sendBuf[1]sendBuf[[2]sendBuf[3]sendBuf[4]sendBuf[5]...receBuf[6]receBuf[7]
//響應(yīng)數(shù)據(jù)格式:receBuf[]={從站地址,功能碼,字節(jié)計(jì)數(shù),數(shù)據(jù)1,數(shù)據(jù)2,數(shù)據(jù)3,...校驗(yàn)碼低位,校驗(yàn)碼高位}

voidreadRegisters(void)
{
uint8addr;
uint8tempAddr;
uint16crcData;
uint8readCount;
uint8byteCount;
uint16i;
uint16tempData=0;

//addr=(receBuf[2]<<8)+receBuf[3];
//tempAddr=addr&0xfff;
addr=receBuf[3];
tempAddr=addr;

//readCount=(receBuf[4]<<8)+receBuf[5];//要讀的個(gè)數(shù)
readCount=receBuf[5];

byteCount=readCount*2;//每個(gè)寄存器內(nèi)容占高,低兩個(gè)字節(jié)

for(i=0;i{
getRegisterVal(tempAddr,&tempData);
sendBuf[i+3]=tempData>>8;
sendBuf[i+4]=tempData&0xff;
}

sendBuf[0]=localAddr;
sendBuf[1]=3;//functioncode:03
sendBuf[2]=byteCount;
byteCount+=3;//加上前面的地址,功能碼,地址共3+byteCount個(gè)字節(jié)
crcData=crc16(sendBuf,byteCount);
sendBuf[byteCount]=crcData&0xff;//CRC代碼低位在前
byteCount++;
sendBuf[byteCount]=crcData>>8;//高位在后

sendCount=byteCount+1;//例如byteCount=49,則sendBuf[]中實(shí)際上有49+1個(gè)元素待發(fā)
Begin_send();
}//voidreadRegisters(void)
/*************************************end************************************/


/********從機(jī)響應(yīng)主機(jī)問詢函數(shù),functioncode:16,設(shè)置多個(gè)寄存器值*********/
////函數(shù)功能:叢機(jī)根據(jù)串口接收到的數(shù)據(jù)包receBuf[]里面的內(nèi)容,根據(jù)被強(qiáng)制寄存器
////的起始地址,去設(shè)置相應(yīng)寄存器的值,響應(yīng)數(shù)據(jù)包同詢問數(shù)據(jù)包
////的內(nèi)容相同,經(jīng)過串口發(fā)送到主機(jī)。
/****************************************************************************/
//////////////詢問數(shù)據(jù)包格式:
/////////////////////////receBuf[0]receBuf[1]receBuf[2]receBuf[3]receBuf[4]receBuf[5]receBuf[6]receBuf[7]receBuf[8]...receBuf[9]receBuf[10]
//詢問數(shù)據(jù)格式:receBuf[]={從站地址,功能碼,起始地址高位,起始地址低位,寄存器數(shù)高位,寄存器數(shù)低位,字節(jié)計(jì)數(shù),數(shù)據(jù)高位,數(shù)據(jù)低位,...校驗(yàn)碼低位,校驗(yàn)碼高位}
//響應(yīng)數(shù)據(jù)包內(nèi)容為除去詢問數(shù)據(jù)包中的字節(jié)計(jì)數(shù)和數(shù)據(jù)高低位的其他內(nèi)容
voidpresetMultipleRegisters(void)
{
uint8addr;
uint8tempAddr;
uint8byteCount;
uint8setCount;
uint16crcData;
uint16tempData;
uint8i;

//addr=(receBuf[2]<<8)+receBuf[3];
//tempAddr=addr&0xfff;
addr=receBuf[3];
tempAddr=addr&0xff;

//setCount=(receBuf[4]<<8)+receBuf[5];
setCount=receBuf[5];
byteCount=receBuf[6];

for(i=0;i{
tempData=(receBuf[i*2+7]<<8)+receBuf[i*2+8];//待設(shè)置寄存器值

setRegisterVal(tempAddr,tempData);
}

sendBuf[0]=localAddr;
sendBuf[1]=16;//functioncode:16
sendBuf[2]=addr>>8;//寄存器地址高位
sendBuf[3]=addr&0xff;//寄存器地址低位
sendBuf[4]=setCount>>8;//待設(shè)置寄存器數(shù)量高位
sendBuf[5]=setCount&0xff;//待設(shè)置寄存器數(shù)量低位
crcData=crc16(sendBuf,6);//生成CRC校驗(yàn)碼
sendBuf[6]=crcData&0xff;//CRC代碼低位在前
sendBuf[7]=crcData>>8;//高位在后
sendCount=8;
Begin_send();
}//voidpresetMultipleRegisters(void)
/*************************************end************************************/


/*************************查詢uart接收的數(shù)據(jù)包內(nèi)容函數(shù)**************************/
////函數(shù)功能:叢機(jī)根據(jù)串口接收到的數(shù)據(jù)包receBuf[1]里面的內(nèi)容,即functioncode執(zhí)行
////相應(yīng)的命令
/********************************************************************************/
voidcheckComm0Modbus(void)
{
uint16crcData;
uint16tempData;

if(receCount>4)
{
switch(receBuf[1])
{
case3://讀取保持寄存器(一個(gè)或多個(gè))
{
if(receCount>=8)//從詢問數(shù)據(jù)包格式可知,receCount應(yīng)該等于8
{//接收完成一組數(shù)據(jù)
//應(yīng)該關(guān)閉接收中斷

if(receBuf[0]==localAddr)//核對(duì)地址
{
crcData=crc16(receBuf,6);//核對(duì)校驗(yàn)碼
if(crcData==receBuf[7]+(receBuf[6]<<8))
if(receBuf[1]==3)
{//讀取保持寄存器(一個(gè)或多個(gè))
readRegisters();
}
}
}
receCount=0;
break;
}

case16://設(shè)置多個(gè)寄存器
{
tempData=(receBuf[4]<<8)+receBuf[5];
tempData=tempData*2;//數(shù)據(jù)個(gè)數(shù)
tempData+=9;//從詢問數(shù)據(jù)包格式可知,receCount應(yīng)該等于9+byteCount
if(receCount>=tempData)
{
if(receBuf[0]==localAddr)
{
crcData=crc16(receBuf,tempData-2);
if(crcData==(receBuf[tempData-2]<<8)+receBuf[tempData-1])
{
presetMultipleRegisters();
}
}
receCount=0;
}
break;
}
default:break;
}
}
}//voidcheckComm0(void)
/*************************************end************************************/


/*******************************讀取寄存器內(nèi)容函數(shù)**************************/
////函數(shù)功能:根據(jù)寄存器地址讀取相應(yīng)寄存器內(nèi)容
/****************************************************************************/
//取寄存器值返回0表示成功
uint16getRegisterVal(uint16addr,uint16*tempData)
{
uint16result=0;
uint16tempAddr;

tempAddr=addr&0xfff;

switch(tempAddr&0xff)
{
case0x00:{*tempData=TempRegister;break;}//讀取01開關(guān)A溫度
case0x01:{*tempData=TempRegister;break;}//讀取01開關(guān)A溫度
case0x02:{*tempData=TempRegister;break;}//讀取01開關(guān)A溫度
case0x03:{*tempData=TempRegister;break;}//讀取01開關(guān)周邊溫度
case0x04:{*tempData=TempRegister;break;}//讀取02開關(guān)A溫度
case0x05:{*tempData=TempRegister;break;}//讀取02開關(guān)A溫度
case0x06:{*tempData=TempRegister;break;}//讀取02開關(guān)A溫度
case0x07:{*tempData=TempRegister;break;}//讀取02開關(guān)周邊溫度
case0x08:{*tempData=TempRegister;break;}//讀取03開關(guān)A溫度
case0x09:{*tempData=TempRegister;break;}//讀取03開關(guān)A溫度
case0x0a:{*tempData=TempRegister;break;}//讀取03開關(guān)A溫度
case0x0b:{*tempData=TempRegister;break;}//讀取03開關(guān)周邊溫度
case0x0c:{*tempData=TempRegister;break;}//讀取04開關(guān)A溫度
case0x0d:{*tempData=TempRegister;break;}//讀取04開關(guān)A溫度
case0x0e:{*tempData=TempRegister;break;}//讀取04開關(guān)A溫度
case0x0f:{*tempData=TempRegister;break;}//讀取04開關(guān)周邊溫度
case0x10:{*tempData=TempRegister;break;}//讀取05開關(guān)A溫度
case0x11:{*tempData=TempRegister;break;}//讀取05開關(guān)A溫度
case0x12:{*tempData=TempRegister;break;}//讀取05開關(guān)A溫度
case0x13:{*tempData=TempRegister;break;}//讀取05開關(guān)周邊溫度
case0x14:{*tempData=TempRegister;break;}//讀取06開關(guān)A溫度
case0x15:{*tempData=TempRegister;break;}//讀取06開關(guān)A溫度
case0x16:{*tempData=TempRegister;break;}//讀取06開關(guān)A溫度
case0x17:{*tempData=TempRegister;break;}//讀取06開關(guān)周邊溫度
case0x18:{*tempData=TempRegister;break;}//讀取07開關(guān)A溫度
case0x19:{*tempData=TempRegister;break;}//讀取07開關(guān)A溫度
case0x1a:{*tempData=TempRegister;break;}//讀取07開關(guān)A溫度
case0x1b:{*tempData=TempRegister;break;}//讀取07開關(guān)周邊溫度
case0x1c:{*tempData=TempRegister;break;}//讀取08開關(guān)A溫度
case0x1d:{*tempData=TempRegister;break;}//讀取08開關(guān)A溫度
case0x1e:{*tempData=TempRegister;break;}//讀取08開關(guān)A溫度
case0x1f:{*tempData=TempRegister;break;}//讀取08開關(guān)周邊溫度
case0x20:{*tempData=TempRegister;break;}//讀取09開關(guān)A溫度
case0x21:{*tempData=TempRegister;break;}//讀取09開關(guān)A溫度
case0x22:{*tempData=TempRegister;break;}//讀取09開關(guān)A溫度
case0x23:{*tempData=TempRegister;break;}//讀取09開關(guān)周邊溫度
case0x24:{*tempData=TempRegister;break;}//讀取10開關(guān)A溫度
case0x25:{*tempData=TempRegister;break;}//讀取10開關(guān)A溫度
case0x26:{*tempData=TempRegister;break;}//讀取10開關(guān)A溫度
case0x27:{*tempData=TempRegister;break;}//讀取10開關(guān)周邊溫度
case0x28:{*tempData=TempRegister;break;}//讀取11開關(guān)A溫度
case0x29:{*tempData=TempRegister;break;}//讀取11開關(guān)A溫度
case0x2a:{*tempData=TempRegister;break;}//讀取11開關(guān)A溫度
case0x2b:{*tempData=TempRegister;break;}//讀取11開關(guān)周邊溫度
case0x2c:{*tempData=TempRegister;break;}//讀取12開關(guān)A溫度
case0x2d:{*tempData=TempRegister;break;}//讀取12開關(guān)A溫度
case0x2e:{*tempData=TempRegister;break;}//讀取12開關(guān)A溫度
case0x2f:{*tempData=TempRegister;break;}//讀取12開關(guān)周邊溫度
case0x30:{*tempData=TempRegister;break;}//讀取13開關(guān)A溫度
case0x31:{*tempData=TempRegister;break;}//讀取13開關(guān)A溫度
case0x32:{*tempData=TempRegister;break;}//讀取13開關(guān)A溫度
case0x33:{*tempData=TempRegister;break;}//讀取13開關(guān)周邊溫度
case0x34:{*tempData=TempRegister;break;}//讀取14開關(guān)A溫度
case0x35:{*tempData=TempRegister;break;}//讀取14開關(guān)A溫度
case0x36:{*tempData=TempRegister;break;}//讀取14開關(guān)A溫度
case0x37:{*tempData=TempRegister;break;}//讀取14開關(guān)周邊溫度
case0x38:{*tempData=TempRegister;break;}//讀取15開關(guān)A溫度
case0x39:{*tempData=TempRegister;break;}//讀取15開關(guān)A溫度
case0x3a:{*tempData=TempRegister;break;}//讀取15開關(guān)A溫度
case0x3b:{*tempData=TempRegister;break;}//讀取15開關(guān)周邊溫度
case0x3c:{*tempData=TempRegister;break;}//讀取16開關(guān)A溫度
case0x3d:{*tempData=TempRegister;break;}//讀取16開關(guān)A溫度
case0x3e:{*tempData=TempRegister;break;}//讀取16開關(guān)A溫度
case0x3f:{*tempData=TempRegister;break;}//讀取16開關(guān)周邊溫度
case0x40:{*tempData=TempRegister;break;}//讀取17開關(guān)A溫度
case0x41:{*tempData=TempRegister;break;}//讀取17開關(guān)A溫度
case0x42:{*tempData=TempRegister;break;}//讀取17開關(guān)A溫度
case0x43:{*tempData=TempRegister;break;}//讀取17開關(guān)周邊溫度
case0x44:{*tempData=TempRegister;break;}//讀取18開關(guān)A溫度
case0x45:{*tempData=TempRegister;break;}//讀取18開關(guān)A溫度
case0x46:{*tempData=TempRegister;break;}//讀取18開關(guān)A溫度
case0x47:{*tempData=TempRegister;break;}//讀取18開關(guān)周邊溫度
case0x48:{*tempData=TempRegister;break;}//讀取19開關(guān)A溫度
case0x49:{*tempData=TempRegister;break;}//讀取19開關(guān)A溫度
case0x4a:{*tempData=TempRegister;break;}//讀取19開關(guān)A溫度
case0x4b:{*tempData=TempRegister;break;}//讀取19開關(guān)周邊溫度
case0x4c:{*tempData=TempRegister;break;}//讀取20開關(guān)A溫度
case0x4d:{*tempData=TempRegister;break;}//讀取20開關(guān)A溫度
case0x4e:{*tempData=TempRegister;break;}//讀取20開關(guān)A溫度
case0x4f:{*tempData=TempRegister;break;}//讀取20開關(guān)周邊溫度
case0x50:{*tempData=TempRegister;break;}//讀取21開關(guān)A溫度
case0x51:{*tempData=TempRegister;break;}//讀取21開關(guān)A溫度
case0x52:{*tempData=TempRegister;break;}//讀取21開關(guān)A溫度
case0x53:{*tempData=TempRegister;break;}//讀取21開關(guān)周邊溫度
case0x54:{*tempData=TempRegister;break;}//讀取22開關(guān)A溫度
case0x55:{*tempData=TempRegister;break;}//讀取22開關(guān)A溫度
case0x56:{*tempData=TempRegister;break;}//讀取22開關(guān)A溫度
case0x57:{*tempData=TempRegister;break;}//讀取22開關(guān)周邊溫度
case0x58:{*tempData=TempRegister;break;}//讀取23開關(guān)A溫度
case0x59:{*tempData=TempRegister;break;}//讀取23開關(guān)A溫度
case0x5a:{*tempData=TempRegister;break;}//讀取23開關(guān)A溫度
case0x5b:{*tempData=TempRegister;break;}//讀取23開關(guān)周邊溫度
case0x5c:{*tempData=TempRegister;break;}//讀取24開關(guān)A溫度
case0x5d:{*tempData=TempRegister;break;}//讀取24開關(guān)A溫度
case0x5e:{*tempData=TempRegister;break;}//讀取24開關(guān)A溫度
case0x5f:{*tempData=TempRegister;break;}//讀取24開關(guān)周邊溫度
case0x60:{*tempData=TempRegister;break;}//讀取25開關(guān)A溫度
case0x61:{*tempData=TempRegister;break;}//讀取25開關(guān)A溫度
case0x62:{*tempData=TempRegister;break;}//讀取25開關(guān)A溫度
case0x63:{*tempData=TempRegister;break;}//讀取25開關(guān)周邊溫度
case0x64:{*tempData=TempRegister;break;}//讀取26開關(guān)A溫度
case0x65:{*tempData=TempRegister;break;}//讀取26開關(guān)A溫度
case0x66:{*tempData=TempRegister;break;}//讀取26開關(guān)A溫度
case0x67:{*tempData=TempRegister;break;}//讀取26開關(guān)周邊溫度
case0x68:{*tempData=TempRegister;break;}//讀取27開關(guān)A溫度
case0x69:{*tempData=TempRegister;break;}//讀取27開關(guān)A溫度
case0x6a:{*tempData=TempRegister;break;}//讀取27開關(guān)A溫度
case0x6b:{*tempData=TempRegister;break;}//讀取27開關(guān)周邊溫度
case0x6c:{*tempData=TempRegister;break;}//讀取28開關(guān)A溫度
case0x6d:{*tempData=TempRegister;break;}//讀取28開關(guān)A溫度
case0x6e:{*tempData=TempRegister;break;}//讀取28開關(guān)A溫度
case0x6f:{*tempData=TempRegister;break;}//讀取28開關(guān)周邊溫度
case0x70:{*tempData=TempRegister;break;}//讀取29開關(guān)A溫度
case0x71:{*tempData=TempRegister;break;}//讀取29開關(guān)A溫度
case0x72:{*tempData=TempRegister;break;}//讀取29開關(guān)A溫度
case0x73:{*tempData=TempRegister;break;}//讀取29開關(guān)周邊溫度
case0x74:{*tempData=TempRegister;break;}//讀取30開關(guān)A溫度
case0x75:{*tempData=TempRegister;break;}//讀取30開關(guān)A溫度
case0x76:{*tempData=TempRegister;break;}//讀取30開關(guān)A溫度
case0x77:{*tempData=TempRegister;break;}//讀取30開關(guān)周邊溫度

case0x78:{*tempData=localAddr;break;}//讀取設(shè)備地址
case0x79:{*tempData=BAUD;break;}//讀取串口通信波特率
case0x7a:{*tempData=TEMP_Alert;break;}//讀取報(bào)警溫度上限

case0x7b:{*tempData=TempRegister;break;}//讀取年寄存器
case0x7c:{*tempData=TempRegister;break;}//讀取月寄存器
case0x7d:{*tempData=TempRegister;break;}//讀取日寄存器
case0x7e:{*tempData=TempRegister;break;}//讀取時(shí)寄存器
case0x7f:{*tempData=TempRegister;break;}//讀取分寄存器
case0x80:{*tempData=TempRegister;break;}//讀取秒寄存器
default:break;
}
returnresult;
}//uint16getRegisterVal(uint16addr,uint16&data)
/*************************************end************************************/


/*******************************設(shè)置寄存器內(nèi)容函數(shù)**************************/
////函數(shù)功能:根據(jù)寄存器地址設(shè)置相應(yīng)寄存器內(nèi)容
/****************************************************************************/
//設(shè)置寄存器值返回0表示成功
uint16setRegisterVal(uint16addr,uint16tempData)
{
uint16result=0;
uint16tempAddr;

tempAddr=addr&0xfff;

switch(tempAddr&0xff)
{
case0x78:{localAddr=tempData;break;}//設(shè)置設(shè)備地址,設(shè)備地址初始值為0x01
case0x79:{
BAUD=tempData;
switch_BAUD(BAUD);
break;
}//設(shè)置串口通信波特率,串口通信波特率寄存器值為1:9600,2:14400,3:19200,初始值為1
//設(shè)置報(bào)警溫度上限,報(bào)警溫度值存儲(chǔ)方式:精確到0.1°C,以擴(kuò)大10倍的數(shù)值放在寄存器里面,例如溫度值為100.1,則讀寫值為1001
case0x7a:{TEMP_Alert=tempData;break;}

case0x7b:{TempRegister=tempData;break;}//設(shè)置年寄存器
case0x7c:{TempRegister=tempData;break;}//設(shè)置月寄存器
case0x7d:{TempRegister=tempData;break;}//設(shè)置日寄存器
case0x7e:{TempRegister=tempData;break;}//設(shè)置時(shí)寄存器
case0x7f:{TempRegister=tempData;break;}//設(shè)置分寄存器
case0x80:{TempRegister=tempData;break;}//設(shè)置秒寄存器
default:break;
}

returnresult;
}
/*************************************end************************************/

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

LED驅(qū)動(dòng)電源的輸入包括高壓工頻交流(即市電)、低壓直流、高壓直流、低壓高頻交流(如電子變壓器的輸出)等。

關(guān)鍵字: 驅(qū)動(dòng)電源

在工業(yè)自動(dòng)化蓬勃發(fā)展的當(dāng)下,工業(yè)電機(jī)作為核心動(dòng)力設(shè)備,其驅(qū)動(dòng)電源的性能直接關(guān)系到整個(gè)系統(tǒng)的穩(wěn)定性和可靠性。其中,反電動(dòng)勢抑制與過流保護(hù)是驅(qū)動(dòng)電源設(shè)計(jì)中至關(guān)重要的兩個(gè)環(huán)節(jié),集成化方案的設(shè)計(jì)成為提升電機(jī)驅(qū)動(dòng)性能的關(guān)鍵。

關(guān)鍵字: 工業(yè)電機(jī) 驅(qū)動(dòng)電源

LED 驅(qū)動(dòng)電源作為 LED 照明系統(tǒng)的 “心臟”,其穩(wěn)定性直接決定了整個(gè)照明設(shè)備的使用壽命。然而,在實(shí)際應(yīng)用中,LED 驅(qū)動(dòng)電源易損壞的問題卻十分常見,不僅增加了維護(hù)成本,還影響了用戶體驗(yàn)。要解決這一問題,需從設(shè)計(jì)、生...

關(guān)鍵字: 驅(qū)動(dòng)電源 照明系統(tǒng) 散熱

根據(jù)LED驅(qū)動(dòng)電源的公式,電感內(nèi)電流波動(dòng)大小和電感值成反比,輸出紋波和輸出電容值成反比。所以加大電感值和輸出電容值可以減小紋波。

關(guān)鍵字: LED 設(shè)計(jì) 驅(qū)動(dòng)電源

電動(dòng)汽車(EV)作為新能源汽車的重要代表,正逐漸成為全球汽車產(chǎn)業(yè)的重要發(fā)展方向。電動(dòng)汽車的核心技術(shù)之一是電機(jī)驅(qū)動(dòng)控制系統(tǒng),而絕緣柵雙極型晶體管(IGBT)作為電機(jī)驅(qū)動(dòng)系統(tǒng)中的關(guān)鍵元件,其性能直接影響到電動(dòng)汽車的動(dòng)力性能和...

關(guān)鍵字: 電動(dòng)汽車 新能源 驅(qū)動(dòng)電源

在現(xiàn)代城市建設(shè)中,街道及停車場照明作為基礎(chǔ)設(shè)施的重要組成部分,其質(zhì)量和效率直接關(guān)系到城市的公共安全、居民生活質(zhì)量和能源利用效率。隨著科技的進(jìn)步,高亮度白光發(fā)光二極管(LED)因其獨(dú)特的優(yōu)勢逐漸取代傳統(tǒng)光源,成為大功率區(qū)域...

關(guān)鍵字: 發(fā)光二極管 驅(qū)動(dòng)電源 LED

LED通用照明設(shè)計(jì)工程師會(huì)遇到許多挑戰(zhàn),如功率密度、功率因數(shù)校正(PFC)、空間受限和可靠性等。

關(guān)鍵字: LED 驅(qū)動(dòng)電源 功率因數(shù)校正

在LED照明技術(shù)日益普及的今天,LED驅(qū)動(dòng)電源的電磁干擾(EMI)問題成為了一個(gè)不可忽視的挑戰(zhàn)。電磁干擾不僅會(huì)影響LED燈具的正常工作,還可能對(duì)周圍電子設(shè)備造成不利影響,甚至引發(fā)系統(tǒng)故障。因此,采取有效的硬件措施來解決L...

關(guān)鍵字: LED照明技術(shù) 電磁干擾 驅(qū)動(dòng)電源

開關(guān)電源具有效率高的特性,而且開關(guān)電源的變壓器體積比串聯(lián)穩(wěn)壓型電源的要小得多,電源電路比較整潔,整機(jī)重量也有所下降,所以,現(xiàn)在的LED驅(qū)動(dòng)電源

關(guān)鍵字: LED 驅(qū)動(dòng)電源 開關(guān)電源

LED驅(qū)動(dòng)電源是把電源供應(yīng)轉(zhuǎn)換為特定的電壓電流以驅(qū)動(dòng)LED發(fā)光的電壓轉(zhuǎn)換器,通常情況下:LED驅(qū)動(dòng)電源的輸入包括高壓工頻交流(即市電)、低壓直流、高壓直流、低壓高頻交流(如電子變壓器的輸出)等。

關(guān)鍵字: LED 隧道燈 驅(qū)動(dòng)電源
關(guān)閉