AVR高速嵌入式單片機(jī)原理與應(yīng)用(修訂版)詳細(xì)介紹ATMEL公司開發(fā)的AVR高速嵌入式單片機(jī)的結(jié)構(gòu);講述AVR單片機(jī)的開發(fā)工具和集成開發(fā)環(huán)境(IDE),包括Studio調(diào)試工具、AVR單片機(jī)匯編器和單片機(jī)串行下載編程;學(xué)習(xí)指令系統(tǒng)時,每條指令均有實例,邊學(xué)習(xí)邊調(diào)試,使學(xué)習(xí)者看得見指令流向及操作結(jié)果,真正理解每條指令的功能及使用注意事項;介紹AVR系列多種單片機(jī)功能特點、實用程序設(shè)計及應(yīng)用實例;作為提高篇,講述簡單易學(xué)、適用AVR單片機(jī)的高級語言BASCOMAVR及ICC AVR C編譯器。 AVR高速嵌入式單片機(jī)原理與應(yīng)用(修訂版) 目錄 第一章ATMEL單片機(jī)簡介1.1ATMEL公司產(chǎn)品的特點11.2AT90系列單片機(jī)簡介21.3AT91M系列單片機(jī)簡介2第二章AVR單片機(jī)系統(tǒng)結(jié)構(gòu)2.1AVR單片機(jī)總體結(jié)構(gòu)42.2AVR單片機(jī)中央處理器CPU62.2.1結(jié)構(gòu)概述72.2.2通用寄存器堆92.2.3X、Y、Z寄存器92.2.4ALU運算邏輯單元92.3AVR單片機(jī)存儲器組織102.3.1可下載的Flash程序存儲器102.3.2內(nèi)部和外部的SRAM數(shù)據(jù)存儲器102.3.3EEPROM數(shù)據(jù)存儲器112.3.4存儲器訪問和指令執(zhí)行時序112.3.5I/O存儲器132.4AVR單片機(jī)系統(tǒng)復(fù)位162.4.1復(fù)位源172.4.2加電復(fù)位182.4.3外部復(fù)位192.4.4看門狗復(fù)位192.5AVR單片機(jī)中斷系統(tǒng)202.5.1中斷處理202.5.2外部中斷232.5.3中斷應(yīng)答時間232.5.4MCU控制寄存器 MCUCR232.6AVR單片機(jī)的省電方式242.6.1休眠狀態(tài)242.6.2空閑模式242.6.3掉電模式252.7AVR單片機(jī)定時器/計數(shù)器252.7.1定時器/計數(shù)器預(yù)定比例器252.7.28位定時器/計數(shù)器0252.7.316位定時器/計數(shù)器1272.7.4看門狗定時器332.8AVR單片機(jī)EEPROM讀/寫訪問342.9AVR單片機(jī)串行接口352.9.1同步串行接口 SPI352.9.2通用串行接口 UART402.10AVR單片機(jī)模擬比較器452.10.1模擬比較器452.10.2模擬比較器控制和狀態(tài)寄存器ACSR462.11AVR單片機(jī)I/O端口472.11.1端口A472.11.2端口 B482.11.3端口 C542.11.4端口 D552.12AVR單片機(jī)存儲器編程612.12.1編程存儲器鎖定位612.12.2熔斷位612.12.3芯片代碼612.12.4編程 Flash和 EEPROM612.12.5并行編程622.12.6串行下載662.12.7可編程特性67第三章AVR單片機(jī)開發(fā)工具3.1AVR實時在線仿真器ICE200693.2JTAG ICE仿真器693.3AVR嵌入式單片機(jī)開發(fā)下載實驗器SL?AVR703.4AVR集成開發(fā)環(huán)境(IDE)753.4.1AVR Assembler編譯器753.4.2AVR Studio773.4.3AVR Prog783.5SL?AVR系列組態(tài)開發(fā)實驗系統(tǒng)793.6SL?AVR*.ASM源文件說明81第四章AVR單片機(jī)指令系統(tǒng)4.1指令格式844.1.1匯編指令844.1.2匯編器偽指令844.1.3表達(dá)式874.2尋址方式894.3數(shù)據(jù)操作和指令類型924.3.1數(shù)據(jù)操作924.3.2指令類型924.3.3指令集名詞924.4算術(shù)和邏輯指令934.4.1加法指令934.4.2減法指令974.4.3乘法指令1014.4.4取反碼指令1014.4.5取補指令1024.4.6比較指令1034.4.7邏輯與指令1054.4.8邏輯或指令1074.4.9邏輯異或指令1104.5轉(zhuǎn)移指令1114.5.1無條件轉(zhuǎn)移指令1114.5.2條件轉(zhuǎn)移指令1144.6數(shù)據(jù)傳送指令1354.6.1直接數(shù)據(jù)傳送指令1354.6.2間接數(shù)據(jù)傳送指令1374.6.3從程序存儲器直接取數(shù)據(jù)指令1444.6.4I/O口數(shù)據(jù)傳送指令1454.6.5堆棧操作指令1464.7位指令和位測試指令1474.7.1帶進(jìn)位邏輯操作指令1474.7.2位變量傳送指令1514.7.3位變量修改指令1524.7.4其它指令1614.8新增指令(新器件)1624.8.1EICALL-- 延長間接調(diào)用子程序1624.8.2EIJMP--擴(kuò)展間接跳轉(zhuǎn)1634.8.3ELPM--擴(kuò)展裝載程序存儲器1644.8.4ESPM--擴(kuò)展存儲程序存儲器1644.8.5FMUL--小數(shù)乘法1664.8.6FMULS--有符號數(shù)乘法1664.8.7FMULSU--有符號小數(shù)和無符號小數(shù)乘法1674.8.8MOVW--拷貝寄存器字1684.8.9MULS--有符號數(shù)乘法1694.8.10MULSU--有符號數(shù)與無符號數(shù)乘法1694.8.11SPM--存儲程序存儲器170 第五章AVR單片機(jī)AT90系列5.1AT90S12001725.1.1特點1725.1.2描述1735.1.3引腳配置1745.1.4結(jié)構(gòu)縱覽1755.2AT90S23131835.2.1特點1835.2.2描述1845.2.3引腳配置1855.3ATmega8/8L1855.3.1特點1865.3.2描述1875.3.3引腳配置1895.3.4開發(fā)實驗工具1905.4AT90S2333/44331915.4.1特點1915.4.2描述1925.4.3引腳配置1945.5AT90S4414/85151955.5.1特點1955.5.2AT90S4414和AT90S8515的比較1965.5.3引腳配置1965.6AT90S4434/85351975.6.1特點1975.6.2描述1985.6.3AT90S4434和AT90S8535的比較1985.6.4引腳配置2005.6.5AVR RISC結(jié)構(gòu)2015.6.6定時器/計數(shù)器2125.6.7看門狗定時器 2175.6.8EEPROM讀/寫2175.6.9串行外設(shè)接口SPI2175.6.10通用串行接口UART2175.6.11模擬比較器 2175.6.12模數(shù)轉(zhuǎn)換器2185.6.13I/O端口2235.7ATmega83/1632285.7.1特點2285.7.2描述2295.7.3ATmega83與ATmega163的比較2315.7.4引腳配置2315.8ATtiny10/11/122325.8.1特點2325.8.2描述2335.8.3引腳配置2355.9ATtiny15/L2375.9.1特點2375.9.2描述2375.9.3引腳配置2395 .10ATmega128/128L2395.10.1特點2405.10.2描述2415.10.3引腳配置2435.10.4開發(fā)實驗工具2455.11ATmega1612465.11.1特點2465.11.2描述2475.11.3引腳配置2475.12AVR單片機(jī)替代MCS51單片機(jī)249第六章實用程序設(shè)計6.1程序設(shè)計方法2506.1.1程序設(shè)計步驟2506.1.2程序設(shè)計技術(shù)2506.2應(yīng)用程序舉例2516.2.1內(nèi)部寄存器和位定義文件2516.2.2訪問內(nèi)部 EEPROM2546.2.3數(shù)據(jù)塊傳送2546.2.4乘法和除法運算應(yīng)用一2556.2.5乘法和除法運算應(yīng)用二2556.2.616位運算2556.2.7BCD運算2556.2.8冒泡分類算法2556.2.9設(shè)置和使用模擬比較器2556.2.10半雙工中斷方式UART應(yīng)用一2556.2.11半雙工中斷方式UART應(yīng)用二2566.2.128位精度A/D轉(zhuǎn)換器2566.2.13裝載程序存儲器2566.2.14安裝和使用相同模擬比較器2566.2.15CRC程序存儲的檢查2566.2.164×4鍵區(qū)休眠觸發(fā)方式2576.2.17多工法驅(qū)動LED和4×4鍵區(qū)掃描2576.2.18I2C總線2576.2.19I2C工作2586.2.20SPI軟件2586.2.21驗證SLAVR實驗器及AT90S1200的口功能12596.2.22驗證SLAVR實驗器及AT90S1200的口功能22596.2.23驗證SLAVR實驗器及具有DIP40封裝的口功能第七章AVR單片機(jī)的應(yīng)用7.1通用延時子程序2607.2簡單I/O口輸出實驗2667.2.1SLAVR721.ASM 2667.2.2SLAVR722.ASM2677.2.3SLAVR723.ASM2687.2.4SLAVR724.ASM2707.2.5SLAVR725.ASM2717.2.6SLAVR726.ASM2727.2.7SLAVR727.ASM2737.3綜合程序2747.3.1LED/LCD/鍵盤掃描綜合程序2747.3.2LED鍵盤掃描綜合程序2757.3.3在LED上實現(xiàn)字符8的循環(huán)移位顯示程序2757.3.4電腦放音機(jī)2777.3.5鍵盤掃描程序2857.3.6十進(jìn)制計數(shù)顯示2867.3.7廉價的A/D轉(zhuǎn)換器2897.3.8高精度廉價的A/D轉(zhuǎn)換器2947.3.9星星燈2977.3.10按鈕猜數(shù)程序2987.3.11漢字的輸入3047.4復(fù)雜實用程序3067.4.110位A/D轉(zhuǎn)換3067.4.2步進(jìn)電機(jī)控制程序3097.4.3測脈沖寬度3127.4.4LCD顯示8字循環(huán)3187.4.5LED電腦時鐘3247.4.6測頻率3307.4.7測轉(zhuǎn)速3327.4.8AT90S8535的A/D轉(zhuǎn)換334第八章BASCOMAVR的應(yīng)用8.1基于高級語言BASCOMAVR的單片機(jī)開發(fā)平臺3408.2BASCOMAVR軟件平臺的安裝與使用3418.3AVR I/O口的應(yīng)用3458.3.1LED發(fā)光二極管的控制3458.3.2簡易手控廣告燈3468.3.3簡易電腦音樂放音機(jī)3478.4LCD顯示器3498.4.1標(biāo)準(zhǔn)LCD顯示器的應(yīng)用3498.4.2簡單游戲機(jī)--按鈕猜數(shù)3518.5串口通信UART3528.5.1AVR系統(tǒng)與PC的簡易通信3538.5.2PC控制的簡易廣告燈3548.6單總線接口和溫度計3568.7I2C總線接口和簡易IC卡讀寫器359第九章ICC AVR C編譯器的使用9.1ICC AVR的概述3659.1.1介紹ImageCraft的ICC AVR3659.1.2ICC AVR中的文件類型及其擴(kuò)展名3659.1.3附注和擴(kuò)充3669.2ImageCraft的ICC AVR編譯器安裝3679.2.1安裝SETUP.EXE程序3679.2.2對安裝完成的軟件進(jìn)行注冊3679.3ICC AVR導(dǎo)游3689.3.1起步3689.3.2C程序的剖析3699.4ICC AVR的IDE環(huán)境3709.4.1編譯一個單獨的文件3709.4.2創(chuàng)建一個新的工程3709.4.3工程管理3719.4.4編輯窗口3719.4.5應(yīng)用構(gòu)筑向?qū)?719.4.6狀態(tài)窗口3719.4.7終端仿真3719.5C庫函數(shù)與啟動文件3729.5.1啟動文件3729.5.2常用庫函數(shù)3729.5.3字符類型庫3739.5.4浮點運算庫3749.5.5標(biāo)準(zhǔn)輸入/輸出庫3759.5.6標(biāo)準(zhǔn)庫和內(nèi)存分配函數(shù)3769.5.7字符串函數(shù)3779.5.8變量參數(shù)函數(shù)3799.5.9堆棧檢查函數(shù)3799.6AVR硬件訪問的編程3809.6.1訪問AVR的底層硬件3809.6.2位操作3809.6.3程序存儲器和常量數(shù)據(jù)3819.6.4字符串3829.6.5堆棧3839.6.6在線匯編3839.6.7I/O寄存器3849.6.8絕對內(nèi)存地址3849.6.9C任務(wù)3859.6.10中斷操作3869.6.11訪問UART3879.6.12訪問EEPROM3879.6.13訪問SPI3889.6.14相對轉(zhuǎn)移/調(diào)用的地址范圍3889.6.15C的運行結(jié)構(gòu)3889.6.16匯編界面和調(diào)用規(guī)則3899.6.17函數(shù)返回非整型值3909.6.18程序和數(shù)據(jù)區(qū)的使用3909.6.19編程區(qū)域3919.6.20調(diào)試3919.7應(yīng)用舉例*3929.7.1讀/寫口3929.7.2延時函數(shù)3929.7.3讀/寫EEPROM3929.7.4AVR的PB口變速移位3939.7.5音符聲程序3939.7.68字循環(huán)移位顯示程序3949.7.7鋸齒波程序3959.7.8正三角波程序3969.7.9梯形波程序396附錄1AT89系列單片機(jī)簡介398附錄2AT94K系列現(xiàn)場可編程系統(tǒng)標(biāo)準(zhǔn)集成電路401附錄3指令集綜合404附錄4AVR單片機(jī)選型表408參 考 文 獻(xiàn)412
上傳時間: 2013-11-08
上傳用戶:xcy122677
電子元器件 任何一個電子電路,都是由電子元器件組合而成。了解常用元器件的性能、型號規(guī)格、組成分類及識別方法,用簡單測試的方法判斷元器件的好壞,是選擇、使用電子元器件的基礎(chǔ),是組裝、調(diào)試電子電路必須具備的技術(shù)技能。下面我們首先分別介紹電阻器、電容器、電感器、繼電器、晶體管、光電器件、集成電路等元器件的基本知識1 .電阻器電阻器在電路中起限流、分流、降壓、分壓、負(fù)載、匹配等作用。1.1電阻器的分類電阻器按其結(jié)構(gòu)可分為三類,即固定電阻器、可變電阻器(電位器)和敏感電阻器。按組成材料的不同,又可分為炭膜電阻器、金屬膜電阻器、線繞電阻器、熱敏電阻器、壓敏電阻器等。常用電阻器的外形圖如圖1.1 1.2 電阻器的參數(shù)及標(biāo)注方法電阻器的參數(shù)很多,通常考慮的有標(biāo)稱阻值、額定功率和允許偏差等。(1)、標(biāo)稱阻值和允許誤差 電阻器的標(biāo)稱阻值是指電阻器上標(biāo)出的名義阻值。而實際阻值與標(biāo)稱阻值之間允許的最大偏差范圍叫做阻值允許偏差,一般用標(biāo)稱阻值與實際阻值之差除以標(biāo)稱阻值所得的百分?jǐn)?shù)表示,又稱阻值誤差。普通電阻器阻值誤差分三個等級:允許誤差小于±5﹪的稱Ⅰ級,允許誤差小于±10﹪的稱Ⅱ級,允許誤差小于±20﹪的稱Ⅲ級。表示電阻器的阻值和誤差的方法有兩種:一是直標(biāo)法,二是色標(biāo)法。直標(biāo)法是將電阻的阻值直接用數(shù)字標(biāo)注在電阻上;色標(biāo)法是用不同顏色的色環(huán)來表示電阻器的阻值和誤差,其規(guī)定如表1.1(a)和(b)。 用色標(biāo)法表示電阻時,根據(jù)阻值的精密情況又分為兩種:一是普通型電阻,電阻體上有四條色環(huán),前兩條表示數(shù)字,第三條表示倍乘,第四條表示誤差。二是精密型電阻,電阻體上有五條色環(huán),前三條表示數(shù)字,第四條表示倍乘,第五條表示誤差。通用電阻器的標(biāo)稱阻值系列如表1.2所示,任何電阻器的標(biāo)稱阻值都應(yīng)為表1.2所列數(shù)值乘以10nΩ,其中n為整數(shù)。(2)、電阻器的額定功率 電阻器的額定功率指電阻器在直流或交流電路中,長期連續(xù)工作所允許消耗的最大功率。常用的額定功率有1/8W、1/4W、1/2W、1W、2W、5W、10W、25W等。電阻器的額定功率有兩種表示方法,一是2W以上的電阻,直接用阿拉伯?dāng)?shù)字標(biāo)注在電阻體上,二是2W以下的炭膜或金屬膜電阻,可以根據(jù)其幾何尺寸判斷其額定功率的大小如表1.3。3 電阻器的簡單測試 電阻器的好壞可以用儀表測試,電阻器阻值的大小也可以用有關(guān)儀器、儀表測出,測試電阻值通常有兩種方法,一是直接測試法,另一種是間接測試法。(1).直接測試法就是直接用歐姆表、電橋等儀器儀表測出電阻器阻值的方法。通常測試小于1Ω的小電阻時可用單臂電橋,測試1Ω到1MΩ電阻時可用電橋或歐姆表(或萬用表),而測試1MΩ以上大電阻時應(yīng)使用兆歐表。
上傳時間: 2013-10-26
上傳用戶:windwolf2000
水聲換能器是利用晶體(石英或酒石酸鉀鈉)壓電陶瓷(鈦酸鋇和鋯鈦酸鉛等)的壓電效應(yīng)或鐵鎳合金的磁致伸縮效應(yīng)來進(jìn)行工作的。所謂壓電效應(yīng),就是把晶體按一定方向切成薄片,并在晶體薄片上施加壓力,在它的兩端面上會分別產(chǎn)生正電荷和負(fù)電荷。反之在晶體博片上施加拉伸力時,它的兩個端面上就會產(chǎn)生與加壓力時相反的電荷。
標(biāo)簽: 換能器
上傳時間: 2013-10-10
上傳用戶:jisiwole
數(shù)字式計時器一般都由震蕩器,分頻器,譯碼器及顯示幾部分組成。其中震蕩器和分頻器組成標(biāo)準(zhǔn)秒信號發(fā)生器,接成各種不同進(jìn)制的計數(shù)器組成計時系統(tǒng),譯碼器,顯示器組成顯示系統(tǒng),另外一些組合電路組成校時調(diào)節(jié)系統(tǒng)。
上傳時間: 2013-12-18
上傳用戶:13188549192
調(diào)制解調(diào)器網(wǎng)絡(luò)編程,對用的它的人會看看的
標(biāo)簽: 調(diào)制解調(diào)器 網(wǎng)絡(luò)編程
上傳時間: 2013-12-10
上傳用戶:小碼農(nóng)lz
利用VC實現(xiàn)的貝葉斯分類器的源代碼,可以用來分類或識別,很值得收藏
上傳時間: 2013-12-23
上傳用戶:bjgaofei
雙音頻解碼器MT8870的驅(qū)動,用串口接收數(shù)據(jù),可從串口調(diào)試器查看接收的數(shù)據(jù)
標(biāo)簽: 8870 MT 音頻解碼器 驅(qū)動
上傳時間: 2015-04-04
上傳用戶:bjgaofei
定時器設(shè)置,適合初學(xué)者學(xué)習(xí),演示定時器及中斷,使用KEIL C編寫
標(biāo)簽: 定時器
上傳時間: 2014-07-23
上傳用戶:冇尾飛鉈
常用的竄口調(diào)試器,方便,好用。大家快下啊。
標(biāo)簽: 調(diào)試器
上傳時間: 2014-01-15
上傳用戶:wxhwjf
一、用表格形式顯示字符 1、題目:用表格形式顯示ASCII字符 2、實驗要求: 按15行*16列的表格形式顯示ASCII碼為10H-100H之間的所有字符,即以行為主的順序用ASCII碼遞增的次序依次顯示對應(yīng)的字符.每16個字符為一行,每行中的相鄰兩個字符之間用空白符(ASCII為0)隔開. 3、提示: (1)顯示每個字符可能使用功能號為02的顯示輸出功能調(diào)用,使用方法如下: MOV AH,02H MOV DL,輸出字符的ASCII碼 INT 21H 本題中可把DL初始化為10H,然后不斷使其加1(用INC指令)以取得下一個字符的ASCII碼. (2)顯示空白符時,用其ASCII碼為0置入DL寄存器.每行結(jié)束時,用顯示回車和換行符結(jié)束本行并開始下一行. (3)由于逐個顯示相繼為ASCII字符時,需要保存并不斷修改DL寄存器的內(nèi)容,而顯示空白、回車、換行符時也需要使用DL寄存器,為此可用堆棧來保存相繼的ASCII字符。 具體用法是:在顯示空白或回車、換行符前用指令PUSH DX把DL的內(nèi)容保存到堆棧中去。在顯示空白或回車、換行符后用指令恢復(fù)DL寄存器的原始內(nèi)容。
上傳時間: 2014-01-11
上傳用戶:qwe1234
蟲蟲下載站版權(quán)所有 京ICP備2021023401號-1