freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

基于msp430單片機的溫度pid算法設(shè)計畢業(yè)設(shè)計論文-資料下載頁

2025-06-27 18:17本頁面
  

【正文】 ************************/void ADC12Start(){ ADC12CTL0 |= ENC。 ADC12CTL0 |= ADC12SC。} /********************************************************* 函數(shù)名稱:ADC12ISR* 功 能:ADC12中斷處理程序* 參 數(shù):無* 返 回 值:無* 說 明:每次當多個通道轉(zhuǎn)換完成后,打開中斷時,單片機會 自動調(diào)用本函數(shù),使用時需要自己添加處理邏輯(刪 掉現(xiàn)在的函數(shù)體。)*********************************************************/pragma vector=ADC_VECTOR__interrupt void ADC12ISR (void){ static u32 Sum=0。 static u8 i。 Results[i] = ADC12MEM0。 // Move results, IFG is cleared Sum+=Results[i]。 i++。 if(i31) //多次轉(zhuǎn)換時 轉(zhuǎn)換次數(shù) { //多次重復(fù)采樣時,在這里方處理函數(shù) DC12CTL0 amp。=~ ENC。 //停止轉(zhuǎn)換 AD_Result=Sum/32。 Sum=0。 i=0。 }}include /*******************************************函數(shù)名稱:Delay_1ms功 能:延時約1ms的時間參 數(shù):無返回值 :無********************************************/void Delay_1ms(void){ unsigned char i。 for(i = 150。i 0。i) _NOP()。} /*******************************************函數(shù)名稱:Delay_Nms功 能:延時N個1ms的時間參 數(shù):n延時長度返回值 :無********************************************/void Delay_Nms(unsigned int n){ unsigned int i。 for(i = n。i 0。i) Delay_1ms()。}include u8 Sendbuf[16] = { 0x40,0x30,0x31,0x30,0x31,0,0,0,0,0,0,0,0,0,0,0x0d }。//單片機發(fā)送緩沖u8 Answer[8] = { 0x40,0x30,0x31,0,0,0,0,0x0d }。//下位機應(yīng)答信息幀數(shù)組u8 RecBuf[36] = { 0 }。u8 Tran_Data[36]= { 0 }。u16 Integer_Paramrter[12]={0}。float Operating_Paramrter[12]={}。static u8 RecFlag=0。//串口接收到字頭標志 1:接收到字頭 0:沒接收到字頭static u8 RecCount=0。//接收到的數(shù)據(jù)個數(shù)(除去字頭與字尾)static u8 Recv_Done=0。//接收完一幀數(shù)據(jù) 1:接收完一幀數(shù)據(jù) 0:沒接收完數(shù)據(jù)/*******************************************函數(shù)名稱:UART0_RXISR功 能:串口接收中斷服務(wù)程序參 數(shù):無返回值 :無********************************************/pragma vector = UART0RX_VECTOR__interrupt void UART0_RXISR(void){ u8 buf。 buf=RXBUF0。//讀數(shù)據(jù) if(buf==Kingview_DataFrames_Start)//判斷接收字頭 RecFlag=1。 if(RecFlag) { RecBuf[RecCount]=buf。 RecCount++。 if(buf==Kingview_DataFrames_End)/*判斷接收是否完成*/ { Recv_Done = 1。 RecFlag=0。 RecCount=0。 Data_Delivery( )。 } } P2DIR |= (BIT5)。 P2OUT |= (BIT5)。}void Data_Delivery(void){ u8 Device_Addr。 if(Recv_Done) { Recv_Done=0。 Device_Addr =Dat_trans(RecBuf[1],RecBuf[2])。 if(check_CRC()amp。amp。(Device_Addr == Kingview_Slave_Device0_Addr)) { switch( Read_Or_Write()amp。0x01) { case Kingview_Read: Read_Byte_Response()。 break。 case Kingview_Write: Write_Byte_Response()。 break。 } } else write_inform(39。*39。)。 }}void uartsends(u8 Buff[],u8 Data_len){ u8 i。 for(i=0。iData_len。i++) { while (!(IFG1 amp。 UTXIFG0))。 //等待以前的字符發(fā)送完畢 TXBUF0 = Buff[i]。 //將收到的字符發(fā)送出去 } }//ASCII到Hex的數(shù)據(jù)轉(zhuǎn)換u8 Dat_trans(u8 hight_v,u8 low_v){ u8 hight,low。//定義臨時變量 if((hight_v0x40)amp。amp。(hight_v0x47))//如果是大寫字母ABCDEF hight=(hight_v0x37)amp。0x0f。 else if((hight_v0x60)amp。amp。(hight_v0x67))//如果是小寫字母abcdef hight=(hight_v0x57)amp。0x0f。//如果是ASCII中0x30~0x39 else hight=(hight_v0x30)amp。0x0f。 if((low_v0x40)amp。amp。(low_v0x47))//如果是大寫字母ABCDEF low=(low_v0x37)amp。0x0f。 else if((low_v0x60)amp。amp。(low_v0x67))//如果是小寫字母abcdef low=(low_v0x57)amp。0x0f。 else low=(low_v0x30)amp。0x0f。//如果是ASCII中0x30~0x39 return ( (hight4)+low )。}//上位機標志 判斷上位機發(fā)送來的指令是讀/寫 打包 字節(jié) 字 浮點數(shù)u8 Read_Or_Write(void){ u8 temp。 //temp=RecBuf[4]amp。0x0f。//這樣寫是錯誤的,ASCII與HEX轉(zhuǎn)換不正確,一開始我用別人的程序這樣做照成組態(tài)王不讀浮點數(shù),要引以為戒 temp=Dat_trans(RecBuf[3],RecBuf[4])。//區(qū)分讀寫 不打包 數(shù)據(jù)類型 return (tempamp。0x0f)。}//單片機對的上位機寫指令的應(yīng)答void write_inform(u8 dat){ u8 xordat。//異或值 u8 i,tmp1,tmp2。 u8 Temp=0。 tmp1=(Kingview_Slave_Device0_Addr4)amp。0x0f。 tmp2=Kingview_Slave_Device0_Addramp。0x0f。 if(tmp19) Answer[1]=tmp1+0x37。 else Answer[1]=tmp1+0x30。 if(tmp29) Answer[2]=tmp2+0x37。 else Answer[2]=tmp2+0x30。 Answer[3]=dat。 Answer[4]=dat。 xordat=0。 for(i=1。i3。i++) { xordat^=Answer[i]。 } Temp=xordat。 tmp1=(Temp4)amp。0x0f。 tmp2=Tempamp。0x0f。 if(tmp19) Answer[5]=tmp1+0x37。 else Answer[5]=tmp1+0x30。 if(tmp29) Answer[6]=tmp2+0x37。 else Answer[6]=tmp2+0x30。 uartsends(Answer,8)。 }/****************************************************** * 函數(shù)名:u8 check_CRC() * 描述 :對組態(tài)王發(fā)送過來的數(shù)據(jù)幀進行CRC校驗*********************************************************/ u8 check_CRC(void){ u8 xordat,i,ctmp1,ctmp2,temp。 u8 WR_Temp=0。 WR_Temp=Read_Or_Write()。 //讀數(shù)據(jù)時,校驗的數(shù)據(jù)長度一致 if((WR_Tempamp。0x01)==Kingview_Read) { temp=10。 /*讀數(shù)據(jù)時需要異或的位時10位 */ } if((WR_Tempamp。0x0D)==Kingview_Write) { temp=12。 /*寫字節(jié)時需要異或的位時12位*/ } if((WR_Tempamp。0x0D)==Kingview_Write_Word) { temp=14。 /*寫字時需要異或的位時14位*/ }if(((WR_Tempamp。0x0D)==Kingview_Write_Float)||((WR_Tempamp。0x0D)==Kingview_Write_Float1)) { temp=18。 /*寫浮點數(shù)時需要異或的位時18位*/ } xordat=0。 for(i=1。i=temp。i++) xordat^=RecBuf[i]。 ctmp1=(xordat4)amp。0x0f。 ctmp2=xordatamp。0x0f。 if(ctmp19) ctmp1=ctmp1+0x37。 else ctmp1=ctmp1+0x30。 if(ctmp29) ctmp2=ctmp2+0x37。 else ctmp2=ctmp2+0x30。if((ctmp1==RecBuf[temp+1])amp。amp。(ctmp2==RecBuf[temp+2])) return 1。 else
return 0。}//浮點數(shù)到ASCII碼的轉(zhuǎn)換void Float_to_ASC(u8 * c,float d){ u8 i = 0,j = 0。 u8 temp=0。 bool ShuFu = false,JieFu = false。 int inbyte2 = 0, inbyte3 = 0,inbyte4 = 0。 float F_afterbyte2 = 0, F_afterbyte3 = 0。 if(d == 0) { for( j = 0。 j 8。 j++) c[j] = 0x30。 return。 } if(d 0) { ShuFu = true。 d = (1) * d。 } while(d 1) { d =(float)(d / )。 i++ 。 } while(d = ) { JieFu = true。 d = (float)(d * )
點擊復(fù)制文檔內(nèi)容
環(huán)評公示相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1