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

正文內(nèi)容

基于enc28j60的以太網(wǎng)設(shè)計(jì)_畢業(yè)設(shè)計(jì)論文-資料下載頁(yè)

2025-02-26 09:19本頁(yè)面
  

【正文】 c 下,并且根據(jù)需要配置。在 版本中對(duì)配置做了如下修改: ( 1)配置 IP 地址,默認(rèn) 先關(guān) IP,在初始化中再設(shè)定。 define UIP_FIXEDADDR 0 define UIP_IPADDR0 192 define UIP_IPADDR1 168 define UIP_IPADDR2 1 define UIP_IPADDR3 9 define UIP_NETMASK0 255 define UIP_NETMASK1 255 基于 ENC28J60 的以太網(wǎng)通信設(shè)計(jì)與實(shí)現(xiàn) 37 define UIP_NETMASK2 255 define UIP_NETMASK3 0 define UIP_DRIPADDR0 192 define UIP_DRIPADDR1 168 define UIP_DRIPADDR2 1 define UIP_DRIPADDR3 1 ( 2)設(shè)置 MAC 地址 define UIP_FIXEDETHADDR 1 define UIP_ETHADDR0 0x00 define UIP_ETHADDR1 0x4f define UIP_ETHADDR2 0x49 define UIP_ETHADDR3 0x12 define UIP_ETHADDR4 0x12 define UIP_ETHADDR5 0x13 ( 3) ping 功能 define UIP_PINGADDRCONF 1 ( 4)關(guān)閉主動(dòng)請(qǐng)求連接的功能 define UIP_ACTIVE_OPEN 0 ( 5)將 uip_tcp_appstate_t 定位 u8_t 類(lèi)型。 ( 6)由于單片機(jī)是大端結(jié)構(gòu),因此宏定義需要修改 define UIP_CONF_BYTE_ORDER UIP_BIG_ENDIAN ( 7)暫時(shí)不移植打印信息,先關(guān)閉 濟(jì)源職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計(jì)(論文) define UIP_CONF_LOGGING 0 ( 8)定義數(shù)據(jù)結(jié)構(gòu)類(lèi)型 typedef unsigned char u8_t。 typedef unsigned int u16_t。 typedef unsigned long u32_t。 7.若使用 keil C 的小模式編譯,則需要在大部分的 RAM 的變量前增加 xdata。 8. data 為 keil C 的關(guān)鍵詞,代碼中所有出現(xiàn) data 的地方(主要是參數(shù)、局部變量、結(jié)構(gòu)體成員)改為 pucdata 或 ucdata。 9.解決編譯過(guò)程中的錯(cuò)誤。由于 uIP 協(xié)議棧是用 C 語(yǔ)言編寫(xiě),所以編譯過(guò)程中的問(wèn)題比較少,并且容易解決。 uIP的關(guān)鍵功 能及使用方法 應(yīng)用程序必須作為 C 函數(shù)去實(shí)現(xiàn), uIP 在任何一個(gè)事件發(fā)生時(shí)調(diào)用UIP_APPCALL()意,某些函數(shù)可以在互相連接時(shí)發(fā)生 (即新數(shù)。表 41列出了可能的事件和每個(gè)事件的對(duì)應(yīng)測(cè)試函數(shù),測(cè)試函數(shù)用于區(qū)別不同的事件。函數(shù)是作為 C 宏命令實(shí)現(xiàn)的,將會(huì)是零或非零值。注據(jù)可以在數(shù)據(jù)確應(yīng)的同時(shí)到達(dá) )。 表 41 uIP 應(yīng)用事件和對(duì)應(yīng)的測(cè)試參數(shù) 一個(gè)數(shù)據(jù)包到達(dá),確定先前發(fā)送到數(shù)據(jù) uip_acked() 應(yīng)用程序的新數(shù)據(jù)包已到達(dá) uip_newdata() 一個(gè)遠(yuǎn)程主機(jī)連接到監(jiān)聽(tīng)端口 uip_connected(基于 ENC28J60 的以太網(wǎng)通信設(shè)計(jì)與實(shí)現(xiàn) 39 ) 一個(gè)到達(dá)遠(yuǎn)程主機(jī)的連接建立成功 uip_connected() 計(jì)時(shí)時(shí)間滿(mǎn)重發(fā) uip_rexmit() 計(jì)時(shí)時(shí)間滿(mǎn)周期性輪詢(xún) uip_poll() 遠(yuǎn)程主機(jī)關(guān)閉連接 uip_closed() 遠(yuǎn)程主機(jī)中斷連接 uip_aborted() 由于太多重傳,連接中斷 uip_timedout() 當(dāng)應(yīng)用程序調(diào)用時(shí), uIP 設(shè)置全局變量 uip_conn 去指向當(dāng)前連接的 uip_conn 結(jié)構(gòu),這可以用于區(qū)別不同的服務(wù)。一個(gè)典型的應(yīng)用是檢查 uip_connlport (當(dāng)?shù)?TCP 端口號(hào) )去決定哪個(gè) 服務(wù)連接應(yīng)該提供。例如,如果值 uip_connlport 等于 80,應(yīng)用程序可以決定啟動(dòng)一個(gè) HTTP 服務(wù);若值是 23,則是啟動(dòng) TELNET 服務(wù)。 接收數(shù)據(jù) 如果 uIP測(cè)試函數(shù) uip_newdata()的值為 1,則遠(yuǎn)程連接的主機(jī)有發(fā)送新數(shù)據(jù), uip_appdata 指針指向?qū)嶋H數(shù)據(jù),數(shù)據(jù)的大小通過(guò) uIP函數(shù) uip_datalen()獲得。在數(shù)據(jù)不是被緩沖后,應(yīng)用程序必須立刻啟動(dòng)。 發(fā)送數(shù)據(jù) 應(yīng)用程序通過(guò)使用 uIP 函數(shù) uip_send()發(fā)送數(shù)據(jù)。 uip_send()濟(jì)源職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計(jì)(論文) 函數(shù)采用兩個(gè)參數(shù):一 個(gè)指針指向發(fā)送數(shù)據(jù)和數(shù)據(jù)的長(zhǎng)度。如果應(yīng)用程序?yàn)榱水a(chǎn)生要發(fā)送的實(shí)際數(shù)據(jù)需要 RAM 空間,包緩存 (通過(guò)uip_appdata 指針指向 )可以用于這方面。在一個(gè)時(shí)間里應(yīng)用程序只能在連接中發(fā)送一塊數(shù)據(jù),所以不可以在每個(gè)應(yīng)用程序啟用中調(diào)用uip_send()超過(guò)一次,只有上一次調(diào)用的數(shù)據(jù)將會(huì)發(fā)出后才可以。注意,調(diào)用 uip_send()后會(huì)改變某些全局變量,在應(yīng)用函數(shù)返回前它不能被調(diào)用。 重發(fā)數(shù)據(jù) 若數(shù)據(jù)在網(wǎng)絡(luò)中丟失,則應(yīng)用程序必須重新發(fā)數(shù)據(jù)。無(wú)論是數(shù)據(jù)收到還是沒(méi)有收到, uIP 都保持跟蹤,并通知應(yīng)用程序什么時(shí)候 察覺(jué)出數(shù)據(jù)丟失了。若測(cè)試函數(shù) uip_rexmit()為真,則應(yīng)用程序要重發(fā)上一次發(fā)出的數(shù)據(jù)。重發(fā)就好像原來(lái)那樣發(fā)送,也就是通過(guò) uip_send()發(fā)送。 關(guān)閉連接 應(yīng)用程序通過(guò)調(diào)用 uip_close()關(guān)閉當(dāng)前連接,這會(huì)導(dǎo)致連接干凈地關(guān)閉。為了指出致命的錯(cuò)誤,應(yīng)用程序可以通過(guò)中止連接和調(diào)用uip_abort()函數(shù)完成這項(xiàng)工作。若連接已經(jīng)被遠(yuǎn)端關(guān)閉,則測(cè)試函數(shù) uip_closed()為真,應(yīng)用程序接著可以做一些必要的清理工作。 報(bào)告錯(cuò)誤 有兩個(gè)致命的錯(cuò)誤可以發(fā)生在連接中:連接由遠(yuǎn)程 主機(jī)中止和連基于 ENC28J60 的以太網(wǎng)通信設(shè)計(jì)與實(shí)現(xiàn) 41 接多次重發(fā)上一數(shù)據(jù)而被中止。 uIP 通過(guò)調(diào)用函數(shù)報(bào)告這些問(wèn)題,應(yīng)用程序使用兩個(gè)測(cè)試函數(shù) uip_aborted()和 uip_timedout() 去測(cè)試這些錯(cuò)誤情況。 輪詢(xún) 當(dāng)連接空閑時(shí), uIP 周期性地輪詢(xún)應(yīng)用程序,應(yīng)用程序使用測(cè)試函數(shù) uip_poll()去檢查它是否被輪詢(xún)過(guò)。 監(jiān)聽(tīng)端口 uIP 維持一個(gè)監(jiān)聽(tīng) TCP 端口列表,通過(guò) uip_listen()函數(shù),一個(gè)新的監(jiān)聽(tīng)端口被打開(kāi)。當(dāng)一個(gè)連接請(qǐng)求在一個(gè)監(jiān)聽(tīng)端口到達(dá), uIP 產(chǎn)生一個(gè)新的連接。若一個(gè)新連接產(chǎn)生,則應(yīng)用程序被調(diào)用,測(cè)試 函數(shù)uip_connected()為真。 打開(kāi)連接 作為 uIP 的 版,在 uIP 里面通過(guò)使用 uip_connect()函數(shù)打開(kāi)一個(gè)新連接。這個(gè)函數(shù)打開(kāi)一個(gè)新連接到指定的 IP 地址和端口,返回一個(gè)新連接的指針到 uip_conn 結(jié)構(gòu)。若是沒(méi)有空余的連接槽,則函數(shù)返回空值。為了方便,函數(shù) uip_ipaddr()可以用于將 IP 地址打包進(jìn)兩個(gè)單元 16 位數(shù)組里,通過(guò) uIP 去代表 IP 地址。 接下來(lái)用兩個(gè)例子說(shuō)明。第一個(gè)例子展示了怎樣打開(kāi)一個(gè)連接去遠(yuǎn)端 TCP 端口 8080。若沒(méi)有足夠的 TCP 連接插槽去允許一個(gè)新連 接打開(kāi),則 uip_connect()函數(shù)返回 NULL 并通過(guò) uip_abort()中止當(dāng)前濟(jì)源職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計(jì)(論文) 連接。第二個(gè)例子展示怎樣打開(kāi)一個(gè)新連接去指定的 IP 地址。 例 1:打開(kāi)一個(gè)連接去遠(yuǎn)端 TCP 端口 8080。 void connect_example1_app(void) { if(uip_connect(uip_connripaddr, 8080) == NULL) { uip_abort()。 } } 例 2:打開(kāi)一個(gè)連接去當(dāng)前連接的遠(yuǎn)端的端口 8080。 void connect_example2(void) { u16_t ipaddr[2]。 uip_ipaddr(ipaddr, 192,168,0,1)。 uip_connect(ipaddr, 8080)。 } 數(shù)據(jù)流控制 uIP 通過(guò)函數(shù) uip_stop()和函數(shù) uip_restart()提供對(duì)存取 TCP數(shù)據(jù)流的控制途徑。假如一個(gè)應(yīng)用程序下載數(shù)據(jù)到一個(gè)慢速設(shè)備,例如磁盤(pán)驅(qū)動(dòng)器。當(dāng)磁盤(pán)驅(qū)動(dòng)器的作業(yè)隊(duì)列滿(mǎn)時(shí),應(yīng)用程序不會(huì)準(zhǔn)備從服務(wù)器接收更多的數(shù)據(jù),直到隊(duì)列排出空位。函數(shù) uip_stop()可以基于 ENC28J60 的以太網(wǎng)通信設(shè)計(jì)與實(shí)現(xiàn) 43 用于維護(hù)流控制和停止遠(yuǎn)程主機(jī)發(fā)送數(shù)據(jù)。當(dāng)應(yīng)用程序準(zhǔn)備好 接收更多數(shù)據(jù)時(shí),可用函數(shù) uip_restart()告知遠(yuǎn)程終端再次發(fā)送數(shù)據(jù)。函數(shù) uip_stopped()可以用于檢查當(dāng)前連接是否停止。 uIP函數(shù)總結(jié) 表 42 包含了所有 uIP 提供的函數(shù) 表 42 uIP 函數(shù)總結(jié) 系統(tǒng)接口 uip_init() uip_input() uip_periodic() 初始化 uIP 處理輸入包 處理周期計(jì)時(shí)事件 應(yīng)用程序接口 uip_listen() uip_connect() uip_send() uip_datalen() uip_close() uip_abort() uip_stop() uip_stopped() uip_restart() 開(kāi)始監(jiān)聽(tīng)端口 連接到遠(yuǎn)程主機(jī) 在當(dāng)前連接發(fā)送數(shù)據(jù) 輸入數(shù)據(jù)的大小 關(guān)閉當(dāng)前連接 中止當(dāng)前連接 停止當(dāng)前連接 查找連接是否停止 重新啟動(dòng)當(dāng)前連接 測(cè)試函數(shù) 濟(jì)源職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計(jì)(論文) uip_newdata() uip_acked() uip_connected() uip_closed() uip_aborted() uip_timeout() uip_rexmit uip_poll() 遠(yuǎn)程主機(jī)已經(jīng)發(fā)出數(shù)據(jù) 確定發(fā)出的數(shù)據(jù) 當(dāng)前連接剛連上 當(dāng)前連接剛關(guān)閉 當(dāng)前連接剛中止 當(dāng)前連接剛超時(shí) 數(shù)據(jù)重發(fā) 應(yīng)用程序循環(huán)運(yùn)行 其它 uip_mss() uip_ipaddr() htons(),ntohs() 獲得當(dāng)前連接的最大段的大小 將 IP 地址結(jié)構(gòu)打包 在主機(jī)和網(wǎng)絡(luò)之間轉(zhuǎn)換字節(jié)次序 基于 ENC28J60 的以太網(wǎng)通信設(shè)計(jì)與實(shí)現(xiàn) 45 第 5 章 軟件設(shè)計(jì) 軟件 Keil 介紹 編程使用的軟件是 Keil,編程使用 C 語(yǔ)言。 Keil C51 是 美國(guó) Keil Software 公司出品的 51 系列兼容單片機(jī)C 語(yǔ)言軟件開(kāi)發(fā)系統(tǒng),與匯編相比, C 語(yǔ)言在功能上、結(jié)構(gòu)性、可讀性、可維護(hù)性上有明顯 的優(yōu)勢(shì),因而易學(xué)易用。 Keil 提供了包括 C編譯器、宏匯編、連接器、庫(kù)管理和一個(gè)功能強(qiáng)大的仿真調(diào)試器等在內(nèi)的完整開(kāi)發(fā)方案,通過(guò)一個(gè)集成開(kāi)發(fā)環(huán)境( uVision)將這些部分組合在一起。運(yùn)行 Keil 軟件需要 WIN9 NT、 WIN202 WINXP 等操作系統(tǒng)。如果你使用 C 語(yǔ)言編程,那么 Keil 幾乎就是你的不二之選,即使不使用 C 語(yǔ)言而僅用匯編語(yǔ)言編程,其方便易用的集成環(huán)境、強(qiáng)大的軟件仿真調(diào)試工具也會(huì)令你事半功倍。 ( 1) 系統(tǒng)概述 Keil C51 軟件提供豐富的庫(kù)函數(shù)和功能強(qiáng)大的集成開(kāi)發(fā)調(diào)試工具,全 Windows 界 面。另外重要的一點(diǎn),只要看一下編譯后生成的匯編代碼,就能體會(huì)到 Keil C51 生成的目標(biāo)代碼效率非常之高,多數(shù)語(yǔ)句生成的匯編代碼很緊湊,容易理解。在開(kāi)發(fā)大型軟件時(shí)更能體現(xiàn)高級(jí)語(yǔ)言的優(yōu)勢(shì)。下面詳細(xì)介紹 Keil C51 開(kāi)發(fā)系統(tǒng)各部分功能和使用。 濟(jì)源職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計(jì)(論文) ( 2) Keil C51 單片機(jī)軟件開(kāi)發(fā)系統(tǒng)的整體結(jié)構(gòu) C51 工具包的整體結(jié)構(gòu), uVision 與 Ishell 分別是 C51 for Windows 和 for Dos 的集成開(kāi)發(fā)環(huán)境 (IDE),可以完成編輯、編譯、連接、調(diào)試、仿真等整個(gè)開(kāi)發(fā)流程。開(kāi)發(fā)人員可用 IDE 本身或其它編輯器編 輯 C 或匯編源文件。然后分別由 C51 及 C51 編譯器編譯生成目標(biāo)文件 (. OBJ)。目標(biāo)文件可由 LIB51 創(chuàng)建生成庫(kù)文件,也可以與庫(kù)文件一起經(jīng) L51 連接定位生成絕對(duì)目標(biāo)文件 (. ABS)。 ABS 文件由 OH51轉(zhuǎn)換成標(biāo)準(zhǔn)的 Hex 文件,以供調(diào)試器 dScope51 或 tScope51 使用進(jìn)行源代碼級(jí)調(diào)試,也可由仿真器使用直接對(duì)目標(biāo)板進(jìn)行調(diào)試,也可以直接寫(xiě)入程序存貯器如 EPROM 中。 在硬件設(shè)計(jì)完成的基礎(chǔ)上,我們需要通過(guò)軟件來(lái)實(shí)現(xiàn)整個(gè)監(jiān)視、控制過(guò)程。 程序總流程圖如圖 51 所示。 基于 ENC28J60 的以太網(wǎng)通信設(shè)計(jì)與實(shí)現(xiàn) 47 開(kāi) 始初 始 化 串 口初 始 化 U I P初 始 化 I P , M A C 地址創(chuàng) 建 T C P 監(jiān) 聽(tīng) 端口 , 開(kāi) 始 監(jiān) 聽(tīng)解 析 I P 數(shù) 據(jù) 包初 始 化 定 時(shí) 器初 始 化
點(diǎn)擊復(fù)制文檔內(nèi)容
教學(xué)課件相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1