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

正文內(nèi)容

can總線的溫室控制系統(tǒng)設(shè)計(jì)-資料下載頁

2025-07-30 00:13本頁面
  

【正文】 ata。 SJA_BCANAdr = REG_CONTROL。 TempData= *SJA_BCANAdr。 *SJA_BCANAdr=0x09。 //置位復(fù)位請求 和單濾波模式 if((*SJA_BCANAdramp。0x01) == 1) return 0。 else return 1。 } //*啟動命令字 bit BCAN_CMD_PRG(unsigned char cmd) { SJA_BCANAdr=REG_COMMAND。 //訪問地址指向命令寄存器 *SJA_BCANAdr=cmd。 //啟動命令字 switch(cmd) { case TR_CMD: return 0。 break。 case SRR_CMD: return 0。 break。 case AT_CMD: SJA_BCANAdr = REG_STATUS。 //訪問地址指向狀態(tài)寄存器 if((*SJA_BCANAdr amp。 0x20)==0) //判斷是否正在發(fā)送 return 0。 else return 1。 break。 case RRB_CMD: SJA_BCANAdr = REG_STATUS。 //訪問地址指向狀態(tài)寄存器 if((*SJA_BCANAdr amp。 0x01)==1) return 1。 else return 0。 break。 case COS_CMD: SJA_BCANAdr = REG_STATUS。 if((*SJA_BCANAdr amp。 0x02)==0)//判斷清除超載是否成功 return 0。 else return 1。 break。 default: return 1。 break。 }}//當(dāng)sja1000 收到正確的報文時,會產(chǎn)生int中斷 void ex0_int(void) interrupt 0 using 1{ unsigned char tt,tt1,length。 SJA_BCANAdr=REG_INTERRUPT。 if((*SJA_BCANAdr)amp。0x01) //產(chǎn)生了接收中斷 { SJA_BCANAdr=REG_RXBuffer1。 tt1=*SJA_BCANAdr。 length=tt1amp。0x0F。 if ((ttamp。0x40)!=0x40) //數(shù)據(jù)幀 = 為遠(yuǎn)程幀 { SJA_BCANAdr =REG_RXBuffer4 。 //宏定義的變量不能memcpy(RevceData,REG_RXBuffer4,8)。 memcpy(RevceData,SJA_BCANAdr,length)。 //功能:由src所指內(nèi)存區(qū)域復(fù)制count個字節(jié)到dest所指內(nèi)存區(qū)域 } BCAN_CMD_PRG(RRB_CMD)。 //釋放SJA1000接收緩沖區(qū),****已經(jīng)修改 }} //CAN發(fā)送一個字節(jié)void CAN_Send_onebyte(unsigned char CAN_TX_data,unsigned char length1){ unsigned char temptt。 loop: SJA_BCANAdr = REG_STATUS。 temptt=*SJA_BCANAdr。 if((tempttamp。0x04)==0x00) goto loop。 //循環(huán)檢測等待 { SJA_BCANAdr = REG_RXBuffer1。 //訪問地址指向發(fā)送緩沖區(qū)1,修改成頭文件 *SJA_BCANAdr=length1。 SJA_BCANAdr = REG_RXBuffer2。 //訪問地址指向發(fā)送緩沖區(qū)1,修改成頭文件 *SJA_BCANAdr=0x00。 SJA_BCANAdr = REG_RXBuffer3。 //訪問地址指向發(fā)送緩沖區(qū)1,修改成頭文件 *SJA_BCANAdr=0x00。 SJA_BCANAdr = REG_RXBuffer4。 *SJA_BCANAdr=CAN_TX_data。 //數(shù)據(jù)發(fā)送請求 BCAN_CMD_PRG(TR_CMD)。 //請求發(fā)送 }}//初始化SJA10000unsigned char Sja_1000_Init(void){ bit s。 EA=0。 //關(guān)總中斷 s=BCAN_ENTER_RETMODEL()。 if (s==1) return 1。 s=BCAN_CREATE_COMMUNATION()。 //建立通信 if (s==1) return 2。 s=BCAN_SET_OUTCLK(0x88)。 //Pelican if (s==1) return 3。 s=BCAN_SET_OBJECT(0xFF,0x4E,0x16,0x00,0xff,0xff,0xff,0xff)。//屏蔽寄存//器,都設(shè)為無關(guān),接收所有報文,當(dāng)屏蔽位為1,不濾波,0就濾波必須相等 if (s==1) return 4。 s=BCAN_SET_BANDRATE(ByteRate_125k)。 //設(shè)置波特率125K 16MHZ if (s==1) return 5。 SJA_BCANAdr=REG_OCR 。 //輸出控制寄存器 *SJA_BCANAdr=0x1a。 SJA_BCANAdr=REG_INTENABLE。 *SJA_BCANAdr=0x1D。 //設(shè)置中斷,接收和發(fā)送中斷 SJA_BCANAdr=REG_CONTROL。 //退出 復(fù)位模式 *SJA_BCANAdr=*SJA_BCANAdramp。0xfe。 if(*SJA_BCANAdr!=0x00) return 6。 EA=1。 return 0。 } //主程序部分void main(void){ unsigned char ss。unsigned char num=0。 EA=0。 PX0=1。 EX0=1。 IT0=0。 init_serialm()。 //初始化串口 ss=Sja_1000_Init()。 if (ss!=0) //初始化失敗 send_char_(0xBB)。 //測試專用發(fā)送到串口看狀態(tài) else EA=1。 //初始化成功,開總中斷 while(1){ tmpchange()。 //溫度轉(zhuǎn)換 delay_ms(10)。 display18B20(tmp())。 //顯示if(RevceData[0]==1) { RevceData[0]=0。 CAN_Send_onebyte(1,1)。// CAN_Send_onebyte(shi,1)。//CAN總線發(fā)送18B20的溫度值 CAN_Send_onebyte(ge,1)。//CAN總線發(fā)送18B20的溫度值 CAN_Send_onebyte(xiao,1)。// }}}附錄二 2號CAN節(jié)點(diǎn)程序代碼include include include define uchar unsigned chardefine uint unsigned intvoid CAN_Send_onebyte(unsigned char CAN_TX_data,unsigned char length1)。unsigned char ser,shi,ge,xiao,jishu。unsigned char wendu[4]。unsigned int temp。// unsigned char code table[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8, 0x80,0x90,0x88, x83,0xc6,0xa1,0x86,0x8e }。unsigned char xdata *SJA_BCANAdr。unsigned char data RevceData[10]。unsigned char inbuf1[8]。sbit DS=P2^4。//定義DS18B20接口DS=P2^4sbit P2_0=P2^0。//數(shù)碼管位選sbit P2_1=P2^1。sbit P2_2=P2^2。//數(shù)碼管位選sbit P2_3=P2^3。sbit P34=P3^4。sbit P33=P3^3。sbit CS=P2^0。void init_serialm(void){ SCON = 0x50。 TMOD |= 0x20。 PCON |= 0x80。 TH1 = 0xFA。 TL1 = 0xFA。 IE |= 0x90。 TR1 = 1。 }void send_char_(unsigned char ch) { SBUF=ch。 while(!TI)。 TI=0。}//定時器0初始化void timer0initial(){ TMOD|=0x1。 //工作方式16位定時計(jì)數(shù)器 TH0=0x3c。TL0=0x00。 //50MS定時初值(T0計(jì)時用) IE|=0x90。 //Enable Serial Interrupt ET0=1。TR0=0。}//定時器0中斷,不夠8個就在此發(fā)送void time_intt0(void) interrupt 1 using 2 { TH0=0x3c。TL0=0x00。 jishu++。 if (jishu==100) { jishu=0。CAN_Send_anylength(wendu,4)。 }}void delay(uint count) //delay{ uint i。 while(count) { i=200。 while(i0) i。 count。 }}/*1.復(fù)位:對DS18B20操作之前,首先要將它復(fù)位。復(fù)位時序?yàn)椋?1)主機(jī)將信號線置為低電平,時間為480~960μS。(2)主機(jī)將信號線置為高電平,時間為15~60μS。(3)DS18B20發(fā)出60~240μS的低電平作為應(yīng)答信號。主機(jī)收到此信號后,才能對DS18820作其它操作。*/void dsreset(void) //send reset and initialization mand{ uint i。 //DS18B20初始化 DS=0。 i=103。 while(i0)i。 DS=1。 i=4。 while(i0)i。} /*讀操作:主機(jī)將信號線從高電平拉低至低電平1μS以上,再使數(shù)據(jù)線 升為高電平,產(chǎn)生讀起始信號。從主機(jī)將信號線從高電平拉低至低電平起15~60 μS的時間內(nèi)DS18820將數(shù)據(jù)放到信號線上,供主機(jī)讀取。從而完成了一個讀周期。在開始另一個讀周期前,必須有1μS以上的高電平恢復(fù)期。*/bit tmpreadbit(void) //
點(diǎn)擊復(fù)制文檔內(nèi)容
研究報告相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1