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

正文內(nèi)容

基于can總線的溫濕度及光感度測量_單片機(jī)課程設(shè)計(存儲版)

2024-10-07 19:36上一頁面

下一頁面
  

【正文】 器定義: 基于 CAN 總線的溫濕度及光感度測量 //************************************************************* define TxBuffer1 SJA1000_BASE+0x0A //發(fā)送緩沖區(qū) 1 define TxBuffer2 SJA1000_BASE+0x0B //發(fā)送緩沖區(qū) 2 define TxBuffer3 SJA1000_BASE+0x0C //發(fā)送緩沖區(qū) 3 define TxBuffer4 SJA1000_BASE+0x0D //發(fā)送緩沖區(qū) 4 define TxBuffer5 SJA1000_BASE+0x0E //發(fā)送緩沖區(qū) 5 define TxBuffer6 SJA1000_BASE+0x0F //發(fā)送緩沖區(qū) 6 define TxBuffer7 SJA1000_BASE+0x10 //發(fā)送緩沖區(qū) 7 define TxBuffer8 SJA1000_BASE+0x11 //發(fā)送緩沖區(qū) 8 define TxBuffer9 SJA1000_BASE+0x12 //發(fā)送緩沖區(qū) 9 define TxBuffer10 SJA1000_BASE+0x13 //發(fā)送緩沖區(qū) 10 //***************************************************************** // 以下為接受緩沖區(qū)寄存器定義: //***************************************************************** define RxBuffer1 SJA1000_BASE+0x14 //接收緩沖區(qū) 1 define RxBuffer2 SJA1000_BASE+0x15 //接收緩沖區(qū) 2 define RxBuffer3 SJA1000_BASE+0x16 //接收緩沖區(qū) 3 define RxBuffer4 SJA1000_BASE+0x17 //接收緩沖區(qū) 4 define RxBuffer5 SJA1000_BASE+0x18 //接收緩沖區(qū) 5 define RxBuffer6 SJA1000_BASE+0x19 //接收緩沖區(qū) 6 define RxBuffer7 SJA1000_BASE+0x1A //接收緩沖區(qū) 7 define RxBuffer8 SJA1000_BASE+0x1B //接收緩沖區(qū) 8 define RxBuffer9 SJA1000_BASE+0x1C //接收緩沖區(qū) 9 define RxBuffer10 SJA1000_BASE+0x1D //接收緩沖區(qū) 10 define CDR SJA1000_BASE+0x1F //時鐘分頻寄存器 //****************************************************************** // 定義 SJA1000 操作的命令字 : //***************************************************************** define TR_order 0x01 //發(fā)送請求命令 define AT_order 0x02 //中止發(fā)送命令 define RRB_order 0x04 //釋放接收緩沖區(qū) define CDO_order 0x08 //清楚數(shù)據(jù)溢出 define GTS_order 0x10 //進(jìn)入睡眠狀態(tài)命令 //******************************************************************* // 以下為 CAN 通信基本函數(shù): //******************************************************************* void Write_Reg(uchar reg,uchar reg_data)。 //設(shè)置輸出控制器和時鐘分頻寄存器 char SJA_send_data(unsigned char *senddatabuf)。 //通過 CAN 總線發(fā)送 send_data 數(shù)組中的數(shù)據(jù) extern uchar send_data[10]。 if(check()) write1byte(wdata)。 if(check()) write1byte(wdata)。 write1byte(deviceaddress)。 } /******************************************* 函數(shù)名稱: Read_1Byte_currentaddress 功 能:從 EEPROM 的當(dāng)前地址讀取 1 個字節(jié)的數(shù)據(jù) 參 數(shù):無 返回值 :讀取的數(shù)據(jù) ******************************************* uchar Read_1Byte_currentaddress(void) { uchar temp。 }*/ /******************************************* 函數(shù)名稱: Read_1Byte_currentaddress 功 能:從 EEPROM 的當(dāng)前地址讀取 1 個字節(jié)的數(shù)據(jù) 參 數(shù):無 返回值 :讀取的數(shù)據(jù) ********************************************/ uchar Read_1Byte_currentaddress(uchar readbuf[]) { //uchar temp。 stop()。 return 。 readbuf[1] = read1byte()。 stop()。 //等待 EEPROM 完成內(nèi)部寫入 基于 CAN 總線的溫濕度及光感度測量 if(flag) return 1。 } /******************************************* 函數(shù)名稱: Write_NByte 功 能:向 EEPROM 中寫入 N 個字節(jié)的數(shù)據(jù) 參 數(shù): outbuf指向?qū)懭霐?shù)據(jù)存放首地址的指針 n數(shù)據(jù)個數(shù),最大不能超過 8,由頁地址 決定其最大長度 dataaddress數(shù)據(jù)寫入的首地址 返回值 :寫入結(jié)果: 1成功, 0失敗 ********************************************/ uchar Write_NByte(uchar * outbuf,uchar n,uchar dataaddress) { uchar flag。 }*/ /******************************************* 基于 CAN 總線的溫濕度及光感度測量 函數(shù)名稱: Write_1Byte 功 能:向 EEPROM 中寫入 1 個字節(jié)的數(shù)據(jù) 參 數(shù): Wdata寫入的數(shù)據(jù) dataaddress數(shù)據(jù)的寫入地址 返回值 :寫入結(jié)果: 1成功, 0失敗 ********************************************/ uchar Write_1Byte(uchar wdata) { start()。 if(check()) write1byte(dataaddress)。 //CAN 總線溢出中斷處理 void Can_DATA_Rcv()。 //設(shè)置 CAN 的通信波特率函數(shù) char set_ACR_AMR(unsigned char ACR_DATA,unsigned char AMR_DATA)。=~BIT2 define S_WR P5OUT|=BIT3 define C_WR P5OUTamp。 do { delay_us(5)。} if(create_munication()) //檢測 CAN 控制器通信是否正常 {return 1。 default: return 1。} else {return 0。 //寫入命令到 SJA1000 命令寄存器 switch(order) { case TR_order: //發(fā)送請求命令 return 0。 0x0f)。 STATUS_data = Read_Reg(STATUS)。 } } else { send_num=0。 if((senddatabuf[1]amp。} //STATUS_data^4,表示 SJA1000 在接收信息 if((STATUS_data amp。} 基于 CAN 總線的溫濕度及光感度測量 Write_Reg(CDR,SJA_Clock_Out)。 } //while 結(jié)束 } return wrong_flag。} //如果超出范圍,報警,波特率設(shè)置失敗 else { while(wrong_count) //最多 32 次設(shè)置 SJA1000 內(nèi)部寄存器 BIT0 和 BIT1 { BIT0_data=rate_tab[CAN_rate_num*2]。 //置位復(fù)位請求 if((Read_Reg(CONTROL)amp。//訪問 SJA1000 控制寄存器,保存原始值 Write_Reg(CONTROL,MID_DATA|0x01)。 _NOP()。 _NOP()。 //電平轉(zhuǎn)換方向 5V PortDIR =0xff。 } /********************************************************* 函數(shù)原型: void Write_Reg(unsigned char reg,unsigned char reg_data) 函數(shù)功能:向 SJA1000 寄存器中寫值 基于 CAN 總線的溫濕度及光感度測量 參數(shù)說明: reg:寄存器地址 reg_data:要寫入的值 **********************************************************/ void Write_Reg(unsigned char reg,unsigned char reg_data) { C_ALE。_NOP()。 //電平轉(zhuǎn)換方向 5V PortOUT = reg。 S_RD。 //設(shè)定周期 1S TACTL = TASSEL_1 + ID_3 + MC_1。 } while(IFG1amp。 //允許 中斷 //// //切換時鐘 // unsigned int j。= ~BIT2。 P4DIR = 0XFF。= ~err_flag。 //接收 CAN 總線數(shù)據(jù)到 rcv_data 數(shù)組 } if(send_flag)//發(fā)送中斷 { send_flag=0。//SJA 最終處理 } } /******************************************** 函數(shù)原 型: void Init_BH1750()。 //開總中斷 while(1) { uchar Read_BUF[2] = {0,0}。 init_CPU ()。同時,在老師的身上我學(xué)得到很多實用的知識,在次我表示感謝!同時,對給過我?guī)椭乃型瑢W(xué) 和各位指導(dǎo)老師再次表示忠心的
點擊復(fù)制文檔內(nèi)容
高考資料相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1