Ⅰ at89c52單片機可以通過普通IO口實現一線通信嗎求通信程序!
/*合泰單片機*/
#defineDATA_pa6
unsignedcharnub[5]={0x01,0x0b,0xfe,0xcd,0xee};
unsignedcharReceive[10]={0x00};
unsignedcharReceivetime;
unsignedcharReceiveBF=0x00;
unsignedcharReceivecount=0x00;
unsignedcharReceiveC=0x00;
void__attribute((interrupt(0x10)))isr_time(void)//100us定時器中斷函數
{
_ptma0f=0;
switch(ReceiveBF)
{
case0x00://引導碼低
{
if(DATA)
{
if(Receivetime>85)
{
if(Receivetime<100)
{
ReceiveBF=0x01;
Receivetime=0x00;
}
else
{
ReceiveBF=0x00;
Receivetime=0x00;
}
}
else
{
ReceiveBF=0x00;
Receivetime=0x00;
}
}
else
{
Receivetime++;
}
break;
}
case0x01://引導碼高
{
if(DATA)
{
Receivetime++;
}
else
{
if(Receivetime>40)
{
if(Receivetime<55)
{
ReceiveBF=0x02;
Receivetime=0x00;
Receivecount=0x00;
ReceiveC=0x00;
}
else
{
ReceiveBF=0x00;
Receivetime=0x00;
}
}
else
{
ReceiveBF=0x00;
Receivetime=0x00;
}
}
break;
}
case0x02://低電平
{
if(DATA)
{
if(Receivetime>10)//數據
{
if(Receivetime<25)
{
ReceiveBF=0x03;
Receivetime=0x00;
}
else
if(Receivetime<55)
{
ReceiveBF=0x04;
Receivetime=0x00;
}
}
}
else
{
Receivetime++;
}
break;
}
case0x03://數據碼
{
if(DATA)
{
Receivetime++;
}
else
{
if(Receivetime>25)//1
{
Receive[ReceiveC]=Receive[ReceiveC]<<1;
Receive[ReceiveC]=Receive[ReceiveC]|0x01;
Receivecount++;
if(Receivecount==8)
{
Receivecount=0x00;
ReceiveC++;
}
ReceiveBF=0x02;
Receivetime=0x00;
}
else//0
{
Receive[ReceiveC]=Receive[ReceiveC]<<1;
Receive[ReceiveC]=Receive[ReceiveC]&0xfe;
Receivecount++;
if(Receivecount==8)
{
Receivecount=0x00;
ReceiveC++;
}
ReceiveBF=0x02;
Receivetime=0x00;
}
}
break;
}
case0x04://結束碼
{
ReceiveBF=0x00;
Receivetime=0x00;
break;
}
}
}
voidSend()
{
volatileunsignedcharcount=0x05;
volatileunsignedchardatanub;
volatileunsignedchardatacount;
//引導碼
DATA=0;
dly100us(90);
DATA=1;
dly100us(45);
//數據碼
while(count)
{
datanub=nub[5-count];
datacount=0x08;
while(datacount)
{
if(datanub&0x80)
{
DATA=0;
dly100us(15);
DATA=1;
dly100us(30);
}
else
{
DATA=0;
dly100us(15);
DATA=1;
dly100us(15);
}
datanub=datanub<<1;
datacount--;
}
count--;
}
//結束碼
DATA=0;
dly100us(45);
DATA=1;
dly100us(45);
DATA=0;
dly100us(45);
DATA=1;
}
Ⅱ 通訊技術需要學習怎麼樣的編程
呵呵,我就是學通信的,編程對於通信里的用處不大,我們主要還是學習理論知識和一些硬體和軟體換的操作,C語言是必須的,還有IP協議之類的也要了解,計算機埠技術、還有就是數字通信里的編碼也要會。
Ⅲ 學習汽車模塊之間的編程與通訊
汽車電子技術的發展和進步,一般的家用轎車上有數十個電子控制單元,豪華轎車更是達到數百個電子控制單元。汽車生產製造的過程中,同一種電子控制單元用在不同配置的汽車上,需要使用不同的軟體參數。並且出廠之前,需要使用檢測設備與電子控制單元進行通訊(讀取、寫入、控制),以確保電子控制單元內軟體的正確性。
汽車生產廠家需要根據不同汽車、不同的電子控制單元的產品規范進行編程,目前的編程方式為敲代碼,每一個語句由多個代碼組成,編程工作難度大、非專業編程人員無法進行編程工作,且此種方式的編程效率低。
本發明的目的是解決上述的編程難度大、編程效率低的問題。應用可視化編程系統,編程工作簡化成了「填空題」、「選擇題」,即使非專業編程人員也能輕易掌握完成編程工作,且編程效率大幅度提高。
本發明包括以下步驟:
1)在個人電腦的可視化編程系統的後台設置中,將汽車電子控制單元的通訊程序分段切割,每發送或者接受一條指令的語句成為一個塊;傳統編程以語句為最小單位,一個完整的程序語句數萬行;可視化編程以塊為最小單位,一個完整的程序由數十到數百個塊組成;
2)每個塊中,針對不同汽車電子控制單元需要有參數或者指令變化的部分,不賦具體值,以地址名代替;
3)將地址名鏈接至前台界面的單元格,前台界面單元格與後台地址名相互唯一對應;
4)依據汽車電子控制單元的產品規範文件,繪製程序流程圖,將指令與參數變化點整理出來;
5)在可視化編程系統的界面,以填空提、選擇題方式完成參數及指令變化點的輸入;
6)在可視化編程系統的界面,依據整理好的程序流程圖,通過對塊的組合,設置塊與塊之間的運行與跳轉信息,並設置通訊參數;所述的通訊參數為通訊等待時間、通訊波特率等;
7)在可視化編程系統的界面,點擊編程按鈕,系統自動將前台界面的數據通過地址名傳送至後台,在後台完成計算,組合成可執行程序;
8)一個完整的汽車電子控制單元通訊程序編程工作完成,重復上述步驟,完成下一個電子控制單元的通訊程序編程。
附圖說明
圖1為可視化編程系統應用流程圖。
圖2為使用本發明進行某車型制動防抱死電子控制模塊通訊程序流程圖。
圖3為某車型制動防抱死電子控制模塊通訊程序的整理通訊參數及指令變化點電腦界面。
圖4為某車型制動防抱死電子控制模塊通訊程序的可視化編程系統的界面以填空、選擇的方式完成參數與指令變化點的輸入電腦界面。
圖5為某車型制動防抱死電子控制模塊通訊程序的系統自動完成後台程序運行、生成可執行程序、編程工作完成電腦界面。
具體實施方式
如圖1所示,本發明包括以下步驟:
1)在個人電腦的可視化編程系統的後台設置中,將汽車電子控制單元的通訊程序分段切割,每發送或者接受一條指令的語句成為一個塊;傳統編程以語句為最小單位,一個完整的程序語句數萬行;可視化編程以塊為最小單位,一個完整的程序由數十到數百個塊組成;
2)每個塊中,針對不同汽車電子控制單元需要有參數或者指令變化的部分,不賦具體值,以地址名代替;
3)將地址名鏈接至前台界面的單元格,前台界面單元格與後台地址名相互唯一對應;
4)依據汽車電子控制單元的產品規範文件,繪製程序流程圖,將指令與參數變化點整理出來;
5)在可視化編程系統的界面,以填空提、選擇題方式完成參數及指令變化點的輸入;
6)在可視化編程系統的界面,依據整理好的程序流程圖,通過對塊的組合,設置塊與塊之間的運行與跳轉信息,並設置通訊參數;所述的通訊參數為通訊等待時間、通訊波特率等;
7)在可視化編程系統的界面,點擊編程按鈕,系統自動將前台界面的數據通過地址名傳送至後台,在後台完成計算,組合成可執行程序;
8)一個完整的汽車電子控制單元通訊程序編程工作完成,重復上述步驟,完成下一個電子控制單元的通訊程序編程。
使用可視化編程系統進行某車型制動防抱死電子控制模塊通訊程序開發,實施步驟:
1)依據產品文件,繪製程序流程圖,見圖2;
2)依據產品文件,整理通訊參數及指令變化點,見圖3;
3)在可視化編程系統的界面以填空、選擇的方式完成參數與指令變化點的輸入,見圖4;
4)依據流程圖,對前台指令(對應後台程序塊)進行組合、設置通訊參數,見圖4;
5)點擊編程按鈕,系統自動完成後台程序運行,生成可執行程序,編程工作完成。見圖5。
以上為編程全過程,相比傳統的敲代碼編程,編程難度大幅度降低,技術不是專業的軟體技術人員,也能輕松完成編程工作。同時,此種編程方式,大幅節省了編程時間,提高了編程效率。
本發明公開了一種汽車電子控制單元通訊程序的可視化編程方法。該編程方法,包括一台個人電腦、可視化編程系統。其中,個人電腦用於運行可視化編程系統、存儲數據。可視化編程系統用於實現參數的輸入、程序指令的生成及組合、並自動生成可執行的程序文件。通過可視化編程系統,將傳統編程的敲代碼工作變成了填空及選擇題,極大簡化了編程的難度,並顯著提升了編程效率。
Ⅳ 通信專業需要編程嗎
一般高校的通信與信息系統專業課是不考編程的,專業課大多為通信原理、信號與系統或數字信號處理等,每所高校的專業課不一樣,但是一般都不涉及編程。