Practical FPGA Programming in C \r\nBy David Pellerin, Scott Thibault \r\nPublisher: Prentice Hall PTR \r\nPub Date: April 22, 2005 \r\nISBN: 0-13-154318-0 \r\nPages: 464 \r\n
標簽: Programming Practical FPGA in
上傳時間: 2013-08-31
上傳用戶:firstbyte
本書針對Atmel公司的AVR系列單片機和ImageCraft公司的ICC AVR開發(fā)環(huán)境,詳細地介紹了AT90LS8535的C語言程序設計。全書共有13章,其內(nèi)容既涉及到了單片機的結(jié)構(gòu)原理、指令系統(tǒng)、內(nèi)容資源和外部功能擴展,又包含了單片機的編程工具——ICC AVR C編程器的數(shù)據(jù)類型、控制流、函數(shù)和指針等。本書的特點是:深入淺出,從最基本的概念開始,循序漸進地講解單片機的應用開發(fā);列舉了大量實例,使讀者能從實際應用中掌握單片機的開發(fā)與應用技術(shù)。本書適合作為從事單片機開發(fā)人員的參考用書。書中先后講解了C語言基礎、AVR單片機基礎,并舉了一些簡單的實例。本書非常適合初學者。 【目錄信息】 第1章 單片機系統(tǒng)概述 1. 1 AVR系列單片機的特點 1. 2 AT90系列單片機簡介 第2章 AT90LS8535單片機的基礎知識 2. 1 AT90LS8535單片機的總體結(jié)構(gòu) 2. 1. 1 AT90LS8535單片機的中央處理器 2. 1. 2 AT90LS8535單片機的存儲器組織 2. 1. 3 AT90LS8535單片機的I/O接口 2. 1. 4 AT90LS8535單片機的內(nèi)部資源 2. 1. 5 AT90LS8535單片機的時鐘電路 2. 1. 6 AT90LS8535單片機的系統(tǒng)復位 2. 1. 7 AT90LS8535單片機的節(jié)電方式 2. 1. 8 AT90LS8535單片機的芯片引腳 2. 2 AT90LS8535單片機的指令系統(tǒng) 2. 2. 1 匯編指令格式 2. 2. 2 尋址方式 2. 2. 3 偽指令 2. 2. 4 指令類型及數(shù)據(jù)操作方式 2. 3 應用程序設計 2. 3. 1 程序設計方法 2. 3. 2 應用程序舉例 第3章 AT90LS8535單片機的C編程 3. 1 支持高級語言編程的AVR系列單片機 3. 2 AVR的C編譯器 3. 3 ICCAVR介紹 3. 3. 1 安裝ICCAVR 3. 3. 2 設置ICCAVR 3. 4 用ICCAVR編寫應用程序 3. 5 下載程序文件 第4章 數(shù)據(jù)類型. 運算符和表達式 4. 1 ICCAVR支持的數(shù)據(jù)類型 4. 2 常量與變量 4. 2. 1 常量 4. 2. 2 變量 4. 3 AT90LS8535的存儲空間 4. 4 算術(shù)和賦值運算 4. 4. 1 算術(shù)運算符和算術(shù)表達式 4. 4. 2 賦值運算符和賦值表達式 4. 5 邏輯運算 4. 6 關(guān)系運算 4. 7 位操作 4. 7. 1 位邏輯運算 4. 7. 2 移位運算 4. 8 逗號運算 第5章 控制流 5. 1 C語言的結(jié)構(gòu)化程序設計 5. 1. 1 順序結(jié)構(gòu) 5. 1. 2 選擇結(jié)構(gòu) 5. 1. 3 循環(huán)結(jié)構(gòu) 5. 2 選擇語句 5. 2. 1 if語句 5. 2. 2 switch分支 5. 2. 3 選擇語句的嵌套 5. 3 循環(huán)語句 5. 3. 1 while語句 5. 3. 2 do…while語句 5. 3. 3 for語句 5. 3. 4 循環(huán)語句嵌套 5. 3. 5 break語句和continue語句 第6章 函數(shù) 6. 1 函數(shù)的定義 6. 1. 1 函數(shù)的定義的一般形式 6. 1. 2 函數(shù)的參數(shù) 6. 1. 3 函數(shù)的值 6. 2 函數(shù)的調(diào)用 6. 2. 1 函數(shù)的一般調(diào)用 6. 2. 2 函數(shù)的遞歸調(diào)用 6. 2. 3 函數(shù)的嵌套調(diào)用 6. 3 變量的類型及其存儲方式 6. 3. 1 局部變量 6. 3. 2 局部變量的存儲方式 6. 3. 3 全局變量 6. 3. 4 全局變量的存儲方式 6. 4 內(nèi)部函數(shù)和外部函數(shù) 6. 4. 1 內(nèi)部函數(shù) 6. 4. 2 外部函數(shù) 第7章 指針 7. 1 指針和指針變量 7. 2 指針變量的定義和引用 7. 2. 1 指針變量的定義 7. 2. 2 指針變量的引用 7. 2. 3 指針變量作為函數(shù)參數(shù) 7. 3 數(shù)組與指針 7. 3. 1 指向數(shù)組元素的指針變量 7. 3. 2 數(shù)組元素的引用 通過指針 7. 3. 3 數(shù)組名作為函數(shù)參數(shù) 7. 3. 4 指向多維數(shù)組的元素的指針變量 7. 4 字符串與指針 7. 4. 1 字符串的表示形式 7. 4. 2 字符串指針變量與字符數(shù)組的區(qū)別 7. 5 函數(shù)與指針 7. 5. 1 函數(shù)指針變量 7. 5. 2 指針型函數(shù) 7. 6 指向指針的指針 7. 7 有關(guān)指針數(shù)據(jù)類型和運算小結(jié) 7. 7. 1 有關(guān)指針的數(shù)據(jù)類型的小結(jié) 7. 7. 2 指針運算的小結(jié) 第8章 結(jié)構(gòu)體和共用體 8. 1 結(jié)構(gòu)體的定義和引用 8. 1. 1 結(jié)構(gòu)體類型變量的定義 8. 1. 2 結(jié)構(gòu)體類型變量的引用 8. 2 結(jié)構(gòu)類型的說明 8. 3 結(jié)構(gòu)體變量的初始化和賦值 8. 3. 1 結(jié)構(gòu)體變量的初始化 8. 3. 2 結(jié)構(gòu)體變量的賦值 8. 4 結(jié)構(gòu)體數(shù)組 8. 4. 1 結(jié)構(gòu)體數(shù)組的定義 8. 4. 2 結(jié)構(gòu)體數(shù)組的初始化 8. 5 指向結(jié)構(gòu)體類型變量的指針 8. 5. 1 指向結(jié)構(gòu)體變量的指針 8. 5. 2 指向結(jié)構(gòu)體數(shù)組的指針 8. 5. 3 指向結(jié)構(gòu)體變量的指針做函數(shù)參數(shù) 8. 6 共用體 8. 6. 1 共用體的定義 8. 6. 2 共用體變量的引用 第9章 A190LS8535的內(nèi)部資源 9. 1 I/O 口 9. 1. 1 端口A 9. 1. 2 端口B 9. 1. 3 端口C 9. 1. 4 端口D 9. 1. 5 I/O口的編程 9. 2 中斷 9. 2. 1 單片機的中斷功能 9. 2. 2 AT90LS8535單片機的中斷系統(tǒng) 9. 2. 3 1CCAVRC編譯器的中斷操作 9. 2. 4 中斷的編程 9. 3 串行數(shù)據(jù)通信 9. 3. 1 數(shù)據(jù)通信基礎 9. 3. 2 AT90LS8535的同步串行接口 9. 3. 3 AT90LS8535的異步串行接口 9. 4 定時/計數(shù)器 9. 4. 1 定時/計數(shù)器的分頻器 9. 4. 2 8位定時/計數(shù)器0 9. 4. 3 16位定時/計數(shù)器1 9. 4. 4 8位定時/計數(shù)器2 9. 5 EEPROM 9. 5. 1 與EEPROM有關(guān)的寄存器 9. 5. 2 EEPROM讀/寫操作 9. 5. 3 EEPROM的應用舉例 9. 6 模擬量輸入接口 9. 6. 1 模數(shù)轉(zhuǎn)換器的結(jié)構(gòu) 9. 6. 2 ADC的使用 9. 6. 3 與模數(shù)轉(zhuǎn)換器有關(guān)的寄存器 9. 6. 4 ADC的噪聲消除 9. 6. 5 ADC的應用舉例 9. 7 模擬比較器 9. 7. 1 模擬比較器的結(jié)構(gòu) 9. 7. 2 與模擬比較器有關(guān)的寄存器 9. 7. 3 模擬比較器的應用舉例 第10章 AT90LS8535的人機接口編程 10. 1 鍵盤接口 10. 1. 1 非矩陣式鍵盤 10. 1. 2 矩陣式鍵盤 10. 2 LED顯示輸出 10. 2. 1 LED的靜態(tài)顯示 10. 2. 2 LED的動態(tài)掃描顯示 10. 2. 3 動態(tài)掃描顯示專用芯片MC14489 10. 3 LCD顯示輸出 10. 3. 1 字符型LCD 10. 3. 2 點陣型LCD 10. 4 ISD2500系列語音芯片的編程 10. 4. 1 ISD2500的片內(nèi)結(jié)構(gòu)和引腳 10. 4. 2 ISD2500的操作 10. 4. 3 ISD2500和單片機的接口及編程 10. 5 TP-uP微型打印機 10. 5. 1 TP-uP打印機的接口和邏輯時序 10. 5. 2 P-uP打印機的打印命令和字符代碼 10. 5. 3 AT90LS8535與TP-uP系列打印機的接口及編程 10. 6 IC卡 10. 6. 1 IC卡讀寫裝置 10. 6. 2 IC卡軟件 第11章 AT90LS8535的外圍擴展 11. 1 簡單I/O擴展芯片 11. 1. 1 用74LS377擴展數(shù)據(jù)輸出接口 11. 1. 2 數(shù)據(jù)輸入接口 11. 2 模擬量輸出 11. 2. 1 D/A轉(zhuǎn)換器簡介 11. 2. 2 8位數(shù)模轉(zhuǎn)換器DAC0832 11. 2. 3 8位數(shù)模轉(zhuǎn)換器與單片機的接口及編程 11. 2. 4 12位數(shù)模轉(zhuǎn)換器DACl230 11. 2. 5 12位數(shù)模轉(zhuǎn)換器與單片機的接口及編程 11. 3 可編程I/O擴展芯片8255A 11. 3. 1 8255A的引腳和內(nèi)部結(jié)構(gòu) 11. 3. 2 8255A的工作方式 11. 3. 3 8255A的控制字 11. 3. 4 AT90LS8535和8255A的接口 11. 4 帶片內(nèi)RAM的I/O擴展芯片8155 11. 4. 1 8155的引腳和內(nèi)部結(jié)構(gòu). 11. 4. 2 8155的I/O口工作方式 11. 4. 3 8155的定時/計數(shù)器 11. 4. 4 8155的命令和狀態(tài)字 11. 4. 5 AT90LS8535與8155的接口及編程 11. 5 定時/計數(shù)器芯片8253 11. 5. 1 8253的信號引腳和邏輯結(jié)構(gòu) 11. 5. 2 8253的工作方式 11. 5. 3 8253的控制字 11. 5. 4 AT90LS8535與8253的接口及編程 11. 6 實時時鐘芯片DS1302 11. 6. 1 DS1302的引腳和內(nèi)部結(jié)構(gòu) 11. 6. 2 DS1302的控制方式 11. 6. 3 AT90LS8535與DS1302的接口與編程 11. 7 數(shù)字溫度傳感器DS18B20 11. 7. 1 DSl8B20的引腳和內(nèi)部結(jié)構(gòu) 11. 7. 2 DS18B20的溫度測量 11. 7. 3 AT90LS8535與DS18B20的接口與編程 第12章 AT90LS8535的通信編程 12. 1 串口通信 12. 1. 1 異步串口UART通信 12. 1. 2 同步串口SPI通信 12. 2 I2C總線 12. 2. 1 I2C總線協(xié)議 12. 2. 2 采用AT90LS8535的并行I/O口模擬I2C總線 12. 3 CAN總線 12. 3. 1 CAN總線的特點 12. 3. 2 CAN協(xié)議的信息格式 12. 3. 3 CAN控制器SJA1000 12. 3. 4 AT90LS8535與SJA1000的接口及編程 12. 4 AT90LS8535單片機與PC的串行通信 12. 4. 1 基于VC 6. 0的PC串口通信 12. 4. 2 應用實例 第13章 系統(tǒng)設計中的程序處理方法 13. 1 數(shù)字濾波處理 13. 1. 1 平滑濾波 13. 1. 2 中值濾波 13. 1. 3 程序判斷濾波 13. 2 非線性處理 13. 2. 1 查表法 13. 2. 2 線性插值法
上傳時間: 2013-11-04
上傳用戶:元宵漢堡包
《C#入門經(jīng)典(第4版)》通過C#可以很容易地學習.NET Framework 3.5的強大功能,所以C#是開始您編程生涯的絕佳方式。《C#入門經(jīng)典(第4版)》全面闡述了C#編程的所有方面,包括C#語言本身、Windows編程、Web編程及數(shù)據(jù)源的使用等內(nèi)容。學習了新的編程技巧后,《C#入門經(jīng)典(第4版)》介紹了如何高效地部署應用程序和服務,論述了許多高級技術(shù),如圖形化編程。另外,還探討了如何使用Visual C# Express 2008、Visual Web Developer Express 2008和Visual Studio 2008的功能。所有這些內(nèi)容都已更新,以反映.NET Framework 3.5和Visual Studio 2008的變化。各章的樣例代碼和示例還可以用于創(chuàng)建強大且安全的應用程序。 c#入門經(jīng)典第4版目錄 第Ⅰ部分 C# 語 言 第1章 C#簡介 3 1.1 什么是.NET Framework 3 1.1.1 NET Framework的內(nèi)容 4 1.1.2 用.NET Framework編寫應用程序 4 1.2 什么是C# 7 1.2.1 用C#能編寫什么樣的應用程序 7 1.2.2 本書中的C# 8 1.3 Visual Studio 2008 8 1.3.1 Visual Studio 2008 Express 產(chǎn)品 9 1.3.2 解決方案 9 1.4 小結(jié) 9 第2章 編寫C#程序 10 2.1 開發(fā)環(huán)境 10 2.1.1 Visual Studio 2008 11 2.1.2 Visual C# 2008 ExpressEdition 13 2.2 控制臺應用程序 13 2.2.1 Solution Explorer 16 2.2.2 Properties窗口 17 2.2.3 Error List窗口 17 2.3 Windows Forms應用程序 18 2.4 小結(jié) 22 第3章 變量和表達式 23 3.1 C#的基本語法 23 3.2 C#控制臺應用程序的基本結(jié)構(gòu) 25 3.3 變量 27 3.3.1 簡單類型 27 3.3.2 變量的命名 31 3.3.3 字面值 32 3.3.4 變量的聲明和賦值 33 3.4 表達式 34 3.4.1 數(shù)學運算符 34 3.4.2 賦值運算符 38 3.4.3 運算符的優(yōu)先級 39 3.4.4 名稱空間 39 3.5 小結(jié) 42 3.6 練習 43 第4章 流程控制 44 4.1 布爾邏輯 44 4.1.1 位運算符 46 4.1.2 布爾賦值運算符 50 4.1.3 運算符的優(yōu)先級更新 51 4.2 goto語句 52 4.3 分支 53 4.3.1 三元運算符 53 4.3.2 if語句 54 4.3.3 switch語句 57 4.4 循環(huán) 60 4.4.1 do循環(huán) 61 4.4.2 while循環(huán) 63 4.4.3 for循環(huán) 65 4.4.4 循環(huán)的中斷 69 4.4.5 無限循環(huán) 70 4.5 小結(jié) 70 4.6 練習 71 第5章 變量的更多內(nèi)容 72 5.1 類型轉(zhuǎn)換 72 5.1.1 隱式轉(zhuǎn)換 72 5.1.2 顯式轉(zhuǎn)換 74 5.1.3 使用Convert命令進行 顯式轉(zhuǎn)換 76 5.2 復雜的變量類型 79 5.2.1 枚舉 79 5.2.2 結(jié)構(gòu) 83 5.2.3 數(shù)組 86 5.3 字符串的處理 91 5.4 小結(jié) 95 5.5 練習 96 第6章 函數(shù) 97 6.1 定義和使用函數(shù) 98 6.1.1 返回值 99 6.1.2 參數(shù) 101 6.2 變量的作用域 107 6.2.1 其他結(jié)構(gòu)中變量的作用域 110 6.2.2 參數(shù)和返回值與全局數(shù)據(jù) 111 6.3 Main()函數(shù) 113 6.4 結(jié)構(gòu)函數(shù) 114 6.5 函數(shù)的重載 115 6.6 委托 117 6.7 小結(jié) 119 6.8 練習 120 第7章 調(diào)試和錯誤處理 121 7.1 VS和VCE中的調(diào)試 121 7.1.1 非中斷(正常)模式下的調(diào)試 122 7.1.2 中斷模式下的調(diào)試 131 7.2 錯誤處理 139 7.2.1 try...catch...finally 140 7.2.2 列出和配置異常 144 7.2.3 異常處理的注意事項 145 7.3 小結(jié) 146 7.4 練習 146 第8章 面向?qū)ο缶幊毯喗?147 8.1 什么是面向?qū)ο缶幊?147 8.1.1 什么是對象 148 8.1.2 所有的東西都是對象 151 8.1.3 對象的生命周期 151 8.1.4 靜態(tài)和實例類成員 152 8.2 OOP技術(shù) 153 8.2.1 接口 153 8.2.2 繼承 155 8.2.3 多態(tài)性 156 8.2.4 對象之間的關(guān)系 157 8.2.5 運算符重載 159 8.2.6 事件 159 8.2.7 引用類型和值類型 160 8.3 Windows應用程序中的OOP 160 8.4 小結(jié) 162 8.5 練習 163 第9章 定義類 164 9.1 C#中的類定義 164 9.2 System.Object 169 9.3 構(gòu)造函數(shù)和析構(gòu)函數(shù) 170 9.4 VS和VCE中的OOP工具 174 9.4.1 Class View窗口 174 9.4.2 對象瀏覽器 176 9.4.3 添加類 177 9.4.4 類圖 177 9.5 類庫項目 179 9.6 接口和抽象類 182 9.7 結(jié)構(gòu)類型 184 9.8 小結(jié) 186 9.9 練習 186 第10章 定義類成員 187 10.1 成員定義 187 10.1.1 定義字段 187 10.1.2 定義方法 188 10.1.3 定義屬性 189 10.1.4 在類圖中添加成員 194 10.1.5 重制成員 196 10.1.6 自動屬性 197 10.2 類成員的其他議題 197 10.2.1 隱藏基類方法 198 10.2.2 調(diào)用重寫或隱藏的基類方法 199 10.2.3 嵌套的類型定義 200 10.3 接口的實現(xiàn) 201 10.4 部分類定義 204 10.5 部分方法定義 206 10.6 示例應用程序 207 10.6.1 規(guī)劃應用程序 207 10.6.2 編寫類庫 208 10.6.3 類庫的客戶應用程序 214 10.7 小結(jié) 215 10.8 練習 216 第11章 集合、比較和轉(zhuǎn)換 217 11.1 集合 217 11.1.1 使用集合 218 11.1.2 定義集合 224 11.1.3 索引符 225 11.1.4 給CardLib添加Cards集合 227 11.1.5 關(guān)鍵字值集合和IDictionary 229 11.1.6 迭代器 231 11.1.7 深度復制 236 11.1.8 給CardLib添加深度復制 238 11.2 比較 239 11.2.1 類型比較 240 11.2.2 值比較 244 11.3 轉(zhuǎn)換 259 11.3.1 重載轉(zhuǎn)換運算符 259 11.3.2 as運算符 260 11.4 小結(jié) 261 11.5 練習 262 第12章 泛型 263 12.1 泛型的概念 263 12.2 使用泛型 264 12.2.1 可空類型 264 12.2.2 System.Collections.Generic 名稱空間 271 12.3 定義泛型 279 12.3.1 定義泛型類 280 12.3.2 定義泛型接口 291 12.3.3 定義泛型方法 291 12.3.4 定義泛型委托 293 12.4 小結(jié) 293 12.5 練習 293 第13章 其他OOP技術(shù) 295 13.1 ::運算符和全局名稱空間 13.2 定制異常 296 13.2.1 異常基類 297 13.2.2 給CardLib添加定制異常 297 13.3 事件 298 13.3.1 什么是事件 298 13.3.2 使用事件 300 13.3.3 定義事件 302 13.4 擴展和使用CardLib 309 13.5 小結(jié) 317 13.6 練習 317 第14章 C# 3.0語言的改進 318 14.1 初始化器 318 14.1.1 對象初始化器 319 14.1.2 集合初始化器 320 14.2 類型推斷 323 14.3 匿名類型 325 14.4 擴展方法 328 14.5 ?表達式 333 14.5.1 復習匿名方法 333 14.5.2 把?表達式用于匿名方法 334 14.5.3 ?表達式的參數(shù) 337 14.5.4 ?表達式的語句體 337 14.5.5 ?表達式用作委托和表達式樹 338 14.5.6 ?表達式和集合 339 14.6 小結(jié) 342 14.7 練習 342 第Ⅱ部分 Windows 編 程 第15章 Windows編程基礎 347 15.1 控件 347 15.1.1 屬性 348 15.1.2 控件的定位、停靠和對齊 349 15.1.3 事件 350 15.2 Button控件 352 15.2.1 Button控件的屬性 352 15.2.2 Button控件的事件 353 15.3 Label和LinkLabel控件 354 15.4 TextBox控件 355 15.4.1 TextBox控件的屬性 355 15.4.2 TextBox控件的事件 356 15.5 RadioButton和CheckBox控件 363 15.5.1 RadioButton控件的屬性 364 15.5.2 RadioButton控件的事件 364 15.5.3 CheckBox控件的屬性 364 15.5.4 CheckBox控件的事件 364 15.5.5 GroupBox控件 365 15.6 RichTextBox控件 368 15.6.1 RichTextBox控件的屬性 368 15.6.2 RichTextBox控件的事件 369 15.7 ListBox和CheckedListBox控件 374 15.7.1 ListBox控件的屬性 375 15.7.2 ListBox控件的方法 376 15.7.3 ListBox控件的事件 376 15.8 ListView控件 378 15.8.1 ListView控件的屬性 378 15.8.2 ListView控件的方法 380 15.8.3 ListView控件的事件 381 15.8.4 ListViewItem 381 15.8.5 ColumnHeader 381 15.8.6 ImageList控件 381 15.9 TabControl控件 388 15.9.1 TabControl控件的屬性 389 15.9.2 使用TabControl控件 389 15.10 小結(jié) 392 15.11 練習 392 第16章 Windows Forms的高級功能 393 16.1 菜單和工具欄 393 16.1.1 兩個實質(zhì)一樣的控件 393 16.1.2 使用MenuStrip控件 394 16.1.3 手工創(chuàng)建菜單 394 16.1.4 ToolStripMenuItem控件的其他屬性 397 16.1.5 給菜單添加功能 397 16.2 工具欄 399 16.2.1 ToolStrip控件的屬性 399 16.2.2 ToolStrip的項 400 16.2.3 StatusStrip控件 405 16.2.4 StatusStripStatusLabel的屬性 405 16.3 SDI和MDI應用程序 407 16.4 創(chuàng)建控件 415 16.4.1 LabelTextbox控件 417 16.4.2 調(diào)試用戶控件 420 16.4.3 擴展LabelTextbox控件 421 16.5 小結(jié) 424 16.6 練習 424 第17章 使用通用對話框 425 17.1 通用對話框 425 17.2 如何使用對話框 426 17.3 文件對話框 427 17.3.1 OpenFileDialog 427 17.3.2 SaveFileDialog 438 17.4 打印 442 17.4.1 打印結(jié)構(gòu) 442 17.4.2 打印多個頁面 447 17.4.3 PageSetupDialog 449 17.4.4 PrintDialog 451 17.5 打印預覽 455 17.5.1 PrintPreviewDialog 455 17.5.2 PrintPreviewControl 456 17.6 FontDialog和ColorDialog 457 17.6.1 FontDialog 457 17.6.2 ColorDialog 459 17.6.3 FolderBrowserDialog 460 17.7 小結(jié) 461 17.8 練習 461 第18章 部署Windows應用程序 463 18.1 部署概述 463 18.2 ClickOnce部署 464 18.3 Visual Studio安裝和部署項目類型 473 18.4 Microsoft Windows安裝程序結(jié)構(gòu) 474 18.4.1 Windows Installer術(shù)語 474 18.4.2 Windows Installer的優(yōu)點 476 18.5 為SimpleEditor創(chuàng)建安裝軟件包 476 18.5.1 規(guī)劃安裝內(nèi)容 476 18.5.2 創(chuàng)建項目 477 18.5.3 項目屬性 478 18.5.4 安裝編輯器 480 18.5.5 File System編輯器 481 18.5.6 File Types編輯器 483 18.5.7 Launch Condition編輯器 485 18.5.8 User Interface編輯器 485 18.6 構(gòu)建項目 488 18.7 安裝 489 18.7.1 Welcome 489 18.7.2 Read Me 489 18.7.3 License Agreement 490 18.7.4 Optional Files 490 18.7.5 選擇安裝文件夾 491 18.7.6 確認安裝 492 18.7.7 進度 492 18.7.8 結(jié)束安裝 493 18.7.9 運行應用程序 493 18.7.10 卸載 493 18.8 小結(jié) 493 18.9 練習 494 第Ⅲ部分 Web 編 程 第19章 Web編程基礎 497 19.1 概述 497 19.2 ASP .NET運行庫 498 19.3 創(chuàng)建簡單的Web頁面 498 19.4 服務器控件 504 19.5 事件處理程序 505 19.6 輸入的有效性驗證 509 19.7 狀態(tài)管理 512 19.7.1 客戶端的狀態(tài)管理 513 19.7.2 服務器端的狀態(tài)管理 515 19.8 身份驗證和授權(quán) 517 19.8.1 身份驗證的配置 518 19.8.2 使用安全控件 522 19.9 讀寫SQL Server數(shù)據(jù)庫 524 19.10 小結(jié) 530 19.11 練習 531 第20章 Web高級編程 532 20.1 母版頁 532 20.2 站點導航 537 20.3 用戶控件 539 20.4 個性化配置 541 20.4.1 個性化配置組 543 20.4.2 組件的個性化配置 543 20.4.3 定制數(shù)據(jù)類型中的個性化配置 543 20.4.4匿名用戶的個性化配置 544 20.5 Web Parts 545 20.5.1 WebPartManager控件 546 20.5.2 WebPartZone控件 546 20.5.3 EditorZone控件 548 20.5.4 CatalogZone控件 550 20.5.5 ConnectionsZone控件 551 20.6 JavaScript 554 20.6.1 Script元素 555 20.6.2 變量的聲明 555 20.6.3 定義函數(shù) 555 20.6.4 語句 556 20.6.5 對象 556 20.7 小結(jié) 560 20.8 練習 560 第21章 Web服務 561 21.1 Web服務推出之前 561 21.1.1 遠程過程調(diào)用(RPC) 562 21.1.2 SOAP 563 21.2 使用Web服務的場合 563 21.2.1 賓館旅行社代理應用程序 564 21.2.2 圖書發(fā)布應用程序 564 21.2.3 客戶應用程序的類型 564 21.2.4 應用程序的體系結(jié)構(gòu) 564 21.3 Web服務的體系結(jié)構(gòu) 565 21.3.1 可以調(diào)用的方法 565 21.3.2 調(diào)用方法 566 21.3.3 SOAP和防火墻 567 21.3.4 WS-I基本個性化配置 568 21.4 Web服務和.NET Framework 568 21.4.1 創(chuàng)建Web服務 568 21.4.2 客戶程序 570 21.5 創(chuàng)建簡單的ASP .NET Web服務 571 21.6 測試Web服務 572 21.7 執(zhí)行Windows客戶程序 574 21.8 異步調(diào)用服務 577 21.9 執(zhí)行ASP .NET客戶程序 580 21.10 傳送數(shù)據(jù) 581 21.11 小結(jié) 584 21.12 練習 584 第22章 Ajax編程 586 22.1 Ajax概述 586 22.2 UpdatePanel控件 587 22.3 Timer控件 591 22.4 UpdateProgress控件 592 22.5 Web服務 594 22.6 擴展控件 598 22.7 小結(jié) 600 22.8 練習 600 第23章 部署Web應用程序 601 23.1 Internet Information Services 601 23.2 IIS配置 602 23.3 復制Web站點 604 23.4 發(fā)布Web站點 606 23.5 Windows安裝程序 607 23.5.1 創(chuàng)建安裝程序 607 23.5.2 安裝Web 應用程序 609 23.6 小結(jié) 610 23.7 練習 610 第Ⅳ部分 數(shù) 據(jù) 訪 問 第24章 文件系統(tǒng)數(shù)據(jù) 613 24.1 流 613 24.2 用于輸入和輸出的類 614 24.2.1 File類和Directory類 615 24.2.2 FileInfo類 616 24.2.3 DirectoryInfo類 617 24.2.4 路徑名和相對路徑 618 24.2.5 FileStream對象 618 24.2.6 StreamWriter對象 624 24.2.7 StreamReader對象 626 24.2.8 讀寫壓縮文件 632 24.3 序列化對象 635 24.4 監(jiān)控文件結(jié)構(gòu) 639 24.5 小結(jié) 645 24.6 練習 646 第25章 XML 647 25.1 XML文檔 647 25.1.1 XML元素 647 25.1.2 屬性 648 25.1.3 XML聲明 649 25.1.4 XML文檔的結(jié)構(gòu) 649 25.1.5 XML名稱空間 650 25.1.6 格式良好并有效的XML 651 25.1.7 驗證XML文檔 651 25.2 在應用程序中使用XML 654 25.2.1 XML文檔對象模型 655 25.2.2 選擇節(jié)點 663 25.3 小結(jié) 670 25.4 練習 671 第26章 LINQ簡介 672 26.1 LINQ的變體 673 26.2 第一個LINQ查詢 673 26.2.1 用var關(guān)鍵字聲明結(jié)果變量 675 26.2.2 指定數(shù)據(jù)源:from子句 675 26.2.3 指定條件:where子句 675 26.2.4 指定元素:select子句 676 26.2.5 完成:使用foreach循環(huán) 676 26.2.6 延遲執(zhí)行的查詢 676 26.3使用LINQ方法語法和?表達式 676 26.3.1 LINQ擴展方法 676 26.3.2 查詢語法和方法語法 677 26.3.3 ?表達式 677 26.4 排序查詢結(jié)果 679 26.5 orderby子句 680 26.6 用方法語法排序 681 26.7 查詢大型數(shù)據(jù)集 682 26.8 合計運算符 685 26.9 查詢復雜的對象 688 26.10 投射:在查詢中創(chuàng)建新對象 691 26.11 投射:方法語法 693 26.12 單值選擇查詢 693 26.13 Any和All 694 26.14 多級排序 696 26.15 多級排序方法語法:ThenBy 698 26.16 組合查詢 698 26.17 Take和Skip 700 26.18 First和FirstOrDefault 702 26.19 集運算符 703 26.20 Join查詢 706 26.21 資源和進一步閱讀 707 26.22 小結(jié) 707 26.23 練習 707 第27章 LINQ to SQL 709 27.1 對象相關(guān)映射 709 27.2 安裝SQL Server和Northwind示例數(shù)據(jù) 710 27.2.1 安裝SQL Server Express2005 710 27.2.2 安裝Northwind示例數(shù)據(jù)庫 711 27.3 第一個LINQ to SQL查詢 712 27.4 瀏覽LINQ to SQL關(guān)系 717 27.5 進一步探討LINQ to SQL 720 27.6 LINQ to SQL中的組合、排序和其他高級查詢 723 27.7 顯示生成的SQL 725 27.8 用LINQ to SQL綁定數(shù)據(jù) 729 27.9 用LINQ to SQL更新綁定數(shù)據(jù) 733 27.10 小結(jié) 734 27.11 練習 735 第28章 ADO .NET和LINQ over DataSet 736 28.1 ADO .NET概述 736 28.1.1 ADO .NET名稱的來源 737 28.1.2 ADO .NET的設計目標 738 28.2 ADO .NET類和對象概述 739 28.2.1 提供者對象 739 28.2.2 用戶對象 740 28.2.3 使用System.Data名稱空間 741 28.3 用DataReader讀取數(shù)據(jù) 742 28.4 用DataSet讀取數(shù)據(jù) 749 28.4.1 用數(shù)據(jù)填充DataSet 749 28.4.2 訪問DataSet中的表、行和列 749 28.5 更新數(shù)據(jù)庫 752 28.5.1 給數(shù)據(jù)庫添加行 755 28.5.2 刪除行 761 28.6 在DataSet中訪問多個表 762 28.6.1 ADO .NET中的關(guān)系 762 28.6.2 用關(guān)系導航 763 28.7 XML和ADO .NET 770 28.8 ADO .NET中的SQL支持 773 28.8.1 DataAdapter對象中的 SQL命令 773 28.8.2 直接執(zhí)行SQL命令 776 28.8.3 調(diào)用SQL存儲過程 778 28.9 使用LINQ over DataSet和ADO .NET 780 28.10 小結(jié) 784 28.11 練習 784 第29章 LINQ to XML 785 29.1 LINQ to XML函數(shù)構(gòu)造方法 785 29.2 保存和加載XML文檔 789 29.2.1 從字符串中加載XML 791 29.2.2 已保存的XML文檔內(nèi)容 792 29.3 處理XML片段 792 29.4 通過LINQ to XML生成 XML 794 29.5 查詢XML文檔 798 29.6 小結(jié) 804 29.7 練習 804 第Ⅴ部分 其 他 技 術(shù) 第30章 屬性 809 30.1 什么是屬性 809 30.2 反射 812 30.3 內(nèi)置屬性 815 30.3.1 System.Diagnostics.ConditionalAttribute 815 30.3.2 System.Obsolete Attribute 817 30.3.3 System.Serializable Attribute 818 30.3.4 System.Reflection.AssemblyDelaySignAttribute 821 30.4 定制屬性 824 30.4.1 BugFixAttribute 824 30.4.2 System.AttributeUsageAttribute 826 30.5 小結(jié) 830 第31章 XML文檔說明 831 31.1 添加XML文檔說明 831 31.1.1 XML文檔說明的注釋 833 31.1.2 使用類圖添加XML文檔說明 839 31.1.3 生成XML文檔說明文件 842 31.1.4 帶有XML文檔說明的應用程序示例 844 31.2 使用XML文檔說明 846 31.2.1 編程處理XML文檔說明 846 31.2.2 用XSLT格式化XML文檔說明 848 31.2.3 文檔說明工具 849 31.3 小結(jié) 850 31.4 練習 851 第32章 網(wǎng)絡 852 32.1 聯(lián)網(wǎng)概述 852 32.1.1 名稱的解析 855 32.1.2 統(tǒng)一資源標識符 856 32.1.3 TCP和UDP 857 32.1.4 應用協(xié)議 857 32.2 網(wǎng)絡編程選項 859 32.3 WebClient 859 32.4 WebRequest和WebResponse 861 32.5 TcpListener和TcpClient 868 32.6 小結(jié) 876 32.7 練習 876 第33章 GDI+簡介 877 33.1 圖形繪制概述 877 33.1.1 Graphics類 878 33.1.2 對象的刪除 878 33.1.3 坐標系統(tǒng) 879 33.1.4 顏色 884 33.2 使用Pen類繪制線條 885 33.3 使用Brush類繪制圖形 887 33.4 使用Font 類繪制文本 890 33.5 使用圖像進行繪制 893 33.5.1 使用紋理畫筆繪圖 895 33.5.2 使用鋼筆繪制圖像 897 33.5.3 雙倍緩沖 898 33.6 GDI+的高級功能 900 33.6.1 剪切 900 33.6.2 System.Drawing.Drawing2D 901 33.6.3 System.Drawing.Imaging 901 33.7 小結(jié) 901 33.8 練習 902 第 34 章 Windows Presentation Foundation 903 34.1 WPF的概念 904 34.1.1 WPF給設計人員帶來的好處 904 34.1.2 WPF給C#開發(fā)人員帶來的好處 906 34.2 基本W(wǎng)PF應用程序的組成 906 34.3 WPF基礎 916 34.3.1 XAML語法 917 34.3.2 桌面和Web應用程序 919 34.3.3 Application對象 920 34.3.4 控件基 920 34.3.5 控件的布局 928 34.3.6 控件的樣式 936 34.3.7 觸發(fā)器 941 34.3.8 動畫 942 34.3.9 靜態(tài)和動態(tài)資源 944 34.4 用WPF編程 949 34.4.1 WPF用戶控件 950 34.4.2 實現(xiàn)依賴屬性 950 34.5 小結(jié) 959 34.6 練習 960 第35 章 Windows Communication Foundation 961 35.1 WCF是什么 961 35.2 WCF概念 962 35.2.1 WCF通信協(xié)議 962 35.2.2 地址、端點和綁定 963 35.2.3 合同 964 35.2.4 消息模式 965 35.2.5 行為 965 35.2.6 主機 965 35.3 WCF編程 966 35.3.1 定義WCF服務合同 973 35.3.2 自存儲的WCF服務 979 35.4 小結(jié) 985 35.5 練習 986 第36章 Windows Workflow Foundation 987 36.1 活動 990 36.1.1 DelayActivity 990 36.1.2 SuspendActivity 991 36.1.3 WhileActivity 992 36.1.4 SequenceActivity 994 36.1.5 定制活動 997 36.2 工作流運行庫 1002 36.3 數(shù)據(jù)綁 1007 36.4 小結(jié) 1010 序言
標簽:
上傳時間: 2013-11-16
上傳用戶:xinyuzhiqiwuwu
c語言編程軟件vc6.0使用教程,附件包含二個教程文件,VC++6.0培訓教程完整版及VC6.0介紹。 Visual C++ 6.0,簡稱VC或者VC6.0,是微軟的一款C++編譯器,將“高級語言”翻譯為“機器語言(低級語言)”的程序。Visual C++是一個功能強大的可視化軟件開發(fā)工具。自1993年Microsoft公司推出Visual C++1.0后,隨著其新版本的不斷問世,Visual C++已成為專業(yè)程序員進行軟件開發(fā)的首選工具。雖然微軟公司推出了 Visual C++.NET(Visual C++7.0),但它的應用有很大的局限性,只適用于Windows 2000、Windows XP和Windows NT4.0。所以實際中,更多的是以Visual C++6.0為平臺。 vc6.0使用你首先要打開VC6.0界面,一般用得較多的是Win32控制臺應用程序(源程序,擴展名.cpp), 步驟是:(先工程—后文件—編譯—連接---運行) 1,建立一個工程,“文件”——“新建”,出現(xiàn)下面界面:選擇“Win32 Console Application”(控制臺應用程序,左邊倒數(shù)第三個),命名工程名稱,選擇保存位置。 點擊“確定”,進入下一步,看到如下提示界面: 建立一個空工程,對應其他需要的你一可以建立別的工程;點擊“完成”,之后 顯示你創(chuàng)建的工程的信息。 2,再在有一個的工程的條件下,我們再建立一個源文件; “文件”——“新建”(快捷鍵Ctri+N),出現(xiàn): 建立源文件,選擇“C++ Source ”,一般都是建立這種文件的(適用在當文件中適用)如果要建立頭文件的話,選擇“C/C++ Header File”,(適用在多文件工程中使用)命名,文件名稱,點擊“確定”,之后: 進入編輯區(qū),在主界面編寫代碼:如下編寫完之后呢: 可以按編譯按鈕 調(diào)試程序,看看有沒有錯誤,有的話改正,沒有的話就可以再按連接按鈕 檢查連接(多文件工程時常用,檢查文件間是否正常連接),最后,點運行按鈕 ,就可以運行了。 如果是您有代碼如:cpp文件,或 .h 文件,想添加都VC6.0里來測試的話,可以這樣做: 首先,要理解一下 文件擴展名為:cpp和.h 文件擴張名是.h,代表的是頭文件,一般是書寫一些函數(shù)原型,以及一些在整個程序中常用到的結(jié)構(gòu)體,頻繁使用的函數(shù)說明,定義等等; 文件擴張名為,cpp的,是C++中的源文件,也是最常用到的文件,每建立一個工程都要至少一個源文件(至少要有一個函數(shù)入口——主函數(shù)main() ),包含了核心代碼; 建立與運行說明:(以VC 6.0編譯器為例,其他編譯器類似) 首先,打開VC 6.0編譯環(huán)境; 在菜單欄——文件(的下拉菜單中選擇“新建”),在彈出的選擇窗口中,選擇 Win32 Console Application(控制臺應用程序) ,在填寫工程名稱,選擇一個程序保存路徑, 點擊“完成”,查看工程信息。 在點擊“確定”,就建立一個簡單的工程了。 再點擊左邊的工程信息右下角的“FileView”選項; 可以看到你新建的工程,再雙擊你新建的工程名 可以查看工程的信息。 在雙擊工程文件,在這里是 777.files,可以看到該工程的包含的文件。 其中,Source Files 為包含所有工程的源文件 Header Files 為包含所有工程的頭文件 在源文件選項“Source Files ”,右鍵單擊中的“添加目錄到工程”,添加你要打開的擴展名為 .cpp的源文件。在頭文件選項“ Header Files”,右鍵單擊中的“添加目錄到工程”,添加你要打開的擴展名為 . h的頭文件。添加完你所有的頭文件和源文件之后,檢查一下是否添加完畢,之后就可以編譯了。 其中第一個按鈕 為編譯按鈕,可以找出工程的錯誤信息,有錯誤修改,沒錯誤就可以跳到連接 ,編譯右邊的按鈕 ,即第三個按鈕(多文件工程一定要連接,查看文件是否準確相連接) 當編譯,連接都沒有錯誤時,可以按運行按鈕 ,即可以運行了。 相關(guān)資料:vc6.0中文綠色版下載
上傳時間: 2013-10-30
上傳用戶:tianjinfan
通過結(jié)合51LPC微控制器和BTA2xx三端雙向可控硅Philips半導體使阻性和容性負載的控制更容易這個通用的一對所有控制解決方案覆蓋了低功耗高感性的負載如螺線管閥門和同步電機到以主電壓供電的高功耗阻性負載如電機和電熱器這個兩芯片解決方案性能的核心是檢測負載電流過零的專利技術(shù)使用該技術(shù)不需要在負載電路上連接旁路電阻這樣不但簡化了設計而且降低了整個系統(tǒng)的成本這個簡單的微控制器三端雙向可控硅的組合向設計者提供了一個有效可編程的解決方法而且電磁干擾最小最小門脈沖持續(xù)時間的自動應用可以實現(xiàn)任何負載下的鎖定由于使用較低的電源電流因此只需要一個阻性或R-C 的主分支電源附加的增值特性可以更容易地實現(xiàn)遙控軟啟動錯誤管理和使用三端雙向可控硅監(jiān)控的負載電流管理將傳感器連接到模擬或數(shù)字輸入也為整個系統(tǒng)提供了智能的閉環(huán)控制
上傳時間: 2013-11-17
上傳用戶:huang111
PIC 單片機的組成習題解答 解答部分1. PIC 單片機指令的執(zhí)行過程遵循著一種全新哈佛總線體系結(jié)構(gòu)的原則,充分利用了計算機系統(tǒng)在程序存儲器和數(shù)據(jù)存儲器之間地址空間的相互獨立性,取指過程和執(zhí)行指令過程可以流水線操作同時進行。因此,當PIC 時鐘頻率為4MHZ時,執(zhí)行一條非轉(zhuǎn)移類指令需要4 個系統(tǒng)時鐘周期,即1us,但其指令執(zhí)行的真實時間應為2us(在執(zhí)行n—1 條指令時取第n 條指令,然后執(zhí)行第n 條指令)。所以選項B 正確2. 端口RE 共有3 個引腳RE0~RE2,它們除了用做普通I/O 引腳和第5~7 路模擬信號輸入引腳外,還依次分別承擔并行口讀出/寫入/片選控制端引腳。A. 對。讀出/寫入(REO~RE1)。B.錯。同步串行的相關(guān)引腳與端口C 有關(guān)。C.錯。通用異步/同步串行的相關(guān)引腳與端口C有關(guān)。D. 錯。CCP模塊的相關(guān)引腳也是與端口C有關(guān)。所以選項A正確。3. 上電延時電路能提供一個固定的72ms 上電延時,從而使VDD有足夠的時間上繁榮昌盛到單片機合適的工作電壓。所以選項B 正確。
上傳時間: 2013-11-09
上傳用戶:glxcl
8051單片機系統(tǒng)擴展與接口技術(shù):第一節(jié) 8051 單片機系統(tǒng)擴展概述第二節(jié) 單片機外部存儲器擴展第三節(jié) 單片機輸入輸出(I/O)口擴展及應用第四節(jié) LED顯示器接口電路及顯示程序第五節(jié) 單片機鍵盤接口技術(shù)第六節(jié) 單片機與數(shù)模(D/A)及模數(shù)(A/D)轉(zhuǎn)換1、地址總線(Address Bus,簡寫為AB)地址總線可傳送單片機送出的地址信號,用于訪問外部存儲器單元或I/O端口。A 地址總線是單向的,地址信號只是由單片機向外發(fā)出。B 地址總線的數(shù)目決定了可直接訪問的存儲器單元的數(shù)目。例如N位地址,可以產(chǎn)生2N個連續(xù)地址編碼,因此可訪問2N個存儲單元,即通常所說的尋址范圍為 2N個地址單元。MCS—51單片機有十六位地址線,因此存儲器展范圍可達216 = 64KB地址單元。C 掛在總線上的器件,只有地址被選中的單元才能與CPU交換數(shù)據(jù),其余的都暫時不能操作,否則會引起數(shù)據(jù)沖突。2、數(shù)據(jù)總線(Data Bus,簡寫為DB)數(shù)據(jù)總線用于在單片機與存儲器之間或單片機與I/O端口之間傳送數(shù)據(jù)。A 單片機系統(tǒng)數(shù)據(jù)總線的位數(shù)與單片機處理數(shù)據(jù)的字長一致。例如MCS—51單片機是8位字長,所以數(shù)據(jù)總線的位數(shù)也是8位。B 數(shù)據(jù)總線是雙向的,即可以進行兩個方向的數(shù)據(jù)傳送。3、控制總線(Control Bus,簡寫為CB)控制總線實際上就是一組控制信號線,包括單片機發(fā)出的,以及從其它部件送給單片機的各種控制或聯(lián)絡信號。對于一條控制信號線來說,其傳送方向是單向的,但是由不同方向的控制信號線組合的控制總線則表示為雙向的。總線結(jié)構(gòu)形式大大減少了單片機系統(tǒng)中連接線的數(shù)目,提高了系統(tǒng)的可靠性,增加了系統(tǒng)的靈活性。此外,總線結(jié)構(gòu)也使擴展易于實現(xiàn),各功能部件只要符合總線規(guī)范,就可以很方便地接入系統(tǒng),實現(xiàn)單片機擴展。
標簽: 8051 單片機 系統(tǒng)擴展 接口技術(shù)
上傳時間: 2013-10-18
上傳用戶:assef
一、實驗目的1.掌握定時/計數(shù)器、輸入/輸出接口電路設計方法。 2.掌握中斷控制編程技術(shù)的方法和應用。3.掌握8086匯編語言程序設計方法。 二、實驗內(nèi)容與要求 微機燈光控制系統(tǒng)主要用于娛樂場所的彩燈控制。系統(tǒng)的彩燈共有12組,在實驗時用12個發(fā)光二極管模擬。1. 基本要求:燈光控制共有8種模式,如12個燈依次點亮;12個燈同時閃爍等八種。系統(tǒng)可以通過鍵盤和顯示屏的人機對話,將8種模式進行任意個數(shù)、任意次序的連接組合。系統(tǒng)不斷重復執(zhí)行輸入的模式組合,直至鍵盤有任意一個鍵按下,退出燈光控制系統(tǒng),返回DOS系統(tǒng)。2. 提高要求:音樂彩燈控制系統(tǒng),根據(jù)音樂的變化控制彩燈的變化,主要有以下幾種:第一種為音樂節(jié)奏控制彩燈,按音樂的節(jié)拍變換彩燈花樣。第二種音律的強弱(信號幅度大小)控制彩燈。強音時,燈的亮度加大,且被點亮的數(shù)目增多。第三種按音調(diào)高低(信號頻率高低)控制彩燈。低音時,某一部分燈點亮;高音時,另一部分點亮。 三、實驗報告要求 1.設計目的和內(nèi)容 2.總體設計 3.硬件設計:原理圖(接線圖)及簡要說明 4.軟件設計框圖及程序清單5.設計結(jié)果和體會(包括遇到的問題及解決的方法) 四、設計原理我們以背景霓虹燈的一種顯示效果為例,介紹控制霓虹燈顯示的基本原理。設有一排 n 段水平排列的霓虹燈,某種顯示方式為從左到右每0.2 秒逐個點亮。其控制過程如下: 若以“ 1 ”代表霓虹燈點亮,以“ 0 ”代表霓虹燈熄滅,則開始時刻, n 段霓虹燈的控制信號均為“ 0 ”,隨后,控制器將一幀 n 個數(shù)據(jù)送至 n 段霓虹燈的控制端,其中,最左邊的一段霓虹燈對應的控制數(shù)據(jù)為“ 1 ”,其余的數(shù)據(jù)均為零,即 1000 … 000 。當 n 個數(shù)據(jù)送完以后,控制器停止送數(shù),保留這種狀態(tài)(定時) 0.2 秒,此時,第 1 段霓虹燈被點亮,其余霓虹燈熄滅。隨后,控制器又在極短的時間內(nèi)將數(shù)據(jù) 1100 … 000 送至霓虹燈的控制端,并定時 0.2 秒,這段時間,前兩段霓虹燈被點亮。由于送數(shù)據(jù)的過程很快,我們觀測到的效果是第一段霓虹燈被點亮 0.2 秒后,第 2 段霓虹燈接著被點亮,即每隔 0.2 秒顯示一幀圖樣。如此下去,最后控制器將數(shù)據(jù) 1111 … 111 送至 n 段霓虹燈的控制端,則 n 段霓虹燈被全部點亮。 只要改變送至每段霓虹燈的數(shù)據(jù),即可改變霓虹燈的顯示方式,顯然,我們可以通過合理地組合數(shù)據(jù)(編程)來得到霓虹燈的不同顯示方式。 五、總體方案論證分析系統(tǒng)設計思路如下:1) 采集8位開關(guān)輸入信號,若輸入數(shù)據(jù)為0時,將其修改為1。確定輸入的硬件接口電路。采樣輸入開關(guān)量,并存入NUM的軟件程序段。2) 以12個燈依次點亮為例(即燈光控制模式M1),考慮與其相應的燈光顯示代碼數(shù)據(jù)。確定顯示代碼數(shù)據(jù)輸出的接口電路。輸出一個同期顯示代碼的軟件程序段(暫不考慮時隙的延時要求)。3) 應用定時中斷服務和NUM數(shù)據(jù),實現(xiàn)t=N×50ms的方法。4) 實現(xiàn)某一種模式燈光顯示控制中12個時隙一個周期,共重復四次的控制方法。要求在初始化時采樣開關(guān)輸入數(shù)據(jù)NUM,并以此控制每一時隙的延時時間;在每一時隙結(jié)束時,檢查有無鍵按下,若是退出鍵按下,則結(jié)束燈光控制,返回DOS系統(tǒng),若是其他鍵就返回主菜單,重新輸入控制模式數(shù)據(jù)。5) 通過人機對話,輸入8種燈光顯示控制模式的任意個數(shù)、任意次序連接組合的控制模式數(shù)據(jù)串(以ENTER鍵結(jié)尾)。對輸入的數(shù)據(jù)進行檢查,若數(shù)據(jù)都在1 - 8之間,則存入INBUF;若有錯誤,則通過屏幕顯示輸入錯誤,準備重新輸入燈光顯示控制模式數(shù)據(jù)。6) 依次讀取INBUF中的控制模式數(shù)據(jù)進行不同模式的燈光顯示控制,在沒有任意鍵按下的情況下,系統(tǒng)從第一個控制模式數(shù)據(jù)開始,順序工作到最后一個控制模式數(shù)據(jù)后,又返回到第一個控制模式數(shù)據(jù),不斷重復循環(huán)進行燈光顯示控制。7) 本系統(tǒng)的軟件在總體上有兩部份,即主程序(MAIN)和實時中斷服務程序(INTT)。討論以功能明確、相互界面分割清晰的軟件程序模塊化設計方法。即確定有關(guān)功能模塊,并畫出以功能模塊表示的主程序(MAIN)流程框圖和定時中斷服務程序的流程框圖。 六、硬件電路設計 以微機實驗平臺和PC機資源為硬件設計的基礎,不需要外加電路。主要利用了以下的資源:1.8255并行口電路8255并行口電路主要負責數(shù)據(jù)的輸入與輸出,可以輸出數(shù)據(jù)控制發(fā)光二極管的亮滅和讀取乒乓開關(guān)的數(shù)據(jù)。實驗時可以將8255的A口、B口和一組發(fā)光二極管相連,C口和乒乓開關(guān)相連。2.8253定時/計數(shù)器8253定時/計數(shù)器和8259中斷控制器一起實現(xiàn)時隙定時。本設計的定時就是采用的t=N×50ms的方法,50ms由8253定時/計數(shù)器的計數(shù)器0控制定時,N是在中斷服務程序中軟件計時。8253的OUT0接到IRQ2,產(chǎn)生中斷請求信號。8253定時/計數(shù)器定時結(jié)束會發(fā)出中斷信號,進入中斷服務程序。3.PC機資源本設計除了利用PC機作為控制器之外,還利用了PC機的鍵盤和顯示器。鍵盤主要是輸入控制模式數(shù)據(jù),顯示器就是顯示提示信息。 七、軟件設計 軟件主要分為主程序(MAIN)和中斷服務程序(INTT),主程序包含系統(tǒng)初始化、讀取乒乓開關(guān)、讀取控制模式數(shù)據(jù)以及按鍵處理等模塊。中斷服務程序主要是定時時間到后根據(jù)控制模式數(shù)據(jù)點亮相應的發(fā)光二極管。1.主程序主程序的程序流程圖如圖1所示。
上傳時間: 2014-04-05
上傳用戶:q986086481
《現(xiàn)代微機原理與接口技術(shù)》實驗指導書 TPC-H實驗臺C語言版 1.實驗臺結(jié)構(gòu)1)I / O 地址譯碼電路如上圖1所示地址空間280H~2BFH共分8條譯碼輸出線:Y0~Y7 其地址分別是280H~287H、288H~28FH、290H~297H、298H~29FH、2A0H~2A7H、2A8H~2AFH、2B0H~2B7H、2B8H~2BFH,8根譯碼輸出線在實驗臺I/O地址處分別由自鎖緊插孔引出供實驗選用(見圖2)。 2) 總線插孔采用“自鎖緊”插座在標有“總線”區(qū)引出數(shù)據(jù)總線D7~D0;地址總線A9~A0,讀、寫信號IOR、IOW;中斷請求信號IRQ ;DMA請求信號DRQ1;DMA響應信號DACK1 及AEN信號,供學生搭試各種接口實驗電路使用。3) 時鐘電路如圖-3所示可以輸出1MHZ 2MHZ兩種信號供A/D轉(zhuǎn)換器定時器/計數(shù)器串行接口實驗使用。圖34) 邏輯電平開關(guān)電路如圖-4所示實驗臺右下方設有8個開關(guān)K7~K0,開關(guān)撥到“1”位置時開關(guān)斷開,輸出高電平。向下打到“0”位置時開關(guān)接通,輸出低電平。電路中串接了保護電阻使接口電路不直接同+5V 、GND相連,可有效地防止因誤操作誤編程損壞集成電路現(xiàn)象。圖 4 圖 55) L E D 顯示電路如圖-5所示實驗臺上設有8個發(fā)光二極管及相關(guān)驅(qū)動電路(輸入端L7~L0),當輸入信號為“1” 時發(fā)光,為“0”時滅6) 七段數(shù)碼管顯示電路如圖-6所示實驗臺上設有兩個共陰極七段數(shù)碼管及驅(qū)動電路,段碼為同相驅(qū)動器,位碼為反相驅(qū)動器。從段碼與位碼的驅(qū)動器輸入端(段碼輸入端a、b、c、d、e、f、g、dp,位碼輸入端s1、 s2)輸入不同的代碼即可顯示不同數(shù)字或符號。
上傳時間: 2013-11-22
上傳用戶:sssnaxie
九.輸入/輸出保護為了支持多任務,80386不僅要有效地實現(xiàn)任務隔離,而且還要有效地控制各任務的輸入/輸出,避免輸入/輸出沖突。本文將介紹輸入輸出保護。 這里下載本文源代碼。 <一>輸入/輸出保護80386采用I/O特權(quán)級IPOL和I/O許可位圖的方法來控制輸入/輸出,實現(xiàn)輸入/輸出保護。 1.I/O敏感指令輸入輸出特權(quán)級(I/O Privilege Level)規(guī)定了可以執(zhí)行所有與I/O相關(guān)的指令和訪問I/O空間中所有地址的最外層特權(quán)級。IOPL的值在如下圖所示的標志寄存器中。 標 志寄存器 BIT31—BIT18 BIT17 BIT16 BIT15 BIT14 BIT13—BIT12 BIT11 BIT10 BIT9 BIT8 BIT7 BIT6 BIT5 BIT4 BIT3 BIT2 BIT1 BIT0 00000000000000 VM RF 0 NT IOPL OF DF IF TF SF ZF 0 AF 0 PF 1 CF I/O許可位圖規(guī)定了I/O空間中的哪些地址可以由在任何特權(quán)級執(zhí)行的程序所訪問。I/O許可位圖在任務狀態(tài)段TSS中。 I/O敏感指令 指令 功能 保護方式下的執(zhí)行條件 CLI 清除EFLAGS中的IF位 CPL<=IOPL STI 設置EFLAGS中的IF位 CPL<=IOPL IN 從I/O地址讀出數(shù)據(jù) CPL<=IOPL或I/O位圖許可 INS 從I/O地址讀出字符串 CPL<=IOPL或I/O位圖許可 OUT 向I/O地址寫數(shù)據(jù) CPL<=IOPL或I/O位圖許可 OUTS 向I/O地址寫字符串 CPL<=IOPL或I/O位圖許可 上表所列指令稱為I/O敏感指令,由于這些指令與I/O有關(guān),并且只有在滿足所列條件時才可以執(zhí)行,所以把它們稱為I/O敏感指令。從表中可見,當前特權(quán)級不在I/O特權(quán)級外層時,可以正常執(zhí)行所列的全部I/O敏感指令;當特權(quán)級在I/O特權(quán)級外層時,執(zhí)行CLI和STI指令將引起通用保護異常,而其它四條指令是否能夠被執(zhí)行要根據(jù)訪問的I/O地址及I/O許可位圖情況而定(在下面論述),如果條件不滿足而執(zhí)行,那么將引起出錯碼為0的通用保護異常。 由于每個任務使用各自的EFLAGS值和擁有自己的TSS,所以每個任務可以有不同的IOPL,并且可以定義不同的I/O許可位圖。注意,這些I/O敏感指令在實模式下總是可執(zhí)行的。 2.I/O許可位圖如果只用IOPL限制I/O指令的執(zhí)行是很不方便的,不能滿足實際要求需要。因為這樣做會使得在特權(quán)級3執(zhí)行的應用程序要么可訪問所有I/O地址,要么不可訪問所有I/O地址。實際需要與此剛好相反,只允許任務甲的應用程序訪問部分I/O地址,只允許任務乙的應用程序訪問另一部分I/O地址,以避免任務甲和任務乙在訪問I/O地址時發(fā)生沖突,從而避免任務甲和任務乙使用使用獨享設備時發(fā)生沖突。 因此,在IOPL的基礎上又采用了I/O許可位圖。I/O許可位圖由二進制位串組成。位串中的每一位依次對應一個I/O地址,位串的第0位對應I/O地址0,位串的第n位對應I/O地址n。如果位串中的第位為0,那么對應的I/O地址m可以由在任何特權(quán)級執(zhí)行的程序訪問;否則對應的I/O地址m只能由在IOPL特權(quán)級或更內(nèi)層特權(quán)級執(zhí)行的程序訪問。如果在I/O外層特權(quán)級執(zhí)行的程序訪問位串中位值為1的位所對應的I/O地址,那么將引起通用保護異常。 I/O地址空間按字節(jié)進行編址。一條I/O指令最多可涉及四個I/O地址。在需要根據(jù)I/O位圖決定是否可訪問I/O地址的情況下,當一條I/O指令涉及多個I/O地址時,只有這多個I/O地址所對應的I/O許可位圖中的位都為0時,該I/O指令才能被正常執(zhí)行,如果對應位中任一位為1,就會引起通用保護異常。 80386支持的I/O地址空間大小是64K,所以構(gòu)成I/O許可位圖的二進制位串最大長度是64K個位,即位圖的有效部分最大為8K字節(jié)。一個任務實際需要使用的I/O許可位圖大小通常要遠小于這個數(shù)目。 當前任務使用的I/O許可位圖存儲在當前任務TSS中低端的64K字節(jié)內(nèi)。I/O許可位圖總以字節(jié)為單位存儲,所以位串所含的位數(shù)總被認為是8的倍數(shù)。從前文中所述的TSS格式可見,TSS內(nèi)偏移66H的字確定I/O許可位圖的開始偏移。由于I/O許可位圖最長可達8K字節(jié),所以開始偏移應小于56K,但必須大于等于104,因為TSS中前104字節(jié)為TSS的固定格式,用于保存任務的狀態(tài)。 1.I/O訪問許可檢查細節(jié)保護模式下處理器在執(zhí)行I/O指令時進行許可檢查的細節(jié)如下所示。 (1)若CPL<=IOPL,則直接轉(zhuǎn)步驟(8);(2)取得I/O位圖開始偏移;(3)計算I/O地址對應位所在字節(jié)在I/O許可位圖內(nèi)的偏移;(4)計算位偏移以形成屏蔽碼值,即計算I/O地址對應位在字節(jié)中的第幾位;(5)把字節(jié)偏移加上位圖開始偏移,再加1,所得值與TSS界限比較,若越界,則產(chǎn)生出錯碼為0的通用保護故障;(6)若不越界,則從位圖中讀對應字節(jié)及下一個字節(jié);(7)把讀出的兩個字節(jié)與屏蔽碼進行與運算,若結(jié)果不為0表示檢查未通過,則產(chǎn)生出錯碼為0的通用保護故障;(8)進行I/O訪問。設某一任務的TSS段如下: TSSSEG SEGMENT PARA USE16 TSS <> ;TSS低端固定格式部分 DB 8 DUP(0) ;對應I/O端口00H—3FH DB 10000000B ;對應I/O端口40H—47H DB 01100000B ;對用I/O端口48H—4FH DB 8182 DUP(0ffH) ;對應I/O端口50H—0FFFFH DB 0FFH ;位圖結(jié)束字節(jié)TSSLen = $TSSSEG ENDS 再假設IOPL=1,CPL=3。那么如下I/O指令有些能正常執(zhí)行,有些會引起通用保護異常: in al,21h ;(1)正常執(zhí)行 in al,47h ;(2)引起異常 out 20h,al ;(3)正常實行 out 4eh,al ;(4)引起異常 in al,20h ;(5)正常執(zhí)行 out 20h,eax ;(6)正常執(zhí)行 out 4ch,ax ;(7)引起異常 in ax,46h ;(8)引起異常 in eax,42h ;(9)正常執(zhí)行 由上述I/O許可檢查的細節(jié)可見,不論是否必要,當進行許可位檢查時,80386總是從I/O許可位圖中讀取兩個字節(jié)。目的是為了盡快地執(zhí)行I/O許可檢查。一方面,常常要讀取I/O許可位圖的兩個字節(jié)。例如,上面的第(8)條指令要對I/O位圖中的兩個位進行檢查,其低位是某個字節(jié)的最高位,高位是下一個字節(jié)的最低位。可見即使只要檢查兩個位,也可能需要讀取兩個字節(jié)。另一方面,最多檢查四個連續(xù)的位,即最多也只需讀取兩個字節(jié)。所以每次要讀取兩個字節(jié)。這也是在判別是否越界時再加1的原因。為此,為了避免在讀取I/O許可位圖的最高字節(jié)時產(chǎn)生越界,必須在I/O許可位圖的最后填加一個全1的字節(jié),即0FFH。此全1的字節(jié)應填加在最后一個位圖字節(jié)之后,TSS界限范圍之前,即讓填加的全1字節(jié)在TSS界限之內(nèi)。 I/O許可位圖開始偏移加8K所得的值與TSS界限值二者中較小的值決定I/O許可位圖的末端。當TSS的界限大于I/O許可位圖開始偏移加8K時,I/O許可位圖的有效部分就有8K字節(jié),I/O許可檢查全部根據(jù)全部根據(jù)該位圖進行。當TSS的界限不大于I/O許可位圖開始偏移加8K時,I/O許可位圖有效部分就不到8K字節(jié),于是對較小I/O地址訪問的許可檢查根據(jù)位圖進行,而對較大I/O地址訪問的許可檢查總被認為不可訪問而引起通用保護故障。因為這時會發(fā)生字節(jié)越界而引起通用保護異常,所以在這種情況下,可認為不足的I/O許可位圖的高端部分全為1。利用這個特點,可大大節(jié)約TSS中I/O許可位圖占用的存儲單元,也就大大減小了TSS段的長度。 <二>重要標志保護輸入輸出的保護與存儲在標志寄存器EFLAGS中的IOPL密切相關(guān),顯然不能允許隨便地改變IOPL,否則就不能有效地實現(xiàn)輸入輸出保護。類似地,對EFLAGS中的IF位也必須加以保護,否則CLI和STI作為敏感指令對待是無意義的。此外,EFLAGS中的VM位決定著處理器是否按虛擬8086方式工作。 80386對EFLAGS中的這三個字段的處理比較特殊,只有在較高特權(quán)級執(zhí)行的程序才能執(zhí)行IRET、POPF、CLI和STI等指令改變它們。下表列出了不同特權(quán)級下對這三個字段的處理情況。 不同特權(quán)級對標志寄存器特殊字段的處理 特權(quán)級 VM標志字段 IOPL標志字段 IF標志字段 CPL=0 可變(初POPF指令外) 可變 可變 0 不變 不變 可變 CPL>IOPL 不變 不變 不變 從表中可見,只有在特權(quán)級0執(zhí)行的程序才可以修改IOPL位及VM位;只能由相對于IOPL同級或更內(nèi)層特權(quán)級執(zhí)行的程序才可以修改IF位。與CLI和STI指令不同,在特權(quán)級不滿足上述條件的情況下,當執(zhí)行POPF指令和IRET指令時,如果試圖修改這些字段中的任何一個字段,并不引起異常,但試圖要修改的字段也未被修改,也不給出任何特別的信息。此外,指令POPF總不能改變VM位,而PUSHF指令所壓入的標志中的VM位總為0。 <三>演示輸入輸出保護的實例(實例九)下面給出一個用于演示輸入輸出保護的實例。演示內(nèi)容包括:I/O許可位圖的作用、I/O敏感指令引起的異常和特權(quán)指令引起的異常;使用段間調(diào)用指令CALL通過任務門調(diào)用任務,實現(xiàn)任務嵌套。 1.演示步驟實例演示的內(nèi)容比較豐富,具體演示步驟如下:(1)在實模式下做必要準備后,切換到保護模式;(2)進入保護模式的臨時代碼段后,把演示任務的TSS段描述符裝入TR,并設置演示任務的堆棧;(3)進入演示代碼段,演示代碼段的特權(quán)級是0;(4)通過任務門調(diào)用測試任務1。測試任務1能夠順利進行;(5)通過任務門調(diào)用測試任務2。測試任務2演示由于違反I/O許可位圖規(guī)定而導致通用保護異常;(6)通過任務門調(diào)用測試任務3。測試任務3演示I/O敏感指令如何引起通用保護異常;(7)通過任務門調(diào)用測試任務4。測試任務4演示特權(quán)指令如何引起通用保護異常;(8)從演示代碼轉(zhuǎn)臨時代碼,準備返回實模式;(9)返回實模式,并作結(jié)束處理。
上傳時間: 2013-12-11
上傳用戶:nunnzhy
蟲蟲下載站版權(quán)所有 京ICP備2021023401號-1