IO并行口直接驅(qū)動(dòng)LED顯示
標(biāo)簽: LED IO并行口 直接驅(qū)動(dòng)
上傳時(shí)間: 2014-01-26
上傳用戶(hù):1421706030
《C#入門(mén)經(jīng)典(第4版)》通過(guò)C#可以很容易地學(xué)習(xí).NET Framework 3.5的強(qiáng)大功能,所以C#是開(kāi)始您編程生涯的絕佳方式。《C#入門(mén)經(jīng)典(第4版)》全面闡述了C#編程的所有方面,包括C#語(yǔ)言本身、Windows編程、Web編程及數(shù)據(jù)源的使用等內(nèi)容。學(xué)習(xí)了新的編程技巧后,《C#入門(mén)經(jīng)典(第4版)》介紹了如何高效地部署應(yīng)用程序和服務(wù),論述了許多高級(jí)技術(shù),如圖形化編程。另外,還探討了如何使用Visual C# Express 2008、Visual Web Developer Express 2008和Visual Studio 2008的功能。所有這些內(nèi)容都已更新,以反映.NET Framework 3.5和Visual Studio 2008的變化。各章的樣例代碼和示例還可以用于創(chuàng)建強(qiáng)大且安全的應(yīng)用程序。 c#入門(mén)經(jīng)典第4版目錄 第Ⅰ部分 C# 語(yǔ) 言 第1章 C#簡(jiǎn)介 3 1.1 什么是.NET Framework 3 1.1.1 NET Framework的內(nèi)容 4 1.1.2 用.NET Framework編寫(xiě)應(yīng)用程序 4 1.2 什么是C# 7 1.2.1 用C#能編寫(xiě)什么樣的應(yīng)用程序 7 1.2.2 本書(shū)中的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章 編寫(xiě)C#程序 10 2.1 開(kāi)發(fā)環(huán)境 10 2.1.1 Visual Studio 2008 11 2.1.2 Visual C# 2008 ExpressEdition 13 2.2 控制臺(tái)應(yīng)用程序 13 2.2.1 Solution Explorer 16 2.2.2 Properties窗口 17 2.2.3 Error List窗口 17 2.3 Windows Forms應(yīng)用程序 18 2.4 小結(jié) 22 第3章 變量和表達(dá)式 23 3.1 C#的基本語(yǔ)法 23 3.2 C#控制臺(tái)應(yīng)用程序的基本結(jié)構(gòu) 25 3.3 變量 27 3.3.1 簡(jiǎn)單類(lèi)型 27 3.3.2 變量的命名 31 3.3.3 字面值 32 3.3.4 變量的聲明和賦值 33 3.4 表達(dá)式 34 3.4.1 數(shù)學(xué)運(yùn)算符 34 3.4.2 賦值運(yùn)算符 38 3.4.3 運(yùn)算符的優(yōu)先級(jí) 39 3.4.4 名稱(chēng)空間 39 3.5 小結(jié) 42 3.6 練習(xí) 43 第4章 流程控制 44 4.1 布爾邏輯 44 4.1.1 位運(yùn)算符 46 4.1.2 布爾賦值運(yùn)算符 50 4.1.3 運(yùn)算符的優(yōu)先級(jí)更新 51 4.2 goto語(yǔ)句 52 4.3 分支 53 4.3.1 三元運(yùn)算符 53 4.3.2 if語(yǔ)句 54 4.3.3 switch語(yǔ)句 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 無(wú)限循環(huán) 70 4.5 小結(jié) 70 4.6 練習(xí) 71 第5章 變量的更多內(nèi)容 72 5.1 類(lèi)型轉(zhuǎn)換 72 5.1.1 隱式轉(zhuǎn)換 72 5.1.2 顯式轉(zhuǎn)換 74 5.1.3 使用Convert命令進(jìn)行 顯式轉(zhuǎn)換 76 5.2 復(fù)雜的變量類(lèi)型 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 練習(xí) 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ù)和返回值與全局?jǐn)?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 練習(xí) 120 第7章 調(diào)試和錯(cuò)誤處理 121 7.1 VS和VCE中的調(diào)試 121 7.1.1 非中斷(正常)模式下的調(diào)試 122 7.1.2 中斷模式下的調(diào)試 131 7.2 錯(cuò)誤處理 139 7.2.1 try...catch...finally 140 7.2.2 列出和配置異常 144 7.2.3 異常處理的注意事項(xiàng) 145 7.3 小結(jié) 146 7.4 練習(xí) 146 第8章 面向?qū)ο缶幊毯?jiǎn)介 147 8.1 什么是面向?qū)ο缶幊?147 8.1.1 什么是對(duì)象 148 8.1.2 所有的東西都是對(duì)象 151 8.1.3 對(duì)象的生命周期 151 8.1.4 靜態(tài)和實(shí)例類(lèi)成員 152 8.2 OOP技術(shù) 153 8.2.1 接口 153 8.2.2 繼承 155 8.2.3 多態(tài)性 156 8.2.4 對(duì)象之間的關(guān)系 157 8.2.5 運(yùn)算符重載 159 8.2.6 事件 159 8.2.7 引用類(lèi)型和值類(lèi)型 160 8.3 Windows應(yīng)用程序中的OOP 160 8.4 小結(jié) 162 8.5 練習(xí) 163 第9章 定義類(lèi) 164 9.1 C#中的類(lèi)定義 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 對(duì)象瀏覽器 176 9.4.3 添加類(lèi) 177 9.4.4 類(lèi)圖 177 9.5 類(lèi)庫(kù)項(xiàng)目 179 9.6 接口和抽象類(lèi) 182 9.7 結(jié)構(gòu)類(lèi)型 184 9.8 小結(jié) 186 9.9 練習(xí) 186 第10章 定義類(lèi)成員 187 10.1 成員定義 187 10.1.1 定義字段 187 10.1.2 定義方法 188 10.1.3 定義屬性 189 10.1.4 在類(lèi)圖中添加成員 194 10.1.5 重制成員 196 10.1.6 自動(dòng)屬性 197 10.2 類(lèi)成員的其他議題 197 10.2.1 隱藏基類(lèi)方法 198 10.2.2 調(diào)用重寫(xiě)或隱藏的基類(lèi)方法 199 10.2.3 嵌套的類(lèi)型定義 200 10.3 接口的實(shí)現(xiàn) 201 10.4 部分類(lèi)定義 204 10.5 部分方法定義 206 10.6 示例應(yīng)用程序 207 10.6.1 規(guī)劃應(yīng)用程序 207 10.6.2 編寫(xiě)類(lèi)庫(kù) 208 10.6.3 類(lèi)庫(kù)的客戶(hù)應(yīng)用程序 214 10.7 小結(jié) 215 10.8 練習(xí) 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 深度復(fù)制 236 11.1.8 給CardLib添加深度復(fù)制 238 11.2 比較 239 11.2.1 類(lèi)型比較 240 11.2.2 值比較 244 11.3 轉(zhuǎn)換 259 11.3.1 重載轉(zhuǎn)換運(yùn)算符 259 11.3.2 as運(yùn)算符 260 11.4 小結(jié) 261 11.5 練習(xí) 262 第12章 泛型 263 12.1 泛型的概念 263 12.2 使用泛型 264 12.2.1 可空類(lèi)型 264 12.2.2 System.Collections.Generic 名稱(chēng)空間 271 12.3 定義泛型 279 12.3.1 定義泛型類(lèi) 280 12.3.2 定義泛型接口 291 12.3.3 定義泛型方法 291 12.3.4 定義泛型委托 293 12.4 小結(jié) 293 12.5 練習(xí) 293 第13章 其他OOP技術(shù) 295 13.1 ::運(yùn)算符和全局名稱(chēng)空間 13.2 定制異常 296 13.2.1 異常基類(lèi) 297 13.2.2 給CardLib添加定制異常 297 13.3 事件 298 13.3.1 什么是事件 298 13.3.2 使用事件 300 13.3.3 定義事件 302 13.4 擴(kuò)展和使用CardLib 309 13.5 小結(jié) 317 13.6 練習(xí) 317 第14章 C# 3.0語(yǔ)言的改進(jìn) 318 14.1 初始化器 318 14.1.1 對(duì)象初始化器 319 14.1.2 集合初始化器 320 14.2 類(lèi)型推斷 323 14.3 匿名類(lèi)型 325 14.4 擴(kuò)展方法 328 14.5 ?表達(dá)式 333 14.5.1 復(fù)習(xí)匿名方法 333 14.5.2 把?表達(dá)式用于匿名方法 334 14.5.3 ?表達(dá)式的參數(shù) 337 14.5.4 ?表達(dá)式的語(yǔ)句體 337 14.5.5 ?表達(dá)式用作委托和表達(dá)式樹(shù) 338 14.5.6 ?表達(dá)式和集合 339 14.6 小結(jié) 342 14.7 練習(xí) 342 第Ⅱ部分 Windows 編 程 第15章 Windows編程基礎(chǔ) 347 15.1 控件 347 15.1.1 屬性 348 15.1.2 控件的定位、停靠和對(duì)齊 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 練習(xí) 392 第16章 Windows Forms的高級(jí)功能 393 16.1 菜單和工具欄 393 16.1.1 兩個(gè)實(shí)質(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的項(xiàng) 400 16.2.3 StatusStrip控件 405 16.2.4 StatusStripStatusLabel的屬性 405 16.3 SDI和MDI應(yīng)用程序 407 16.4 創(chuàng)建控件 415 16.4.1 LabelTextbox控件 417 16.4.2 調(diào)試用戶(hù)控件 420 16.4.3 擴(kuò)展LabelTextbox控件 421 16.5 小結(jié) 424 16.6 練習(xí) 424 第17章 使用通用對(duì)話(huà)框 425 17.1 通用對(duì)話(huà)框 425 17.2 如何使用對(duì)話(huà)框 426 17.3 文件對(duì)話(huà)框 427 17.3.1 OpenFileDialog 427 17.3.2 SaveFileDialog 438 17.4 打印 442 17.4.1 打印結(jié)構(gòu) 442 17.4.2 打印多個(gè)頁(yè)面 447 17.4.3 PageSetupDialog 449 17.4.4 PrintDialog 451 17.5 打印預(yù)覽 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 練習(xí) 461 第18章 部署Windows應(yīng)用程序 463 18.1 部署概述 463 18.2 ClickOnce部署 464 18.3 Visual Studio安裝和部署項(xiàng)目類(lèi)型 473 18.4 Microsoft Windows安裝程序結(jié)構(gòu) 474 18.4.1 Windows Installer術(shù)語(yǔ) 474 18.4.2 Windows Installer的優(yōu)點(diǎn) 476 18.5 為SimpleEditor創(chuàng)建安裝軟件包 476 18.5.1 規(guī)劃安裝內(nèi)容 476 18.5.2 創(chuàng)建項(xiàng)目 477 18.5.3 項(xiàng)目屬性 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)建項(xiàng)目 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 確認(rèn)安裝 492 18.7.7 進(jìn)度 492 18.7.8 結(jié)束安裝 493 18.7.9 運(yùn)行應(yīng)用程序 493 18.7.10 卸載 493 18.8 小結(jié) 493 18.9 練習(xí) 494 第Ⅲ部分 Web 編 程 第19章 Web編程基礎(chǔ) 497 19.1 概述 497 19.2 ASP .NET運(yùn)行庫(kù) 498 19.3 創(chuàng)建簡(jiǎn)單的Web頁(yè)面 498 19.4 服務(wù)器控件 504 19.5 事件處理程序 505 19.6 輸入的有效性驗(yàn)證 509 19.7 狀態(tài)管理 512 19.7.1 客戶(hù)端的狀態(tài)管理 513 19.7.2 服務(wù)器端的狀態(tài)管理 515 19.8 身份驗(yàn)證和授權(quán) 517 19.8.1 身份驗(yàn)證的配置 518 19.8.2 使用安全控件 522 19.9 讀寫(xiě)SQL Server數(shù)據(jù)庫(kù) 524 19.10 小結(jié) 530 19.11 練習(xí) 531 第20章 Web高級(jí)編程 532 20.1 母版頁(yè) 532 20.2 站點(diǎn)導(dǎo)航 537 20.3 用戶(hù)控件 539 20.4 個(gè)性化配置 541 20.4.1 個(gè)性化配置組 543 20.4.2 組件的個(gè)性化配置 543 20.4.3 定制數(shù)據(jù)類(lèi)型中的個(gè)性化配置 543 20.4.4匿名用戶(hù)的個(gè)性化配置 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 語(yǔ)句 556 20.6.5 對(duì)象 556 20.7 小結(jié) 560 20.8 練習(xí) 560 第21章 Web服務(wù) 561 21.1 Web服務(wù)推出之前 561 21.1.1 遠(yuǎn)程過(guò)程調(diào)用(RPC) 562 21.1.2 SOAP 563 21.2 使用Web服務(wù)的場(chǎng)合 563 21.2.1 賓館旅行社代理應(yīng)用程序 564 21.2.2 圖書(shū)發(fā)布應(yīng)用程序 564 21.2.3 客戶(hù)應(yīng)用程序的類(lèi)型 564 21.2.4 應(yīng)用程序的體系結(jié)構(gòu) 564 21.3 Web服務(wù)的體系結(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基本個(gè)性化配置 568 21.4 Web服務(wù)和.NET Framework 568 21.4.1 創(chuàng)建Web服務(wù) 568 21.4.2 客戶(hù)程序 570 21.5 創(chuàng)建簡(jiǎn)單的ASP .NET Web服務(wù) 571 21.6 測(cè)試Web服務(wù) 572 21.7 執(zhí)行Windows客戶(hù)程序 574 21.8 異步調(diào)用服務(wù) 577 21.9 執(zhí)行ASP .NET客戶(hù)程序 580 21.10 傳送數(shù)據(jù) 581 21.11 小結(jié) 584 21.12 練習(xí) 584 第22章 Ajax編程 586 22.1 Ajax概述 586 22.2 UpdatePanel控件 587 22.3 Timer控件 591 22.4 UpdateProgress控件 592 22.5 Web服務(wù) 594 22.6 擴(kuò)展控件 598 22.7 小結(jié) 600 22.8 練習(xí) 600 第23章 部署Web應(yīng)用程序 601 23.1 Internet Information Services 601 23.2 IIS配置 602 23.3 復(fù)制Web站點(diǎn) 604 23.4 發(fā)布Web站點(diǎn) 606 23.5 Windows安裝程序 607 23.5.1 創(chuàng)建安裝程序 607 23.5.2 安裝Web 應(yīng)用程序 609 23.6 小結(jié) 610 23.7 練習(xí) 610 第Ⅳ部分 數(shù) 據(jù) 訪 問(wèn) 第24章 文件系統(tǒng)數(shù)據(jù) 613 24.1 流 613 24.2 用于輸入和輸出的類(lèi) 614 24.2.1 File類(lèi)和Directory類(lèi) 615 24.2.2 FileInfo類(lèi) 616 24.2.3 DirectoryInfo類(lèi) 617 24.2.4 路徑名和相對(duì)路徑 618 24.2.5 FileStream對(duì)象 618 24.2.6 StreamWriter對(duì)象 624 24.2.7 StreamReader對(duì)象 626 24.2.8 讀寫(xiě)壓縮文件 632 24.3 序列化對(duì)象 635 24.4 監(jiān)控文件結(jié)構(gòu) 639 24.5 小結(jié) 645 24.6 練習(xí) 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名稱(chēng)空間 650 25.1.6 格式良好并有效的XML 651 25.1.7 驗(yàn)證XML文檔 651 25.2 在應(yīng)用程序中使用XML 654 25.2.1 XML文檔對(duì)象模型 655 25.2.2 選擇節(jié)點(diǎn) 663 25.3 小結(jié) 670 25.4 練習(xí) 671 第26章 LINQ簡(jiǎn)介 672 26.1 LINQ的變體 673 26.2 第一個(gè)LINQ查詢(xún) 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í)行的查詢(xún) 676 26.3使用LINQ方法語(yǔ)法和?表達(dá)式 676 26.3.1 LINQ擴(kuò)展方法 676 26.3.2 查詢(xún)語(yǔ)法和方法語(yǔ)法 677 26.3.3 ?表達(dá)式 677 26.4 排序查詢(xún)結(jié)果 679 26.5 orderby子句 680 26.6 用方法語(yǔ)法排序 681 26.7 查詢(xún)大型數(shù)據(jù)集 682 26.8 合計(jì)運(yùn)算符 685 26.9 查詢(xún)復(fù)雜的對(duì)象 688 26.10 投射:在查詢(xún)中創(chuàng)建新對(duì)象 691 26.11 投射:方法語(yǔ)法 693 26.12 單值選擇查詢(xún) 693 26.13 Any和All 694 26.14 多級(jí)排序 696 26.15 多級(jí)排序方法語(yǔ)法:ThenBy 698 26.16 組合查詢(xún) 698 26.17 Take和Skip 700 26.18 First和FirstOrDefault 702 26.19 集運(yùn)算符 703 26.20 Join查詢(xún) 706 26.21 資源和進(jìn)一步閱讀 707 26.22 小結(jié) 707 26.23 練習(xí) 707 第27章 LINQ to SQL 709 27.1 對(duì)象相關(guān)映射 709 27.2 安裝SQL Server和Northwind示例數(shù)據(jù) 710 27.2.1 安裝SQL Server Express2005 710 27.2.2 安裝Northwind示例數(shù)據(jù)庫(kù) 711 27.3 第一個(gè)LINQ to SQL查詢(xún) 712 27.4 瀏覽LINQ to SQL關(guān)系 717 27.5 進(jìn)一步探討LINQ to SQL 720 27.6 LINQ to SQL中的組合、排序和其他高級(jí)查詢(xún) 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 練習(xí) 735 第28章 ADO .NET和LINQ over DataSet 736 28.1 ADO .NET概述 736 28.1.1 ADO .NET名稱(chēng)的來(lái)源 737 28.1.2 ADO .NET的設(shè)計(jì)目標(biāo) 738 28.2 ADO .NET類(lèi)和對(duì)象概述 739 28.2.1 提供者對(duì)象 739 28.2.2 用戶(hù)對(duì)象 740 28.2.3 使用System.Data名稱(chēng)空間 741 28.3 用DataReader讀取數(shù)據(jù) 742 28.4 用DataSet讀取數(shù)據(jù) 749 28.4.1 用數(shù)據(jù)填充DataSet 749 28.4.2 訪問(wèn)DataSet中的表、行和列 749 28.5 更新數(shù)據(jù)庫(kù) 752 28.5.1 給數(shù)據(jù)庫(kù)添加行 755 28.5.2 刪除行 761 28.6 在DataSet中訪問(wèn)多個(gè)表 762 28.6.1 ADO .NET中的關(guān)系 762 28.6.2 用關(guān)系導(dǎo)航 763 28.7 XML和ADO .NET 770 28.8 ADO .NET中的SQL支持 773 28.8.1 DataAdapter對(duì)象中的 SQL命令 773 28.8.2 直接執(zhí)行SQL命令 776 28.8.3 調(diào)用SQL存儲(chǔ)過(guò)程 778 28.9 使用LINQ over DataSet和ADO .NET 780 28.10 小結(jié) 784 28.11 練習(xí) 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 通過(guò)LINQ to XML生成 XML 794 29.5 查詢(xún)XML文檔 798 29.6 小結(jié) 804 29.7 練習(xí) 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文檔說(shuō)明 831 31.1 添加X(jué)ML文檔說(shuō)明 831 31.1.1 XML文檔說(shuō)明的注釋 833 31.1.2 使用類(lèi)圖添加X(jué)ML文檔說(shuō)明 839 31.1.3 生成XML文檔說(shuō)明文件 842 31.1.4 帶有XML文檔說(shuō)明的應(yīng)用程序示例 844 31.2 使用XML文檔說(shuō)明 846 31.2.1 編程處理XML文檔說(shuō)明 846 31.2.2 用XSLT格式化XML文檔說(shuō)明 848 31.2.3 文檔說(shuō)明工具 849 31.3 小結(jié) 850 31.4 練習(xí) 851 第32章 網(wǎng)絡(luò) 852 32.1 聯(lián)網(wǎng)概述 852 32.1.1 名稱(chēng)的解析 855 32.1.2 統(tǒng)一資源標(biāo)識(shí)符 856 32.1.3 TCP和UDP 857 32.1.4 應(yīng)用協(xié)議 857 32.2 網(wǎng)絡(luò)編程選項(xiàng) 859 32.3 WebClient 859 32.4 WebRequest和WebResponse 861 32.5 TcpListener和TcpClient 868 32.6 小結(jié) 876 32.7 練習(xí) 876 第33章 GDI+簡(jiǎn)介 877 33.1 圖形繪制概述 877 33.1.1 Graphics類(lèi) 878 33.1.2 對(duì)象的刪除 878 33.1.3 坐標(biāo)系統(tǒng) 879 33.1.4 顏色 884 33.2 使用Pen類(lèi)繪制線條 885 33.3 使用Brush類(lèi)繪制圖形 887 33.4 使用Font 類(lèi)繪制文本 890 33.5 使用圖像進(jìn)行繪制 893 33.5.1 使用紋理畫(huà)筆繪圖 895 33.5.2 使用鋼筆繪制圖像 897 33.5.3 雙倍緩沖 898 33.6 GDI+的高級(jí)功能 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 練習(xí) 902 第 34 章 Windows Presentation Foundation 903 34.1 WPF的概念 904 34.1.1 WPF給設(shè)計(jì)人員帶來(lái)的好處 904 34.1.2 WPF給C#開(kāi)發(fā)人員帶來(lái)的好處 906 34.2 基本W(wǎng)PF應(yīng)用程序的組成 906 34.3 WPF基礎(chǔ) 916 34.3.1 XAML語(yǔ)法 917 34.3.2 桌面和Web應(yīng)用程序 919 34.3.3 Application對(duì)象 920 34.3.4 控件基 920 34.3.5 控件的布局 928 34.3.6 控件的樣式 936 34.3.7 觸發(fā)器 941 34.3.8 動(dòng)畫(huà) 942 34.3.9 靜態(tài)和動(dòng)態(tài)資源 944 34.4 用WPF編程 949 34.4.1 WPF用戶(hù)控件 950 34.4.2 實(shí)現(xiàn)依賴(lài)屬性 950 34.5 小結(jié) 959 34.6 練習(xí) 960 第35 章 Windows Communication Foundation 961 35.1 WCF是什么 961 35.2 WCF概念 962 35.2.1 WCF通信協(xié)議 962 35.2.2 地址、端點(diǎn)和綁定 963 35.2.3 合同 964 35.2.4 消息模式 965 35.2.5 行為 965 35.2.6 主機(jī) 965 35.3 WCF編程 966 35.3.1 定義WCF服務(wù)合同 973 35.3.2 自存儲(chǔ)的WCF服務(wù) 979 35.4 小結(jié) 985 35.5 練習(xí) 986 第36章 Windows Workflow Foundation 987 36.1 活動(dòng) 990 36.1.1 DelayActivity 990 36.1.2 SuspendActivity 991 36.1.3 WhileActivity 992 36.1.4 SequenceActivity 994 36.1.5 定制活動(dòng) 997 36.2 工作流運(yùn)行庫(kù) 1002 36.3 數(shù)據(jù)綁 1007 36.4 小結(jié) 1010 序言
標(biāo)簽:
上傳時(shí)間: 2013-11-16
上傳用戶(hù):xinyuzhiqiwuwu
PIC16F877 單片機(jī)的鍵盤(pán)和LED 數(shù)碼顯示接口 1 PIC16F877單片機(jī)與鍵盤(pán)和LED數(shù)碼顯示的硬件接口電路單片機(jī)的許多應(yīng)用都需要進(jìn)行人機(jī)對(duì)話(huà),最簡(jiǎn)單的人機(jī)對(duì)話(huà)需要LED 數(shù)碼管顯示數(shù)字和少量字符;鍵盤(pán)是解決計(jì)算機(jī)輸入的簡(jiǎn)單手段;借此可以向計(jì)算機(jī)輸入程序、置數(shù)、送操作命令、控制程序的執(zhí)行等等,所以使用非常廣泛。圖1 鍵盤(pán)、LED數(shù)碼顯示與PIC16F877 單片機(jī)的接口電路本例中采用8 個(gè)按鍵組成的小鍵盤(pán),4 只共陰極的LED 數(shù)碼管,采用4 片74LS373 驅(qū)動(dòng)數(shù)碼管,采用的驅(qū)動(dòng)方法是靜態(tài)方式。使用1 片74LS245 作為鍵盤(pán)的接口;這些外圍器件與PIC16F877 單片機(jī)的接口電路如圖1 所示,這種連接方法與51 系列的單片機(jī)連接方法一樣,其他的連接方法還有好幾種,PIC16F877 單片機(jī)的鍵盤(pán)輸入接法還有其他特殊而十分方便好用的方式。8 鍵鍵盤(pán)通過(guò)74LS245 與單片機(jī)相連,鍵盤(pán)按鍵狀態(tài)的數(shù)據(jù)輸入由RC3 輸出腳控制;當(dāng)RC3=“0”時(shí),鍵盤(pán)狀態(tài)從74LS245 的A 端輸出到單片機(jī)的PORTB口,此時(shí)讀PORTB口的數(shù)據(jù)即為鍵盤(pán)狀態(tài)。為了及時(shí)地響應(yīng)鍵盤(pán)操作,需要經(jīng)常對(duì)鍵盤(pán)進(jìn)行掃描;掃描的方式有許多種,我們將鍵盤(pán)的掃描程序安排在主程序的循環(huán)執(zhí)行過(guò)程中的方式,并采用20ms延遲來(lái)消除按鍵的抖動(dòng)問(wèn)題,此外,為了實(shí)現(xiàn)每按鍵一次只響應(yīng)一次的功能,在執(zhí)行相應(yīng)的按鍵程序之前,必須確保按鍵已經(jīng)松開(kāi);在本例中這一措施有效的防止了數(shù)據(jù)抖動(dòng)過(guò)快的問(wèn)題。LED 數(shù)碼顯示有動(dòng)態(tài)掃描和靜態(tài)顯示兩種方式(圖1 采取的方式為靜態(tài)方式),在動(dòng)態(tài)掃描方式中,各數(shù)碼顯示是輪流點(diǎn)亮的,即控制數(shù)碼顯示的位選信號(hào)和相應(yīng)的要顯示的數(shù)碼的字形代碼同時(shí)逐一送出,反復(fù)不已,由于視覺(jué)的暫留現(xiàn)象,卻好象全都點(diǎn)亮著,這種電路的接法以后再介紹。在靜態(tài)方式中,只要將數(shù)據(jù)送出鎖存以后,各數(shù)碼顯示的數(shù)據(jù)不需要刷新,只要數(shù)據(jù)不需改變,就可以不去管他,所以稱(chēng)為靜態(tài)顯示。在圖1 電路中,輸出顯示的操作簡(jiǎn)化為對(duì)74LS373 的并口操作而已。由于靜態(tài)方式的工作原理比較簡(jiǎn)單,編程也比較直觀簡(jiǎn)單,程序間的相互關(guān)聯(lián)很少。因此編程容易,但要增加硬件,成本較高;與之相比,動(dòng)態(tài)掃描的編程雖然要復(fù)雜一些,但因其所用硬件少,成本低。由數(shù)碼轉(zhuǎn)化為字形代碼可采用軟件譯碼、硬件譯碼等兩種方式。軟件譯碼是將各數(shù)碼的字形代碼構(gòu)成一個(gè)表格存儲(chǔ)于內(nèi)存之中,在顯示數(shù)碼時(shí),通過(guò)執(zhí)行查表程序而得到相應(yīng)的字形代碼,再將之送入數(shù)碼顯示輸出電路進(jìn)行顯示,本例即采用這種方式,這種方式的編程與單片機(jī)有關(guān),在程序中給出了PIC16F877 的編程例程,對(duì)需要熟悉PIC16F877 單片機(jī)的人員有一定的參考價(jià)值。硬件譯碼則采用CD4511、74LS46、74LS47、74LS48、74LS49等BCD 碼—7段鎖存、譯碼、驅(qū)動(dòng)芯片直接譯出字形代碼,點(diǎn)亮LED。74LS373 由LE 端對(duì)要顯示的數(shù)據(jù)進(jìn)行鎖存控制,實(shí)現(xiàn)LED 的靜態(tài)顯示。采用了PIC16F877 的端口輸出操作,模擬74LS373 的數(shù)據(jù)鎖存時(shí)序,即由軟件實(shí)現(xiàn)數(shù)據(jù)鎖存,這種方法可以十分容易的改變時(shí)序和延遲長(zhǎng)短,使高速設(shè)備可以與低速設(shè)備聯(lián)系配合好,設(shè)計(jì)簡(jiǎn)單方便,不好的地方是編程較長(zhǎng)和稍微復(fù)雜一點(diǎn)。這種編程方法在下面的程序中有很好的體現(xiàn)。
上傳時(shí)間: 2013-10-29
上傳用戶(hù):cuiyashuo
單片機(jī)指令系統(tǒng)原理 51單片機(jī)的尋址方式 學(xué)習(xí)匯編程序設(shè)計(jì),要先了解CPU的各種尋址法,才能有效的掌握各個(gè)命令的用途,尋址法是命令運(yùn)算碼找操作數(shù)的方法。在我們學(xué)習(xí)的8051單片機(jī)中,有6種尋址方法,下面我們將逐一進(jìn)行分析。 立即尋址 在這種尋址方式中,指令多是雙字節(jié)的,一般第一個(gè)字節(jié)是操作碼,第二個(gè)字節(jié)是操作數(shù)。該操作數(shù)直接參與操作,所以又稱(chēng)立即數(shù),有“#”號(hào)表示。立即數(shù)就是存放在程序存儲(chǔ)器中的常數(shù),換句話(huà)說(shuō)就是操作數(shù)(立即數(shù))是包含在指令字節(jié)中的。 例如:MOV A,#3AH這條指令的指令代碼為74H、3AH,是雙字節(jié)指令,這條指令的功能是把立即數(shù)3AH送入累加器A中。MOV DPTR,#8200H在前面學(xué)單片機(jī)的專(zhuān)用寄存器時(shí),我們已學(xué)過(guò),DPTR是一個(gè)16位的寄存器,它由DPH及DPL兩個(gè)8位的寄存器組成。這條指令的意思就是把立即數(shù)的高8位(即82H)送入DPH寄存器,把立即數(shù)的低8位(即00H)送入DPL寄存器。這里也特別說(shuō)明一下:在80C51單片機(jī)的指令系統(tǒng)中,僅有一條指令的操作數(shù)是16位的立即數(shù),其功能是向地址指針DPTR傳送16位的地址,即把立即數(shù)的高8位送入DPH,低8位送入DPL。 直接尋址 直接尋址方式是指在指令中操作數(shù)直接以單元地址的形式給出,也就是在這種尋址方式中,操作數(shù)項(xiàng)給出的是參加運(yùn)算的操作數(shù)的地址,而不是操作數(shù)。例如:MOV A,30H 這條指令中操作數(shù)就在30H單元中,也就是30H是操作數(shù)的地址,并非操作數(shù)。 在80C51單片機(jī)中,直接地址只能用來(lái)表示特殊功能寄存器、內(nèi)部數(shù)據(jù)存儲(chǔ)器以及位地址空間,具體的說(shuō)就是:1、內(nèi)部數(shù)據(jù)存儲(chǔ)器RAM低128單元。在指令中是以直接單元地址形式給出。我們知道低128單元的地址是00H-7FH。在指令中直接以單元地址形式給出這句話(huà)的意思就是這0-127共128位的任何一位,例如0位是以00H這個(gè)單元地址形式給出、1位就是以01H單元地址給出、127位就是以7FH形式給出。2、位尋址區(qū)。20H-2FH地址單元。3、特殊功能寄存器。專(zhuān)用寄存器除以單元地址形式給出外,還可以以寄存器符號(hào)形式給出。例如下面我們分析的一條指令 MOV IE,#85H 前面的學(xué)習(xí)我們已知道,中斷允許寄存器IE的地址是80H,那么也就是這條指令可以以MOV IE,#85H 的形式表述,也可以MOV 80H,#85H的形式表述。 關(guān)于數(shù)據(jù)存儲(chǔ)器RAM的內(nèi)部情況,請(qǐng)查看我們課程的第十二課。 直接尋址是唯一能訪問(wèn)特殊功能寄存器的尋址方式! 大家來(lái)分析下面幾條指令:MOV 65H,A ;將A的內(nèi)容送入內(nèi)部RAM的65H單元地址中MOV A,direct ;將直接地址單元的內(nèi)容送入A中MOV direct,direct;將直接地址單元的內(nèi)容送直接地址單元MOV IE,#85H ;將立即數(shù)85H送入中斷允許寄存器IE 前面我們已學(xué)過(guò),數(shù)據(jù)前面加了“#”的,表示后面的數(shù)是立即數(shù)(如#85H,就表示85H就是一個(gè)立即數(shù)),數(shù)據(jù)前面沒(méi)有加“#”號(hào)的,就表示后面的是一個(gè)地址地址(如,MOV 65H,A這條指令的65H就是一個(gè)單元地址)。 寄存器尋址 寄存器尋址的尋址范圍是:1、4個(gè)工作寄存器組共有32個(gè)通用寄存器,但在指令中只能使用當(dāng)前寄存器組(工作寄存器組的選擇在前面專(zhuān)用寄存器的學(xué)習(xí)中,我們已知道,是由程序狀態(tài)字PSW中的RS1和RS0來(lái)確定的),因此在使用前常需要通過(guò)對(duì)PSW中的RS1、RS0位的狀態(tài)設(shè)置,來(lái)進(jìn)行對(duì)當(dāng)前工作寄存器組的選擇。2、部份專(zhuān)用寄存器。例如,累加器A、通用寄存器B、地址寄存器DPTR和進(jìn)位位CY。 寄存器尋址方式是指操作數(shù)在寄存器中,因此指定了寄存器名稱(chēng)就能得到操作數(shù)。例如:MOV A,R0這條指令的意思是把寄存器R0的內(nèi)容傳送到累加器A中,操作數(shù)就在R0中。INC R3這條指令的意思是把寄存器R3中的內(nèi)容加1 從前面的學(xué)習(xí)中我產(chǎn)應(yīng)可以理解到,其實(shí)寄存器尋址方式就是對(duì)由PSW程序狀態(tài)字確定的工作寄存器組的R0-R7進(jìn)行讀/寫(xiě)操作。 寄存器間接尋址 寄存間接尋址方式是指寄存器中存放的是操作數(shù)的地址,即操作數(shù)是通過(guò)寄存器間接得到的,因此稱(chēng)為寄存器間接尋址。 MCS-51單片機(jī)規(guī)定工作寄存器的R0、R1做為間接尋址寄存器。用于尋址內(nèi)部或外部數(shù)據(jù)存儲(chǔ)器的256個(gè)單元。為什么會(huì)是256個(gè)單元呢?我們知道,R0或者R1都是一個(gè)8位的寄存器,所以它的尋址空間就是2的八次方=256。例:MOV R0,#30H ;將值30H加載到R0中 MOV A,@R0 ;把內(nèi)部RAM地址30H內(nèi)的值放到累加器A中 MOVX A,@R0 ;把外部RAM地址30H內(nèi)的值放到累加器A中 大家想想,如果用DPTR做為間址寄存器,那么它的尋址范圍是多少呢?DPTR是一個(gè)16位的寄存器,所以它的尋址范圍就是2的十六次方=65536=64K。因用DPTR做為間址寄存器的尋址空間是64K,所以訪問(wèn)片外數(shù)據(jù)存儲(chǔ)器時(shí),我們通常就用DPTR做為間址寄存器。例:MOV DPTR,#1234H ;將DPTR值設(shè)為1234H(16位) MOVX A,@DPTR ;將外部RAM或I/O地址1234H內(nèi)的值放到累加器A中 在執(zhí)行PUSH(壓棧)和POP(出棧)指令時(shí),采用堆棧指針SP作寄存器間接尋址。例:PUSH 30H ;把內(nèi)部RAM地址30H內(nèi)的值放到堆棧區(qū)中堆棧區(qū)是由SP寄存器指定的,如果執(zhí)行上面這條命令前,SP為60H,命令執(zhí)行后會(huì)把內(nèi)部RAM地址30H內(nèi)的值放到RAM的61H內(nèi)。 那么做為寄存器間接尋址用的寄存器主要有哪些呢?我們前面提到的有四個(gè),R0、R1、DPTR、SP 寄存器間接尋址范圍總結(jié):1、內(nèi)部RAM低128單元。對(duì)內(nèi)部RAM低128單元的間接尋址,應(yīng)使用R0或R1作間址寄存器,其通用形式為@Ri(i=0或1)。 2、外部RAM 64KB。對(duì)外部RAM64KB的間接尋址,應(yīng)使用@DPTR作間址尋址寄存器,其形式為:@DPTR。例如MOVX A,@DPTR;其功能是把DPTR指定的外部RAM的單元的內(nèi)容送入累加器A中。外部RAM的低256單元是一個(gè)特殊的尋址區(qū),除可以用DPTR作間址寄存器尋址外,還可以用R0或R1作間址寄存器尋址。例如MOVX A,@R0;這條指令的意思是,把R0指定的外部RAM單元的內(nèi)容送入累加器A。 堆棧操作指令(PUSH和POP)也應(yīng)算作是寄存器間接尋址,即以堆棧指針SP作間址寄存器的間接尋址方式。 寄存器間接尋址方式不可以訪問(wèn)特殊功能寄存器!! 寄存器間接尋址也須以寄存器符號(hào)的形式表示,為了區(qū)別寄存器尋址我寄存器間接尋址的區(qū)別,在寄存器間接尋址方式式中,寄存器的名稱(chēng)前面加前綴標(biāo)志“@”。 基址寄存器加變址寄存器的變址尋址 這種尋址方式以程序計(jì)數(shù)器PC或DPTR為基址寄存器,累加器A為變址寄存器,變址尋址時(shí),把兩者的內(nèi)容相加,所得到的結(jié)果作為操作數(shù)的地址。這種方式常用于訪問(wèn)程序存儲(chǔ)器ROM中的數(shù)據(jù)表格,即查表操作。變址尋址只能讀出程序內(nèi)存入的值,而不能寫(xiě)入,也就是說(shuō)變址尋址這種方式只能對(duì)程序存儲(chǔ)器進(jìn)行尋址,或者說(shuō)它是專(zhuān)門(mén)針對(duì)程序存儲(chǔ)器的尋址方式。例:MOVC A,@A+DPTR這條指令的功能是把DPTR和A的內(nèi)容相加,再把所得到的程序存儲(chǔ)器地址單元的內(nèi)容送A假若指令執(zhí)行前A=54H,DPTR=3F21H,則這條指令變址尋址形成的操作數(shù)地址就是54H+3F21H=3F75H。如果3F75H單元中的內(nèi)容是7FH,則執(zhí)行這條指令后,累加器A中的內(nèi)容就是7FH。 變址尋址的指令只有三條,分別如下:JMP @A+DPTRMOVC A,@A+DPTRMOVC A,@A+PC 第一條指令JMP @A+DPTR這是一條無(wú)條件轉(zhuǎn)移指令,這條指令的意思就是DPTR加上累加器A的內(nèi)容做為一個(gè)16位的地址,執(zhí)行JMP這條指令是,程序就轉(zhuǎn)移到A+DPTR指定的地址去執(zhí)行。 第二、三條指令MOVC A,@A+DPTR和MOVC A,@A+PC指令這兩條指令的通常用于查表操作,功能完全一樣,但使用起來(lái)卻有一定的差別,現(xiàn)詳細(xì)說(shuō)明如下。我們知道,PC是程序指針,是十六位的。DPTR是一個(gè)16位的數(shù)據(jù)指針寄存器,按理,它們的尋址范圍都應(yīng)是64K。我們?cè)趯W(xué)習(xí)特殊功能寄存器時(shí)已知道,程序計(jì)數(shù)器PC是始終跟蹤著程序的執(zhí)行的。也就是說(shuō),PC的值是隨程序的執(zhí)行情況自動(dòng)改變的,我們不可以隨便的給PC賦值。而DPTR是一個(gè)數(shù)據(jù)指針,我們就可以給空上數(shù)據(jù)指針DPTR進(jìn)行賦值。我們?cè)倏粗噶頜OVC A,@A+PC這條指令的意思是將PC的值與累加器A的值相加作為一個(gè)地址,而PC是固定的,累加器A是一個(gè)8位的寄存器,它的尋址范圍是256個(gè)地址單元。講到這里,大家應(yīng)可明白,MOVC A,@A+PC這條指令的尋址范圍其實(shí)就是只能在當(dāng)前指令下256個(gè)地址單元。所在,這在我們實(shí)際應(yīng)用中,可能就會(huì)有一個(gè)問(wèn)題,如果我們需要查詢(xún)的數(shù)據(jù)表在256個(gè)地址單元之內(nèi),則可以用MOVC A,@A+PC這條指令進(jìn)行查表操作,如果超過(guò)了256個(gè)單元,則不能用這條指令進(jìn)行查表操作。剛才我們已說(shuō)到,DPTR是一個(gè)數(shù)據(jù)指針,這個(gè)數(shù)據(jù)指針我們可以給它賦值操作的。通過(guò)賦值操作。我們可以使MOVC A,@A+DPTR這條指令的尋址范圍達(dá)到64K。這就是這兩條指令在實(shí)際應(yīng)用當(dāng)中要注意的問(wèn)題。 變址尋址方式是MCS-51單片機(jī)所獨(dú)有的一種尋址方式。 位尋址 80C51單片機(jī)有位處理功能,可以對(duì)數(shù)據(jù)位進(jìn)行操作,因此就有相應(yīng)的位尋址方式。所謂位尋址,就是對(duì)內(nèi)部RAM或可位尋址的特殊功能寄存器SFR內(nèi)的某個(gè)位,直接加以置位為1或復(fù)位為0。 位尋址的范圍,也就是哪些部份可以進(jìn)行位尋址: 1、我們?cè)诘谑n學(xué)習(xí)51單片機(jī)的存儲(chǔ)器結(jié)構(gòu)時(shí),我們已知道在單片機(jī)的內(nèi)部數(shù)據(jù)存儲(chǔ)器RAM的低128單元中有一個(gè)區(qū)域叫位尋址區(qū)。它的單元地址是20H-2FH。共有16個(gè)單元,一個(gè)單元是8位,所以位尋址區(qū)共有128位。這128位都單獨(dú)有一個(gè)位地址,其位地址的名字就是00H-7FH。這里就有一個(gè)比較麻煩的問(wèn)題需要大家理解清楚了。我們?cè)谇懊娴膶W(xué)習(xí)中00H、01H。。。。7FH等等,所表示的都是一個(gè)字節(jié)(或者叫單元地址),而在這里,這些數(shù)據(jù)都變成了位地址。我們?cè)谥噶钪校蛘咴诔绦蛑腥绾蝸?lái)區(qū)分它是一個(gè)單元地址還是一個(gè)位地址呢?這個(gè)問(wèn)題,也就是我們現(xiàn)在正在研究的位尋址的一個(gè)重要問(wèn)題。其實(shí),區(qū)分這些數(shù)據(jù)是位地址還是單元地址,我們都有相應(yīng)的指令形式的。這個(gè)問(wèn)題我們?cè)诤竺娴闹噶钕到y(tǒng)學(xué)習(xí)中再加以論述。 2、對(duì)專(zhuān)用寄存器位尋址。這里要說(shuō)明一下,不是所有的專(zhuān)用寄存器都可以位尋址的。具體哪些專(zhuān)用寄存器可以哪些專(zhuān)用寄存器不可以,請(qǐng)大家回頭去看看我們前面關(guān)于專(zhuān)用寄存器的相關(guān)文章。一般來(lái)說(shuō),地址單元可以被8整除的專(zhuān)用寄存器,通常都可以進(jìn)行位尋址,當(dāng)然并不是全部,大家在應(yīng)用當(dāng)中應(yīng)引起注意。 專(zhuān)用寄存器的位尋址表示方法: 下面我們以程序狀態(tài)字PSW來(lái)進(jìn)行說(shuō)明 D7 D6 D5 D4 D3 D2 D1 D0 CY AC F0 RS1 RS0 OV P 1、直接使用位地址表示:看上表,PSW的第五位地址是D5,所以可以表示為D5H MOV C,D5H 2、位名稱(chēng)表示:表示該位的名稱(chēng),例如PSW的位5是F0,所以可以用F0表示 MOV C,F(xiàn)0 3、單元(字節(jié))地址加位表示:D0H單元位5,表示為DOH.5 MOV C,D0H.5 4、專(zhuān)用寄存器符號(hào)加位表示:例如PSW.5 MOV C,PSW.5 這四種方法實(shí)現(xiàn)的功能都是相同的,只是表述的方式不同而已。 例題: 1. 說(shuō)明下列指令中源操作數(shù)采用的尋址方式。 MOV R5,R7 答案:寄存器尋址方式 MOV A,55H 直接尋址方式 MOV A,#55H 立即尋址方式 JMP @A+DPTR 變址尋址方式 MOV 30H,C 位尋址方式 MOV A,@R0 間接尋址方式 MOVX A,@R0 間接尋址方式 改錯(cuò)題 請(qǐng)判斷下列的MCS-51單片機(jī)指令的書(shū)寫(xiě)格式是否有錯(cuò),若有,請(qǐng)說(shuō)明錯(cuò)誤原因。 MOV R0,@R3 答案:間址寄存器不能使用R2~R7。 MOVC A,@R0+DPTR 變址尋址方式中的間址寄存器不可使用R0,只可使用A。 ADD R0,R1 運(yùn)算指令中目的操作數(shù)必須為累加器A,不可為R0。 MUL AR0 乘法指令中的乘數(shù)應(yīng)在B寄存器中,即乘法指令只可使用AB寄存器組合。
標(biāo)簽: 單片機(jī)指令 系統(tǒng)原理
上傳時(shí)間: 2013-11-11
上傳用戶(hù):caozhizhi
HT MCU 大型表格的讀取在單片機(jī)的使用過(guò)程中,我們經(jīng)常會(huì)用到查表指令。HOLTEK 公司生產(chǎn)的8 位單片機(jī)有兩條查表指令,分別是TABRDC 和TABRDL,TABRDC 用來(lái)查當(dāng)前頁(yè)表格內(nèi)容,TABRDL 用來(lái)查最后一頁(yè)的表格內(nèi)容。但是這兩條指令最多只能讀取一頁(yè)的表格內(nèi)容(一頁(yè)為256 個(gè)字)。這就使得查取大容量的表格變得復(fù)雜,例如,在聲音處理和LCD 顯示中經(jīng)常用到查表操作,且表格內(nèi)容往往大于256個(gè)字。本文將介紹一個(gè)查表程序—TABRD,專(zhuān)門(mén)用來(lái)查取大容量表格的內(nèi)容,其最大可查取32512(7F00H)的表格內(nèi)容。這個(gè)子程序可以應(yīng)用到許多地方。但是一旦ROM 超過(guò)8K 的話(huà)(例如HTG21系列,HT48XA3 等等),就可以使用TBHP 和TBLP 這兩個(gè)查表指針直接訪問(wèn)ROM 內(nèi)任何地址的表格數(shù)據(jù)了。因此,TABRD 程序適用于ROM<8K 的MCU 程序。
上傳時(shí)間: 2013-11-02
上傳用戶(hù):lixinxiang
Cortex-M3 技術(shù)參考手冊(cè) Cortex-M3是一個(gè)32位的核,在傳統(tǒng)的單片機(jī)領(lǐng)域中,有一些不同于通用32位CPU應(yīng)用的要求。譚軍舉例說(shuō),在工控領(lǐng)域,用戶(hù)要求具有更快的中斷速度,Cortex-M3采用了Tail-Chaining中斷技術(shù),完全基于硬件進(jìn)行中斷處理,最多可減少12個(gè)時(shí)鐘周期數(shù),在實(shí)際應(yīng)用中可減少70%中斷。 單片機(jī)的另外一個(gè)特點(diǎn)是調(diào)試工具非常便宜,不象ARM的仿真器動(dòng)輒幾千上萬(wàn)。針對(duì)這個(gè)特點(diǎn),Cortex-M3采用了新型的單線調(diào)試(Single Wire)技術(shù),專(zhuān)門(mén)拿出一個(gè)引腳來(lái)做調(diào)試,從而節(jié)約了大筆的調(diào)試工具費(fèi)用。同時(shí),Cortex-M3中還集成了大部分存儲(chǔ)器控制器,這樣工程師可以直接在MCU外連接Flash,降低了設(shè)計(jì)難度和應(yīng)用障礙。 ARM Cortex-M3處理器結(jié)合了多種突破性技術(shù),令芯片供應(yīng)商提供超低費(fèi)用的芯片,僅33000門(mén)的內(nèi)核性能可達(dá)1.2DMIPS/MHz。該處理器還集成了許多緊耦合系統(tǒng)外設(shè),令系統(tǒng)能滿(mǎn)足下一代產(chǎn)品的控制需求。ARM公司希望Cortex-M3核的推出,能幫助單片機(jī)廠商實(shí). Cortex的優(yōu)勢(shì)應(yīng)該在于低功耗、低成本、高性能3者(或2者)的結(jié)合。 Cortex如果能做到 合理的低功耗(肯定要比Arm7 & Arm9要低,但不大可能比430、PIC、AVR低) + 合理的高性能(10~50MIPS是比較可能出現(xiàn)的范圍) + 適當(dāng)?shù)牡统杀?1~5$應(yīng)該不會(huì)奇怪)。 簡(jiǎn)單的低成本不大可能比典型的8位MCU低。對(duì)于已經(jīng)有8位MCU的廠商來(lái)說(shuō),比如Philips、Atmel、Freescale、Microchip還有ST和Silocon Lab,不大可能用Cortex來(lái)打自己的8位MCU。對(duì)于沒(méi)有8位MCU的廠商來(lái)說(shuō),當(dāng)然是另外一回事,但他們?cè)趪?guó)內(nèi)進(jìn)行推廣的實(shí)力在短期內(nèi)還不夠。 對(duì)于已經(jīng)有32位ARM的廠商來(lái)說(shuō),比如Philips、Atmel、ST,又不大可能用Cortex來(lái)打自己的Arm7/9,對(duì)他們來(lái)說(shuō),比較合理的定位把Cortex與Arm7/9錯(cuò)開(kāi),即<40MIPS的性能+低于Arm7的價(jià)格,當(dāng)然功耗也會(huì)更低些;當(dāng)然這樣做的結(jié)果很可能是,斷了16位MCU的后路。 對(duì)于仍然在推廣16位MCU的廠商來(lái)說(shuō),比如Freescal、Microchip,處境比較尷尬,因?yàn)镃ortex基本上可以完全替代16位MCU。 所以,未來(lái)的1~2年,來(lái)自新廠商的Cortex比較值得期待-包括國(guó)內(nèi)的供應(yīng)商;對(duì)于已有32位ARM的廠商,情況比較有趣;對(duì)于16位MCU的廠商,反應(yīng)比較有意思。 關(guān)于編程模式 Cortex-M3處理器采用ARMv7-M架構(gòu),它包括所有的16位Thumb指令集和基本的32位Thumb-2指令集架構(gòu),Cortex-M3處理器不能執(zhí)行ARM指令集。 Thumb-2在Thumb指令集架構(gòu)(ISA)上進(jìn)行了大量的改進(jìn),它與Thumb相比,具有更高的代碼密度并提供16/32位指令的更高性能。 關(guān)于工作模式 Cortex-M3處理器支持2種工作模式:線程模式和處理模式。在復(fù)位時(shí)處理器進(jìn)入“線程模式”,異常返回時(shí)也會(huì)進(jìn)入該模式,特權(quán)和用戶(hù)(非特權(quán))模式代碼能夠在“線程模式”下運(yùn)行。 出現(xiàn)異常模式時(shí)處理器進(jìn)入“處理模式”,在處理模式下,所有代碼都是特權(quán)訪問(wèn)的。 關(guān)于工作狀態(tài) Coretx-M3處理器有2種工作狀態(tài)。 Thumb狀態(tài):這是16位和32位“半字對(duì)齊”的Thumb和Thumb-2指令的執(zhí)行狀態(tài)。 調(diào)試狀態(tài):處理器停止并進(jìn)行調(diào)試,進(jìn)入該狀態(tài)。
標(biāo)簽: Cortex-M 技術(shù)參考手冊(cè)
上傳時(shí)間: 2013-12-04
上傳用戶(hù):壞壞的華仔
P89C51Rx2xx是具有ISP功能的FLASH單片機(jī),使用ISP功能可以實(shí)現(xiàn)在系統(tǒng)中更新應(yīng)用程序。進(jìn)入ISP的前提是芯片的向量字為0FCH,這是指明ISP的入口地址為0FC00H。另外還有一個(gè)狀態(tài)字用于指明復(fù)位后是運(yùn)行用戶(hù)程序還是直接進(jìn)入ISP,若狀態(tài)字為0則運(yùn)行用戶(hù)程序,否則進(jìn)入ISP。當(dāng)狀態(tài)字為0時(shí),進(jìn)入ISP需要硬件觸發(fā),即PSEN腳接地,復(fù)位系統(tǒng)即進(jìn)入ISP。
上傳時(shí)間: 2013-10-23
上傳用戶(hù):透明的心情
8051單片機(jī)系統(tǒng)擴(kuò)展與接口技術(shù):第一節(jié) 8051 單片機(jī)系統(tǒng)擴(kuò)展概述第二節(jié) 單片機(jī)外部存儲(chǔ)器擴(kuò)展第三節(jié) 單片機(jī)輸入輸出(I/O)口擴(kuò)展及應(yīng)用第四節(jié) LED顯示器接口電路及顯示程序第五節(jié) 單片機(jī)鍵盤(pán)接口技術(shù)第六節(jié) 單片機(jī)與數(shù)模(D/A)及模數(shù)(A/D)轉(zhuǎn)換1、地址總線(Address Bus,簡(jiǎn)寫(xiě)為AB)地址總線可傳送單片機(jī)送出的地址信號(hào),用于訪問(wèn)外部存儲(chǔ)器單元或I/O端口。A 地址總線是單向的,地址信號(hào)只是由單片機(jī)向外發(fā)出。B 地址總線的數(shù)目決定了可直接訪問(wèn)的存儲(chǔ)器單元的數(shù)目。例如N位地址,可以產(chǎn)生2N個(gè)連續(xù)地址編碼,因此可訪問(wèn)2N個(gè)存儲(chǔ)單元,即通常所說(shuō)的尋址范圍為 2N個(gè)地址單元。MCS—51單片機(jī)有十六位地址線,因此存儲(chǔ)器展范圍可達(dá)216 = 64KB地址單元。C 掛在總線上的器件,只有地址被選中的單元才能與CPU交換數(shù)據(jù),其余的都暫時(shí)不能操作,否則會(huì)引起數(shù)據(jù)沖突。2、數(shù)據(jù)總線(Data Bus,簡(jiǎn)寫(xiě)為DB)數(shù)據(jù)總線用于在單片機(jī)與存儲(chǔ)器之間或單片機(jī)與I/O端口之間傳送數(shù)據(jù)。A 單片機(jī)系統(tǒng)數(shù)據(jù)總線的位數(shù)與單片機(jī)處理數(shù)據(jù)的字長(zhǎng)一致。例如MCS—51單片機(jī)是8位字長(zhǎng),所以數(shù)據(jù)總線的位數(shù)也是8位。B 數(shù)據(jù)總線是雙向的,即可以進(jìn)行兩個(gè)方向的數(shù)據(jù)傳送。3、控制總線(Control Bus,簡(jiǎn)寫(xiě)為CB)控制總線實(shí)際上就是一組控制信號(hào)線,包括單片機(jī)發(fā)出的,以及從其它部件送給單片機(jī)的各種控制或聯(lián)絡(luò)信號(hào)。對(duì)于一條控制信號(hào)線來(lái)說(shuō),其傳送方向是單向的,但是由不同方向的控制信號(hào)線組合的控制總線則表示為雙向的。總線結(jié)構(gòu)形式大大減少了單片機(jī)系統(tǒng)中連接線的數(shù)目,提高了系統(tǒng)的可靠性,增加了系統(tǒng)的靈活性。此外,總線結(jié)構(gòu)也使擴(kuò)展易于實(shí)現(xiàn),各功能部件只要符合總線規(guī)范,就可以很方便地接入系統(tǒng),實(shí)現(xiàn)單片機(jī)擴(kuò)展。
標(biāo)簽: 8051 單片機(jī) 系統(tǒng)擴(kuò)展 接口技術(shù)
上傳時(shí)間: 2013-10-18
上傳用戶(hù):assef
多功能高集成外圍器件6. 1 多功能高集成外圍器件82371PCI的英文名稱(chēng):Peripheral Component Interconnect (外圍部件互聯(lián)PCI總線);82371是PCI總線組件。ISA是:Industry Standard Architecture(工業(yè)標(biāo)準(zhǔn)體系結(jié)構(gòu))IDE是 (Integrated Device Electronics)集成電路設(shè)備簡(jiǎn)稱(chēng)PIIX4PIIX4器件(芯片)的特點(diǎn)1、是一種支持Pentium和PentiumII微處理器的部件。2、82371對(duì)ISA橋來(lái)說(shuō),是一種多功能PCI總線。3、對(duì)可移動(dòng)性和桌面深綠色環(huán)境均提供支持。4、電源管理邏輯。5、被集成化的IDE控制器。6、增強(qiáng)了性能的DMA控制器。(7)基于兩個(gè)82C59的中斷控制器。(8)基于82C54芯片的定時(shí)器。(9)USB(Universal Serial Bus)通用串行總線。(10)SMBus系統(tǒng)管理總線。(11)實(shí)時(shí)時(shí)鐘(12)順應(yīng)Microsoft Win95所需的功能其芯片的邏輯框圖如圖6-1所示。 PIIX4芯片邏輯框圖6.1.1 概述PIIX4芯片是一個(gè)多功能的PCI器件,圖6-2 是82371在系統(tǒng)中扮演的角色。(續(xù)上圖)1. PCI與EIO之間的橋(PIIX4芯片)橋是不對(duì)程的,是各類(lèi)不同標(biāo)準(zhǔn)總線與PCI總線連接,82371AB橋也可理解為一種總線轉(zhuǎn)換譯碼器和控制器,橋內(nèi)包含復(fù)雜的協(xié)議總線信號(hào)和緩沖器。(1).在PCI系統(tǒng)內(nèi),當(dāng)PIIX4操作時(shí),它總是作為系統(tǒng)內(nèi)各種模塊的主控設(shè)備,如USB和DMA控制器、IDE總線和分布式DMA的主控設(shè)備等,而且總是以ISA主控設(shè)備的名義出現(xiàn)。(2). 在向ISA總線或IDE總線進(jìn)行傳送操作的傳送周期期間作為從屬設(shè)備使用,并對(duì)內(nèi)部寄存器譯碼。PIIX4芯片(橋)的配置(1).可以把PIIX4芯片配置成整個(gè)ISA總線,或ISA總線的子集,也可擴(kuò)展成EIO總線。在使用EIO總線時(shí),可以把未使用的信號(hào)配置成通用的輸入和輸出。(2).PIIX4可直接驅(qū)動(dòng)5個(gè)ISA插槽;(3).能提供字節(jié)-交換邏輯、I/O的恢復(fù)支持、等待狀態(tài)的生成以及SYSCLK的生成。(4).提供X-BUS鍵盤(pán)控制器芯片、BIOS芯片、實(shí)時(shí)時(shí)鐘芯片、二級(jí)微程序器等的選擇。2. IDE接口(總線主控設(shè)備的權(quán)利和同步DMA方式)IDE接口為4個(gè)IDE的設(shè)備提供支持,比如IDE接口的硬盤(pán)和CD-ROM等。注意:目前硬盤(pán)接口有5類(lèi):IDE、SCSI、Fibre Channel、IEEE1394和USB等。IDE口幾乎在PC機(jī)最多,因?yàn)楸阋恕CSI多用于服務(wù)器和集群機(jī)。IDE的PIO IDE速率:14MB/s;而總線主控設(shè)備IDE的速率:33MB/s在PIIX4芯片的IDE系統(tǒng)內(nèi),配有兩個(gè)各次獨(dú)立的IDE信號(hào)通道。3. 具有兼容性的模塊—DMA、定時(shí)器/計(jì)數(shù)器、中斷控制器等(1)在PIIX4內(nèi)的兩各82C37 DMA控制器經(jīng)邏輯的組合,產(chǎn)生7個(gè)獨(dú)立的可編程通道。通道[0:3]是通過(guò)與8個(gè)二進(jìn)位的硬件連線實(shí)現(xiàn)的。通過(guò)以字節(jié)為單位的計(jì)數(shù)進(jìn)行傳送。而通道[5:7]是通過(guò)16個(gè)二進(jìn)位的連線實(shí)現(xiàn)的,以字為單位的計(jì)數(shù)進(jìn)行傳送。(2)DMA控制器還能通過(guò)PCI總線,處理舊的DMA的兩個(gè)不同的方法提供支持。(3)計(jì)數(shù)/定時(shí)器模塊在功能上與82C54等價(jià)。(4)中斷控制器與ISA兼容,其功能是兩個(gè)82C59的功能之和。
上傳時(shí)間: 2013-11-19
上傳用戶(hù):3到15
82C55A是高性能,工業(yè)標(biāo)準(zhǔn),并行I/O的LSI外圍芯片;提供24條I/O腳線。 在三種主要的操作方式下分組進(jìn)行程序設(shè)計(jì)82C88A的幾個(gè)特點(diǎn):(1)與所有Intel系列微處理器兼容;(2)有較高的操作速度;(3)24條可編程I/O腳線;(4)底功耗的CHMOS;(5)與TTL兼容;(6)擁有控制字讀回功能;(7)擁有直接置位/復(fù)位功能;(8)在所有I/O輸出端口有2.5mA DC驅(qū)動(dòng)能力;(9)適應(yīng)性強(qiáng)。方式0操作稱(chēng)為簡(jiǎn)單I/O操作,是指端口的信號(hào)線可工作在電平敏感輸入方式或鎖存輸出。所以,須將控制寄存器設(shè)計(jì)為:控制寄存器中:D7=1; D6 D5=00; D2=0。D7位為1代表一個(gè)有效的方式。通過(guò)對(duì)D4 D3 D1和D0的置位/復(fù)位來(lái)實(shí)現(xiàn)端口A及端口B是輸入或輸出。P56表2-1列出了操作方式0端口管腳功能。
上傳時(shí)間: 2013-10-26
上傳用戶(hù):brilliantchen
蟲(chóng)蟲(chóng)下載站版權(quán)所有 京ICP備2021023401號(hào)-1