串口Xmodem協(xié)議的發(fā)送數(shù)據(jù)

串口Xmodem協(xié)議的發(fā)送數(shù)據(jù)

ID:46867025

大小:55.50 KB

頁數(shù):7頁

時間:2019-11-28

串口Xmodem協(xié)議的發(fā)送數(shù)據(jù)_第1頁
串口Xmodem協(xié)議的發(fā)送數(shù)據(jù)_第2頁
串口Xmodem協(xié)議的發(fā)送數(shù)據(jù)_第3頁
串口Xmodem協(xié)議的發(fā)送數(shù)據(jù)_第4頁
串口Xmodem協(xié)議的發(fā)送數(shù)據(jù)_第5頁
資源描述:

《串口Xmodem協(xié)議的發(fā)送數(shù)據(jù)》由會員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在工程資料-天天文庫。

1、串口Xmodem協(xié)議的發(fā)送數(shù)據(jù)程序日期:2007-05-21編寫:李猛Xmodem協(xié)議Xmodem協(xié)議備注:此程序中430為發(fā)送方說明:1.程序開始時,會循環(huán)等待NAK的到來,只要收到的不是NAK,就會一直等待下去,直到收到了NAK,才開始數(shù)據(jù)的發(fā)送;2?上一輪如杲發(fā)送的是-組數(shù)據(jù),則收到CAN,程序就中止;收到ACK,就發(fā)送下一組數(shù)據(jù);收到NAK,就發(fā)送上一組數(shù)據(jù);如果收到的不是上面三種,程序就返回,直到出現(xiàn)三個中的某一個;3?上一輪如果發(fā)送的是EOT,收到CAN就中止;收到ACK,就結(jié)束程序收到NAK,就再發(fā)送EOT;收到的是其他數(shù)據(jù)就返冋,直到出現(xiàn)三個中的場#inelude

2、0x14x.h>#defineucharunsignedchar#defineNAK0x15//Xmodem協(xié)議中的術(shù)語#defineACK0x06#defineCAN0x18#defineEOT0x04#defineSOH0x01〃要發(fā)送的數(shù)據(jù),即430從此數(shù)組中取數(shù)據(jù)構(gòu)成數(shù)據(jù)包,共22字節(jié),分5次發(fā)送,最后一次補(bǔ)3個0x1AucharFileSend[22]={0xAA,0xA9,0xA8,0xA7,0xA6)0xA5,0xA4,0xA3,0xA2,0xA1,0xA0,0x9F,0x9E,0x9D,0x9C,0x9B,0x9A,Ox99,Ox98,0x97,Ox96,0x95};〃數(shù)據(jù)包

3、,長9字節(jié),分別為SOH、包序號、序號補(bǔ)碼、5字節(jié)數(shù)據(jù)、校驗碼ucharDataSend[9];ucharSeq=0x01;ucharcmpl;ucharesum;//數(shù)據(jù)包序號,初值為1〃數(shù)據(jù)包序號的補(bǔ)碼//垂直累加和校驗碼,初值為0ucharrec_PC;uchark=0;ucharj=0;//收到的PC的確認(rèn)命令〃指向FileSend的標(biāo)號,從中取數(shù)據(jù)時使用,初值為0〃指向DataSend的標(biāo)號,發(fā)送數(shù)據(jù)時使用,初值為0ucharfin_flag=0;uchareot_flag=0;〃數(shù)據(jù)取完的標(biāo)志,為1時表示FileSend川的數(shù)據(jù)已經(jīng)取完〃發(fā)送完成的標(biāo)志,為1時表示430己經(jīng)發(fā)送過

4、了EOT標(biāo)志voidlnit_CLK();〃函數(shù)聲明voidlnit_Port();voidlnit_UARTO();voidmain(void){WDTCTL=WDTPW+WDTHOLD;〃關(guān)閉看門狗_DINT();lnit_CLK();lnit_Port();Init_UART0();_EINT();while(1);〃關(guān)中斷〃一系列的初始化//開中斷〃等待:接收屮斷,功能全在接收中斷函數(shù)中完成//主程序只是循環(huán)等待I………………時鐘初始化函數(shù)******************/voidlnit_CLK(void){BCSCTL1=0x00;BCSCTL1+=XT2OFF;〃關(guān)閉XT2

5、,因為板子上沒有BCSCTL1+=XTS;〃低速振蕩器是高頻模式BCSCTL2=0x00;BCSCTL2+=SELM0;BCSCTL2+=SELM1;//MCLK的時鐘源為低速晶體振蕩器〃此外,ACLK的時鐘源為LFTX1,SMCLK的時鐘源為DC0CLK//分頻因子均為1}/******************端口初始化函數(shù)******************/voidlnit_Port(void){P3DIR=0;P3SEL=0;//P3所有管腳均初始化為輸入方向和一般I/OUreturn;}串口初始化函數(shù)nvoidInit_UARTO(void){U0CTL=SWRST;UOCTL+=

6、CHAR;U0TCTL=0x00;UOTCTL+=SSELO;U0BR1=0x01;U0BR0=0xA0;U0MCTL=0xBA;UOCTL&=~SWRST;〃小行模塊設(shè)置時的必須//8位數(shù)據(jù)位,1位停止位,無校驗〃波特率時鐘源選擇為ACLK//設(shè)置波特率為9600ME1

7、=UTXE0+URXE0;〃使能USART0模塊IE1

8、=URXIE0;〃使能USART0的接收中斷P3SEL

9、=BIT4+BIT5;//P3.4和P3.5為串口功能P3DIR

10、=BIT4;//P3.4為輸岀return;}/******************接收中斷函數(shù)******************/#pragm

11、avector=USARTORX_VECTOR—interruptvoidUsartORx(){rec_PC=RXBUFO;〃接收到的PC的命令if(rec_PC==CAN){while(1);〃如果接收到CAN命令,則取消傳輸,程序中止//程序在此處循環(huán),不再跳出中斷}if(k==0)//k=0表示這是第一次接收PC命令,判斷是否是開始傳輸?shù)臉?biāo)志NAK{if(rec_PC==NAK)//收到NAK則開始發(fā)送

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文

此文檔下載收益歸作者所有

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學(xué)公式或PPT動畫的文件,查看預(yù)覽時可能會顯示錯亂或異常,文件下載后無此問題,請放心下載。
2. 本文檔由用戶上傳,版權(quán)歸屬用戶,天天文庫負(fù)責(zé)整理代發(fā)布。如果您對本文檔版權(quán)有爭議請及時聯(lián)系客服。
3. 下載前請仔細(xì)閱讀文檔內(nèi)容,確認(rèn)文檔內(nèi)容符合您的需求后進(jìn)行下載,若出現(xiàn)內(nèi)容與標(biāo)題不符可向本站投訴處理。
4. 下載文檔時可能由于網(wǎng)絡(luò)波動等原因無法下載或下載錯誤,付費(fèi)完成后未能成功下載的用戶請聯(lián)系客服處理。