AVR單片機(jī)Can總線通信控制程序_第1頁(yè)
AVR單片機(jī)Can總線通信控制程序_第2頁(yè)
AVR單片機(jī)Can總線通信控制程序_第3頁(yè)
AVR單片機(jī)Can總線通信控制程序_第4頁(yè)
AVR單片機(jī)Can總線通信控制程序_第5頁(yè)
已閱讀5頁(yè),還剩3頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

//// 工程名稱: 汽車041項(xiàng)目目標(biāo)板3-6程序// 功能描述:CAN通信,繼電器控制,AD采集//IDE環(huán)境:ICCAVR//Init2515:2515初始化程序/===================================================================================#include"iom16v.h"#include"bit.h”#include"macros.h"#include"stdio.h" 〃標(biāo)準(zhǔn)輸入輸出頭文件#include”2515.h”#include"SPI_Ctrl.h”#include"Function.h"#include"CAN0.h”#include"MAX518.h”#include"AD.h”#pragmainterrupt_handlerExtint0:2#pragmainterrupt_handlertimer1_isr:9#defineuintunsignedint#defineucharunsignedchar/******************外部中斷常量******************/#defineGLOBAL7 〃全局中斷位宏定義#defineEXTINT06〃外部中斷0位宏定義#defineH_SRCLKPORTD|=(1<<6)〃上升沿移位#defineL_SRCLKPORTD&=~(1<<6)//下降沿不移位#defineH_SERPORTD|=(1<<7) //595串行數(shù)據(jù)輸#defineL_SERPORTD&=~(1<<7) //595串行數(shù)據(jù)輸#defineH_RCLKPORTD|=(1<<5)//595數(shù)據(jù)鎖存放開(kāi)#defineL_RCLKPORTD&=~(1<<5)//595數(shù)據(jù)鎖存ucharFlag=0,Flag1=0,pp=0;ucharReceive_Data=0,Start_Data=0;ucharCAN_TX_Buf[8],CAN_RX_Buf[8];//*************************************************************//*函數(shù)說(shuō)明:MCU端口初始化//*輸入:無(wú)//*輸出:無(wú)//*調(diào)用函數(shù)://*************************************************************//IO端口初始化voidport_init(void)//IO端口初始化DDRA=0x00;PORTA=0x00;DDRB=0xff;PORTB=0xff;DDRC=0xff;PORTC=0xff;DDRD=0xff;PORTD=0xff;/*******************************************函數(shù)名稱:Int_init功能:中斷初始化參數(shù):無(wú)返回值:無(wú)/********************************************/voidInt_init(void){SREG|=BIT(GLOBAL); 〃使能全局中斷MCUCR|=0x02; 〃外部中斷0采用下降沿觸發(fā)GICR|=BIT(EXTINT0);//使能外部中斷0DDRD&=~(BIT(PD2)); 〃配置中斷管腳為輸入PORTD|=BIT(PD2);〃使能中斷管腳的上拉}voidtimer1_init(void){TCCR1B=0x04;//256分頻TCNT1H=0Xff;〃賦初值TCNT1L=0Xfe;//賦初值TIMSK|=0x04;//中斷使能SREG|=0x80;//總中斷開(kāi)關(guān)}/*******************************************函數(shù)名稱:WR_74ls595(uchardata)功能:控制繼電器/********************************************/voidWR_74ls595(uchardata){uchari,dat;L_RCLK;for(i=0;i<8;i++){L_SRCLK;if(data&0x80)H_SER;elseL_SER;H_SRCLK;data<<=1;}H_RCLK;L_RCLK;}/*******************************************函數(shù)名稱:Data_get()功能:對(duì)上位機(jī)發(fā)過(guò)來(lái)的數(shù)據(jù)分析后返回需要設(shè)置的故障代碼/********************************************/voidData_get(){if(CAN_RX_Buf[0]==0x01)Start_Data=Start_Data|0x01;if(CAN_RX_Buf[0]==0x00)Start_Data=Start_Data&0xfe;if(CAN_RX_Buf[1]==0x01)Start_Data=Start_Data|0x02;if(CAN_RX_Buf[1]==0x00)Start_Data=Start_Data&0xfd;if(CAN_RX_Buf[2]==0x01)Start_Data=Start_Data|0x04;if(CAN_RX_Buf[2]==0x00)Start_Data=Start_Data&0xfb;if(CAN_RX_Buf[3]==0x01)Start_Data=Start_Data|0x08;if(CAN_RX_Buf[3]==0x00)Start_Data=Start_Data&0xf7;if(CAN_RX_Buf[4]==0x01)Start_Data=Start_Data|0x10;if(CAN_RX_Buf[4]==0x00)Start_Data=Start_Data&0xef;if(CAN_RX_Buf[5]==0x01)Start_Data=Start_Data|0x20;if(CAN_RX_Buf[5]==0x00)Start_Data=Start_Data&0xdf;if(CAN_RX_Buf[6]==0x01)Start_Data=Start_Data|0x40;if(CAN_RX_Buf[6]==0x00)Start_Data=Start_Data&0xbf;if(CAN_RX_Buf[7]==0x01)Start_Data=Start_Data|0x80;if(CAN_RX_Buf[7]==0x00)Start_Data=Start_Data&0x7f;if((CAN_RX_Buf[0]==0x55)&&(CAN_RX_Buf[7]==0x55))Flag1=1;if((CAN_RX_Buf[0]==0xaa)&&(CAN_RX_Buf[7]==0xaa))Flag1=0;/*******************************************函數(shù)名稱:Send_AD()功能:采集AD數(shù)據(jù)并通過(guò)can發(fā)送voidSend_AD(){delay10ms(20);//if(pp==0)CAN_TX_Buf[0]=mega16_ad(0);delay10ms(20);//if(pp==1)CAN_TX_Buf[1]=mega16_ad(1);delay10ms(20);//if(pp==2)CAN_TX_Buf[2]=mega16_ad(2);delay10ms(20);//if(pp==3)CAN_TX_Buf[3]=mega16_ad(3);delay10ms(20);//if(pp==4)CAN_TX_Buf[4]=mega16_ad(4);delay10ms(20);//if(pp==5)CAN_TX_Buf[5]=mega16_ad(5);delay10ms(20);//if(pp==6)CAN_TX_Buf[6]=mega16_ad(6);delay10ms(20);//if(pp==7)//{CAN_TX_Buf[7]=mega16_ad(7);delay10ms(20);CAN_Send(CAN_TX_Buf);//)/**************************************主函數(shù)****************************************/intmain(){unsignedchartemp;id_board=9;//******************修改板子代號(hào)*******************//port_init();Int_init(); 〃初始化中斷timer1_init();SPI_MasterInit();//SPI初始化,并啟動(dòng)Init2515();SEI();WR_74ls595(0x00);//所有繼電器不動(dòng)作while(1){if(Flag==1)//flag=1表示收到上位機(jī)下發(fā)的指令{Flag=0;CAN_Receive(CAN_RX_Buf);Data_get(); 〃處理得到的數(shù)據(jù)WR_74ls595(Start_Data); 〃控制繼電器動(dòng)作}if(Flag1==1){Send_AD();//發(fā)送數(shù)據(jù)//if(pp>=40)//{pp=o;//CAN_Send(CAN_TX_Buf);//)}return0;}/

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論