單片機(jī)原理及應(yīng)用-第三版-林立-張俊亮課后答案
《單片機(jī)原理及應(yīng)用-第三版-林立-張俊亮課后答案》由會員分享,可在線閱讀,更多相關(guān)《單片機(jī)原理及應(yīng)用-第三版-林立-張俊亮課后答案(52頁珍藏版)》請?jiān)谘b配圖網(wǎng)上搜索。
第一章習(xí)題 1 什么是單片機(jī) 單片機(jī)和通用微機(jī)相比有何特點(diǎn) 答 單片機(jī)又稱為單片微計(jì)算機(jī) 它的結(jié)構(gòu)特點(diǎn)是將微型計(jì)算機(jī)的基本功能部件 如中央處理 器 CPU 存 儲器 輸入接口 輸出接口 定時 計(jì)數(shù)器及終端系統(tǒng)等 全部集成在一個半導(dǎo)體 芯片上 雖然單片機(jī)只是一個芯片 但無論從組成還是從邏輯功能上來看 都具有微機(jī)系統(tǒng)的定義 與通用的微型計(jì)算機(jī)相比 單片機(jī)體積小巧 可以嵌入到應(yīng)用系統(tǒng)中作為指揮決策中心 是應(yīng)用系 統(tǒng)實(shí)現(xiàn)智能化 2 單 片機(jī)的 發(fā)展有哪幾個 階段 8 位單片機(jī)會不會過時 為什么 答 單片機(jī)誕生于 1971 年 經(jīng)歷了 SCM MCU SOC 三大階段 早期的 SCM 單片機(jī)都 是 8 位或 4 位的 其中最成功的是 INTEL 的 8031 此后在 8031 上發(fā)展出了 MCS51 系列 MCU 系統(tǒng) 基于 這一系統(tǒng)的單片機(jī)系統(tǒng)直到現(xiàn)在還在廣泛使用 隨著工 業(yè)控制領(lǐng)域要求的提高 開 始出現(xiàn)了 16 位 單片機(jī) 但因?yàn)樾詢r(jià)比不理想并未得到很廣泛的應(yīng)用 90 年代后隨著消費(fèi)電子產(chǎn)品 大發(fā)展 單片機(jī)技術(shù)得到了巨大提高 隨著 INTEL i960 系列特 別是后來的 ARM 系列的廣泛應(yīng)用 32 位單 片機(jī)迅速取代 16 位單 片機(jī)的高端地位 并且進(jìn)入主流市場 然而 由于各應(yīng)用領(lǐng)域大量需 要的仍是 8 位單 片機(jī) 因此各大公司紛紛推出高性能 大容量 多功能的新型 8 位單片機(jī) 目前 單片機(jī)正朝著高性能和多品種發(fā)展 但由于 MCS 51 系列 8 位單片機(jī)仍能滿足絕大多 數(shù)應(yīng)用領(lǐng)域的需要 可以肯定 以 MCS 51 系列為主的 8 位單片機(jī) 在當(dāng)前及以后的相當(dāng)一段時 間內(nèi)仍將占據(jù)單片機(jī)應(yīng)用的主導(dǎo)地位 3 舉 例說 明單片機(jī)的主要 應(yīng)用領(lǐng)域 答 單片機(jī)廣泛應(yīng)用于儀器儀表 家用電器 醫(yī)用設(shè)備 航空航天 專用設(shè)備的智能化管理及 過程控制等領(lǐng)域 大致可分如下幾個范疇 智能儀器 單片機(jī)具有體積小 功耗低 控制功能強(qiáng) 擴(kuò)展靈活 微型化和使用方便等優(yōu)點(diǎn) 廣泛應(yīng)用于 儀器儀表中 結(jié)合不同類型的傳感器 可實(shí)現(xiàn)諸如電壓 電流 功率 頻率 濕度 溫度 流量 速度 厚度 角度 長度 硬度 元素 壓力等物理量的測量 采用單片機(jī)控制使得儀器儀表數(shù)字 化 智能化 微型化 且功能比起采用電子或數(shù)字電路更加強(qiáng)大 例如精密的測量設(shè)備 電壓表 功率計(jì) 示波器 各種分析儀 工業(yè)控制 單片機(jī)具有體積小 控制功能強(qiáng) 功耗低 環(huán)境適應(yīng)能力強(qiáng) 擴(kuò)展靈活和使用方便等優(yōu)點(diǎn) 用 單片機(jī)可以構(gòu)成形式多樣的控制系統(tǒng) 數(shù)據(jù)采集系統(tǒng) 通信系統(tǒng) 信號檢測系統(tǒng) 無線感知系統(tǒng) 測控系統(tǒng) 機(jī)器人等應(yīng)用控制系統(tǒng) 例如工廠流水線的智能化管理 電梯智能化控制 各種報(bào)警系 統(tǒng) 與計(jì)算機(jī)聯(lián)網(wǎng)構(gòu)成二級控制系統(tǒng)等 家用電器現(xiàn)在的家用電器廣泛采用了單片機(jī)控制 從電飯 煲 洗衣機(jī) 電冰箱 空調(diào)機(jī) 彩電 其他音響視頻器材 再到電子秤量設(shè)備和白色家電等 網(wǎng)絡(luò)和通信 現(xiàn)代的單片機(jī)普遍具備通信接口 可以很方便地與計(jì)算機(jī)進(jìn)行數(shù)據(jù)通信 為在計(jì)算機(jī)網(wǎng)絡(luò)和通 信設(shè)備間的應(yīng)用提供了極好的物質(zhì)條件 現(xiàn)在的通信設(shè)備基本上都實(shí)現(xiàn)了單片機(jī)智能控制 從手機(jī) 電話機(jī) 小型程控交換機(jī) 樓宇自動通信呼叫系統(tǒng) 列車無線通信 再到日常工作中隨處可見的移 動電話 集群移動通信 無線電對講機(jī)等 醫(yī)用設(shè)備領(lǐng)域 單片機(jī)在醫(yī)用設(shè)備中的用途亦相當(dāng)廣泛 例如醫(yī)用呼吸機(jī) 各種分析儀 監(jiān)護(hù)儀 超聲診斷設(shè) 備及病床呼叫系統(tǒng)等等 模塊化系統(tǒng) 某些專用單片機(jī)設(shè)計(jì)用于實(shí)現(xiàn)特定功能 從而在各種電路中進(jìn)行模塊化應(yīng)用 而不要求使用人 員了解其內(nèi)部結(jié)構(gòu) 如音樂集成單片機(jī) 看似簡單的功能 微縮在純電子芯片中 有別于磁帶機(jī)的 原理 就需要復(fù)雜的類似于計(jì)算機(jī)的原理 如 音樂信號以數(shù)字的形式存于存儲器中 類似于 ROM 由微控制器讀出 轉(zhuǎn) 化為模擬音樂電信號 類似于聲卡 在大型電路中 這種模塊化應(yīng) 用極大地縮小了體積 簡化了電路 降低了損壞 錯誤率 也方便于更換 汽車電子 單片機(jī)在汽 車電子中的應(yīng)用非常廣泛 例如汽車中的發(fā)動機(jī)控制器 基于 CAN 總線的汽車發(fā)動機(jī)智能電子控 制器 GPS 導(dǎo)航系統(tǒng) abs 防抱死系 統(tǒng) 制動系統(tǒng) 胎壓檢測 等 此外 單片機(jī)在工商 金融 科研 教育 電力 通信 物流和國防航空航天等領(lǐng)域都有著十 分廣泛的用途 4 將十 進(jìn) 制數(shù) 37 轉(zhuǎn)換為二進(jìn)制 BCD 碼和十六進(jìn)制數(shù) 并對轉(zhuǎn)換結(jié) 果進(jìn)行對比分析 答 37 100101 B 25 H BCD 碼為 0011 0111 可見 同一個數(shù)用不同進(jìn)制表示 其結(jié)果也不同 5 寫出下列十進(jìn) 制數(shù)在 8 位微機(jī)中的原碼 反碼和補(bǔ)碼形式 1 36 原碼 0010 0100B 反碼 0010 0100B 補(bǔ)碼 0010 0100B 2 36 原碼 1010 0100B 反碼 1101 1011B 補(bǔ)碼 1101 1100B 3 127 原碼 0111 1111B 反碼 0111 1111B 補(bǔ)碼 0111 1111B 4 128 原碼 1000 0000B 反碼 0111 1111B 補(bǔ)碼 1000 0000B 5 121 原碼 1111 1001B 反碼 1000 0110B 補(bǔ)碼 1000 0111B 6 對 于二 進(jìn)制數(shù) 1000 1001B 若理解為無符號數(shù) 則該數(shù)對應(yīng)十進(jìn)制數(shù)為多少 若理解為 有符號數(shù) 則該數(shù)對應(yīng)十進(jìn)制為多少 若理解為 BCD 數(shù) 則該 數(shù)對應(yīng)十進(jìn)制數(shù)為多少 答 1000 1001B 無符號數(shù) 137 有符號數(shù) 9 BCD 數(shù) 89 7 對 下列各 組數(shù) 進(jìn)行 與 或 和 異或 運(yùn)算 1 1010 1010 和 0000 0000 與 0000 0000 或 1010 1010 異或 1010 1010 2 0111 0111 和 1000 1000 與 0000 0000 或 1111 1111 異或 1111 1111 3 1110 1110 和 0111 0111 與 0110 0110 或 1111 1111 異或 1001 1001 4 0011 1100 和 1111 0000 與 0011 0000 或 1111 1100 異或 1100 1100 8 Proteus ISIS 的工作界面中包含哪幾個窗口 菜單欄中包含哪幾個選項(xiàng) 答 Proteus ISIS 的工作界面主要包括標(biāo)題欄 菜單欄 工具欄 狀態(tài)欄 方位控制按鈕 仿真進(jìn)程控制按鈕 對象選擇窗口 原理圖編輯窗口和預(yù)覽窗口等 主菜單欄包含文件 查看 編輯 工具 設(shè)計(jì) 圖形 源文件 調(diào)試 庫 模板 系統(tǒng) 幫助 選項(xiàng) 9 利用 ISIS 模塊 開發(fā)單片機(jī)系統(tǒng) 需要經(jīng)過哪幾個主要步驟 答 1 啟動 ISIS 2 繪制電路原理 圖 3 輸入單片機(jī)程序 4 進(jìn)行源代碼調(diào)試 5 仿真運(yùn)行 10 何謂 PCB 利用 ARES 模塊進(jìn)行 PCB 設(shè)計(jì)需要經(jīng)過哪幾個主要步驟 答 PCB Printed Circuit Board 中文名稱為印制電路板 又稱印刷 電路板 印刷線路 板 是重要的電子部件 是電子元器件的支撐體 是電子元器件電氣連接的提供者 由于它是采用 電子印刷術(shù)制作的 故被稱為 印刷 電路板 利用 ARES 模 塊進(jìn)行 PCB 設(shè)計(jì)的主要步驟 1 啟動 ARES 2 元器件布局 3 元器件布線 4 鋪銅 5 三維效果 圖 6 CADCAM 輸出 第 2 章 MCS 51 單片機(jī)結(jié)構(gòu)及原理 習(xí)題 1 MSC 51 單片機(jī)內(nèi)部由哪些功能部件組成 各有什么功能 答 以 51 單片機(jī)為例 其內(nèi)部功能部件有 控制器 是對取自程序存儲器中的指令進(jìn)行譯碼 在規(guī)定的時刻發(fā)出各種操作所需的控制信號 完成指令所規(guī)定的功能 運(yùn)算器 根據(jù)控制器發(fā)來的信號 執(zhí)行算術(shù)邏輯運(yùn)算操作 存儲器 包括程序存儲和數(shù)據(jù)存儲器 定時器計(jì)數(shù)器 2 個 16 位定時器 計(jì)數(shù)器 可對機(jī)器周期計(jì)數(shù) 也可 對外部輸入脈沖計(jì)數(shù) 中斷系統(tǒng) 可響應(yīng)三個內(nèi)部中斷源和兩個外部中斷源的中斷請求 輸入輸出接口 4 個 8 位并行口和一個全雙工串行口 2 MSC 51 單 片機(jī)外部引腳的名稱是什么 各有什么功能 答 1 電源及晶振引腳 VCC 40 腳 5V 電源引腳 VSS 20 腳 接地引腳 XTAL1 19 腳 外接晶振引腳 內(nèi)置放大器輸入端 XTAL2 18 腳 外接晶振引腳 內(nèi)置放大器輸出端 2 控制引腳 RST VPD 9 為復(fù)位 備用電源引腳 為地址鎖存使能輸出 編程脈沖 輸入 輸出訪問片外程序存儲器讀選通信號 外部 ROM 允 許訪問 編程電源輸入 3 并行 I O 口引腳 P0 0 P0 7 39 32 腳 P0 口 P1 0 P1 7 1 8 腳 P1 口 P2 0 P2 7 21 28 腳 P2 口 P3 0 P3 7 10 17 腳 P3 口 3 51 系列單片機(jī)的封裝有哪些類型 請說明每一種封裝引腳之間的距離 答 51 系列單片 機(jī)的封裝有 40 引腳雙列直插封裝 DIP dual in line package 引腳之間的距離是 100mil 44 引腳方形扁平封裝 QFP quad flat package 方式 引腳之 間的距離是 44 引腳 帶引線的塑料芯片載體 PLCC Plastic Leaded Chip Carrier 4 什么是復(fù)位 單片機(jī)復(fù)位電路有哪幾種 工作原理分別是什么 答 復(fù)位 使單片機(jī)恢 復(fù)原始默認(rèn)狀態(tài)的操作 單片機(jī)復(fù)位電路有 上電復(fù)位電路 由電阻和電容構(gòu)成 通過上 電時 電容相當(dāng)于短路而使復(fù)位 引腳在晶振有效的情況下保持 2 個機(jī)器周期的高電平 按鈕開關(guān)復(fù)位電路 由兩個電阻的分壓構(gòu)成 通過手工按下按鈕 使復(fù)位引腳在晶振有效的情況下保持 2 個機(jī)器周期的高電平 5 通常的微機(jī)系統(tǒng)存儲器結(jié)構(gòu)有哪幾種 MCS 51 單片機(jī)存儲器屬于哪一類 CS 51 可尋 址多大空間 答 通常的微機(jī)系統(tǒng)存儲器結(jié)構(gòu)有兩種結(jié)構(gòu) 即哈佛結(jié)構(gòu)和馮諾依曼結(jié)構(gòu) 也叫普林斯頓結(jié)構(gòu) MCS 51 單片機(jī)存儲器屬于 MCS 51 可尋址空間是兩個 64KB 即 64KB 的程序存儲空間和 64KB 的數(shù)據(jù)存 儲空間 6 片內(nèi) RAM 中低 128 個單元劃分為哪三個主要部分 各部分的主要 功能是什么 答 片內(nèi) RAM 中低 128 個單元劃分為三個部分 工作寄存器區(qū) 00H 1FH 四組 每組 8 個 可作用工作寄存器切換使用 可位尋址區(qū) 20H 2FH 16B 位地址為 00H 7FH 用作為按位 尋址的空間 用戶 RAM 區(qū) 30H 7FH 80B 用作普 通 RAM 單元或堆棧 7 程序狀態(tài)字寄存器 PSW 各位的定 義是什么 答 程序狀態(tài)字寄存器 PSW 各位的定義如 下 PSW 7 PSW 6 PSW 5 PSW 4 PSW 3 PSW 2 PSW 1 PSW 0 PSW 7 進(jìn) 借位標(biāo)志 CY 加法有進(jìn)位時置 1 減法有借位時置 1 PSW 6 輔助 進(jìn)位標(biāo)志 AC 加法運(yùn)算低四位向高 上四位有進(jìn)位時置 1 PSW 5 PSW 1 用戶標(biāo)志位 F0 和用 戶標(biāo)志位 F1 保存用戶的位數(shù)據(jù) PSW 4 PSW 3 工作寄存器選擇控制位 RS1 和 RS0 00 至 11 分別選擇四組工作之一作 為當(dāng)前工作寄存器 PSW 2 溢出標(biāo)志位 OV 有符號數(shù)加 減運(yùn)算結(jié)果有溢出或乘除上結(jié)果異常 乘法運(yùn)算結(jié)果 大于 255 即乘積在 BA 中 或除法運(yùn)算除數(shù)為 0 時置 1 PSW 0 奇偶標(biāo)志位 P 累加器 A 中 1 的個數(shù)為奇數(shù)時置 1 8 什么是時鐘周期 什么是機(jī)器周期 什么是指令周期 當(dāng)振蕩頻率為 12MHz 時 一個機(jī) 器周期為多少微秒 答 時鐘周期又叫振蕩周期或拍 用 P 表示 是 MCS 51 單 片機(jī)中最小的時間單位 在一個 時鐘周期內(nèi) CPU 完成一個最基本的動作 機(jī)器周期 由 12 個時鐘周期構(gòu)成 完成一個基本操作 指令周期 是執(zhí)行一條指令所需的時間 根據(jù)指令的復(fù)雜性 可由 1 4 個機(jī)器周期構(gòu)成 當(dāng)振蕩頻率為 12MHz 時 一個機(jī)器周期 為 1 微秒 9 P0 P1 P2 和 P3 口的結(jié)構(gòu)和功能分別是什么 答 P0 口的每一位由 1 個鎖存器 2 個三態(tài)緩沖器 1 個輸出控制電路 非門 X 與門 電子開關(guān) MUX 輸出驅(qū)動電路構(gòu)成 其功能既可以作為通用 I O 口實(shí)現(xiàn)輸入 輸出功能 也可作為 單片機(jī)地址線的低 8 位和數(shù)據(jù)線實(shí)現(xiàn)外部擴(kuò)展功能 在用作輸入輸出口時 需外接上拉電阻 P1 口的每一位由 1 個鎖存器 1 個場效應(yīng)管驅(qū)動器 V 和 2 個三 態(tài)門緩沖器構(gòu)成 其作用是 用作輸入輸出口 P2 口的每一位由 1 個鎖存器 2 個三態(tài)緩沖器 1 個輸出控制單元 1 個輸出驅(qū)動單元構(gòu)成 其功能是用作輸入輸出口 或地址總線的高 8 位 P3 口的每一位由 1 個鎖存器 2 個三態(tài)緩沖器 1 個第二功能控制單元 1 個輸出驅(qū)動單元 構(gòu)成 其作用是用作輸入輸出口或第二功能 10 51 單片機(jī)引腳 ALE 的作用是什么 當(dāng) 51 不外接存儲器時 ALE 上的輸出的脈沖頻率 是多少 答 51 單片機(jī)引腳 ALE 的作用是對外部存儲尋址時鎖存 P0 口輸出的低 8 位地址 當(dāng) 51 不 外接存儲器時 ALE 上的輸出的脈沖頻率是 fosc 6 第 3 章 單片機(jī)的 匯編語言與程序設(shè)計(jì) 習(xí)題 1 MCS 51 單片機(jī)有哪幾種尋址方式 適用于什么地址空間 答 MCS 51 單片機(jī)有 7 種尋址方式 直接尋址 寄存器尋址 寄存器間接尋址 立即尋址 變址尋址 位尋址 相對尋址 直接尋址方式 操作數(shù)的地址由指令直接給出 適用于片內(nèi) RAM 的所有地址空間 如 MOV A 68H MOV A PSW 寄存器尋址方式 指令給出的是寄存器的編碼 操作數(shù)在編碼指定的寄存器中 適用于片內(nèi) 00H 至 1FH 的 32 個字節(jié) 用 R0 R7 表示 通過 PSW 的 RS1 和 RS0 選擇組號確定對應(yīng) 32 個字 節(jié)中的其中 8 個 還有累加器 A 以及乘除法指令中的 A 和 B 寄存器 位尋址方式中的布 爾累加器 C MOV A R1 MUL AB INC DPTR 寄存器間接尋址方式 指令給出的是寄存器的編碼 操作數(shù)地址在編碼指定的寄存器中 適用 于片內(nèi) RAM 的全部空間 其中 52 系列中的 80H 至 FFH 只能用寄存器間接尋址 如 MOV A R0 MOV A R1 MOVX A DPTR 立即尋址方式 操作數(shù)本身在指令中直接 給出適用于用 8 位立即數(shù)對片內(nèi) RAM 所有地址單 元賦值 也可用 16 位立即數(shù)對 DPTR 賦值 如 MOV A 0E2H MOV DPTR 2000H 變址尋址方式 以 DPTR 或 PC 作為基地址寄存器 以累加器 A 作為變址寄存器 將基址寄存 器與變址寄存器的內(nèi)容相加形成操作數(shù)的實(shí)際地址的一種尋址方式 變址尋址方式適用于程序存儲 器 ROM 僅有三條指令如下 MOVC A A DPTR MOVC A A PC JMP A DPTR 位尋址方式 指令中直接給出操作數(shù)所在單元的位地址 適用于片內(nèi) RAM 中地址 20H 至 2FH 中的 16 個字 節(jié)中的 128 個位地址空間和 80H 至 FFH 中地址中可以被 8 整除的所有 SFR 中的每個位地址空間 如 MOV C 7FH MOV F0 C MOV C ACC 7 相對尋址方式 為相對轉(zhuǎn)移指令而設(shè) 指令中直接給出轉(zhuǎn)移的相對偏移量 其轉(zhuǎn)移目標(biāo)在當(dāng)前 指令 128 至 127 字節(jié)范圍 內(nèi)的地址空間 如 SJMP START HERE SJMP HERE 等效于 SJMP 2 MCS 51 單片機(jī)的 PSW 程序狀態(tài)字中無 ZERO 零 標(biāo)志位 怎樣判斷某內(nèi)部數(shù)據(jù)單元的 內(nèi)容是否為零 答 MCS 51 單片機(jī)的 PSW 程序狀態(tài)字中無 ZERO 零 標(biāo)志位 判斷某內(nèi)部數(shù)據(jù)單元的內(nèi)容 是否為零是能通過取數(shù)到 A 累加器 再判斷 A 中的每一位是否 為零來確定其值是否為零 3 編程將內(nèi)部 RAM 的 20H 30H 單元內(nèi)容清零 解 設(shè)一個片內(nèi) RAM 指針 R0 先指向首地址 20H 通過累加器 A 清零 然后采用間接尋址 方式依次將 A 中的零 值傳送到指 針?biāo)傅钠瑑?nèi) RAM 單元 每傳送一個字節(jié) 地址指針加 1 直到 達(dá)到地址為 30H 或達(dá)到計(jì)數(shù)器 規(guī)定的 17 個字節(jié)為止 程序 1 MOV R0 20H 設(shè)地址指針初值 CLR A 累加器清 0 CONT MOV R0 A 置 0 指針?biāo)竼卧?INC R0 地址指針加 1 CJNE R0 31H CONT 指針未超過終點(diǎn)則繼續(xù) SJMP 暫停 程序 2 MOV R0 20H 設(shè)地址指針初值 CLR A 累加器清 0 MOV R7 17 計(jì)數(shù)器賦初值 從 20H 到 30H 共 17 個字 節(jié) CONT MOV R0 A 置 0 指針?biāo)竼卧?INC R0 地址指針加 1 DJNZ R7 CONT 計(jì)數(shù)器減 1 非 0 則繼續(xù) SJMP 暫停 4 編程查找內(nèi)部 RAM 的 32H 41H 單元中是否有 0AAH 這個數(shù)據(jù) 若有這一數(shù)據(jù) 則將 50H 單元置為 0FFH 否則將 50H 單元清零 解 設(shè)一個片內(nèi) RAM 指針 R0 先指向首地址 32H 比較 R0 與 0AAH 若相等 則退出 循環(huán) 給 50H 單元賦 0FFH 若不相等 則 R0 加 1 為繼續(xù)比較下一個字節(jié)做準(zhǔn)備 直到達(dá)到地 址為 41H 或達(dá)到 計(jì)數(shù)器規(guī)定的 16 個字節(jié)為止還沒找到 則給 50H 單元賦 00H 程序 1 MOV R0 32H 設(shè)地址指針初值 CONT CJNE R0 0AAH NEXT 比較查找值與指針?biāo)竼卧闹?不相等轉(zhuǎn)移 MOV A 0FFH 相等 則準(zhǔn)備好要賦的標(biāo)志值 0FFH SJMP DOWN 轉(zhuǎn)存到保存結(jié)果處 NEXT INC R0 修改地址指針 CJNE R0 42H CONT 若指針未越過終點(diǎn) 則繼續(xù) MOV A 00H 查找失敗 則 將 00H 存入結(jié)果標(biāo)志單元 DOWN MOV 50H A 將比較結(jié) 果標(biāo)志存入 50H 單元 SJMP 暫停 END 程序 2 MOV R7 16 計(jì)數(shù)器賦初值 從 20H 到 30H 共 16 個字 節(jié) MOV R0 32H 設(shè)地址指 針初值 CONT CJNE R0 0AAH NEXT 比較查找值與指針?biāo)?單元的值 不相等轉(zhuǎn)移 MOV A 0FFH 相等 則準(zhǔn)備好要賦的標(biāo)志值 0FFH SJMP DOWN 轉(zhuǎn)存到保存結(jié)果處 NEXT INC R0 修改地址指針 DJNZ R7 CONT 計(jì)數(shù)器減 1 非 0 則繼續(xù) MOV A 00H 查找失敗 則 將 00H 存入結(jié)果標(biāo)志單元 DOWN MOV 50H A 將比較結(jié) 果標(biāo)志存入 50H 單元 SJMP 暫停 END 5 查找 20H 4FH 單元中出 現(xiàn) 00H 的次數(shù) 并將查找結(jié)果存入 50H 單元 解 從 20H 到 4FH 共 48 個字 節(jié) MOV R7 48 字節(jié)計(jì)數(shù)器賦 初值 MOV R0 20H 設(shè)地址指針初值 CONT CJNE R0 00H NEXT 比較查找值與指針?biāo)竼卧闹?不相等轉(zhuǎn)移 INC R6 相等 0 的個數(shù) 計(jì)數(shù)器加 1 NEXT INC R0 修改地址指針 DJNZ R7 CONT 計(jì)數(shù)器減 1 非 0 則繼續(xù) MOV 50H R6 保存 O 的個數(shù)計(jì)數(shù)值到 50H 單元 SJMP 暫停 END END 6 已知 A 83H R0 17H 17H 34H 寫出下列程序段 執(zhí)行之后的 A 中的內(nèi)容 ANL A 17H ORL 17H A XRL A R0 CPL A END 答 ANL A 17H A 03H ORL 17H A 17H 0011 0100 0000 0011 0011 0111 XRL A R0 A 0000 0011 0011 0111 0011 0100 CPL A A 1100 1011 7 已知單片機(jī)的晶振 頻率為 12MHz 分別設(shè)計(jì)延時為 0 1s 1s 的子程序 答 已知單片 機(jī)的晶振頻率為 12MHz 則機(jī)器周期 為 1us 延時子程序是通過執(zhí)行指令序列中機(jī)器周期數(shù)來達(dá) 到 如果要 0 1s 即 100ms 也就是 100000us 所以需要機(jī)器周期數(shù)達(dá)到 100000 要延時 達(dá)到 1S 可通過對 延時為 0 1 秒的子程序調(diào)用 10 次來實(shí)現(xiàn) DELAY100MS MOV R6 200 1 個機(jī)器周期 D1 MOV R7 250 1 個機(jī)器周期 D2 NOP 1 個機(jī)器周期 DJNZ R7 D2 2 個機(jī)器周期 3 251 753 DJNZ R6 D1 2 個機(jī)器周期 1 753 2 132 99792 RET 2 個機(jī)器周期 1 99792 2 99795 約 100ms DELAY1S MOV R7 10 計(jì)數(shù) 10 次 1 LOOP ACALL DELAY100MS 延時 100ms 子程序 99795 2 DJNZ R7 LOOP 未達(dá)到 10 次則繼續(xù) 10 2 99795 2 RET 返回 2 10 2 99795 2 997992 8 內(nèi)部 RAM 從 20H 單元開始處有一數(shù)據(jù)塊 以 ODH 為結(jié)束標(biāo)志 試統(tǒng)計(jì)該數(shù)據(jù)塊的長度 將該數(shù)據(jù)塊送到外部數(shù)據(jù)存儲器 7E01H 開始的單元 并將長 度存入 7E00H 單元 解 從 20H 的指 針用 R0 從外部 RAM7E01 開始的指針用 DPTR 計(jì)數(shù)器用 R7 MOV R7 0 字節(jié)計(jì)數(shù)器賦初值 MOV R0 20H 設(shè)片內(nèi) RAM 地址指針初值 MOV DPTR 7E01H 設(shè)片外 RAM 地址指針初值 CONT MOV A R0 取片內(nèi) RAM 中的一個字節(jié) MOVX DPTR A 存入片外 RAM 指針?biāo)竼卧?INC R7 長度計(jì)數(shù)器加 1 INC R0 片內(nèi) RAM 地址指針加 1 INC DPTR 片外 RAM 地址指針加 1 CJNE A 0DH CONT 未達(dá)到結(jié)束標(biāo)志 MOV A R7 取塊計(jì)數(shù)長度值 MOVX DPTR A 保存 SJMP 暫停 END 9 內(nèi)部 RAM 從 DATA 開始的區(qū)域中存放著 10 個單字節(jié)十 進(jìn)制數(shù) 求其累加和 并將結(jié)果 存入 SUM 和 SUM 1 單元 解 R7 計(jì)數(shù) R6 保存累加和高 8 位 R0 用作地址指針 ORG 0000H LJMP MAIN ORG 100H SUM EQU 30H DATAA EQU 40H MAIN MOV R7 10 字節(jié)計(jì)數(shù)器賦初值 MOV R0 DATAA 設(shè)片內(nèi) RAM 地址指針初值 CLR A 累加器清 0 MOV R6 A 累加結(jié)果的高 8 位 CONT ADD A R0 加 RAM 中的一個字節(jié)到 ACC DA A JNC NEXT 若無進(jìn)位則不用管高 8 位 INC R6 有進(jìn)位 高 8 位加 1 NEXT INC R0 片內(nèi) RAM 地址指針加 1 DJNZ R7 CONT 未完繼續(xù) MOV SUM A 保存低 8 位 MOV SUM 1 R6 保存高 8 位 SJMP 暫停 END 10 內(nèi)部 RAM 從 DATA1 和 DATA2 單元開始處存放著兩個等長的數(shù)據(jù)塊 數(shù)據(jù)塊的長度 在 LEN 單元中 請編程檢查這兩個數(shù)據(jù)塊是否相等 若相等 將 0FFH 寫入 RESULT 單元 否則 將 0 寫入 RESULT 單元 解 從 DATA1 開始的指針用 R0 從 DATA2 開始的指針用 R1 計(jì)數(shù)器用 R7 LEN EQU 10 DATA1 EQU 30H DATA2 EQU 40H RESULT EQU 50H MOV R7 LEN 字節(jié)計(jì)數(shù)器賦 初值 MOV R0 DATA1 設(shè)片內(nèi) RAM 地址指針初值 MOV R1 DATA2 設(shè)片外 RAM 地址指針初值 CONT MOV A R0 取片內(nèi) RAM R0 所指的的一個字節(jié) MOV 7FH R1 將 R1 所指單元內(nèi)容取到片內(nèi) RAM 地址 7FH 中 CJNE A 7FH NOEQ 比較 不相等則結(jié)束 INC R0 DATA1 RAM 地址指 針加 1 INC R1 DATA2 RAM 地址指 針加 1 DJNZ R7 CONT 未完 繼續(xù) MOV A 0FFH 相等 準(zhǔn)備寫入 FFH SJMP DOWN 轉(zhuǎn)寫入結(jié)果處 NOEQ MOV A 0 不相等 準(zhǔn)備寫入 00H DOWN MOV RESULT A 保存比較結(jié)果標(biāo)志 SJMP 暫停 END 11 編 制程序 將內(nèi)部 RAM 中 M1 M2 M3 和 M4 單元中的無符號數(shù) xl x2 x3 和 x4 相加 并把和存入 RO 和 R1 R0 中為高 8 位 中 解 M1 EQU 30H M2 EQU 40H M3 EQU 45H M4 EQU 4FH MOV A M1 取第一個數(shù) ADD A M2 與第二個數(shù)相加 JNC NEXT1 如果無進(jìn)位 則轉(zhuǎn) 移至第三個相加 MOV R0 1 有進(jìn)位 高 8 位置 1 NEXT1 ADD A M3 與第三個數(shù)相加 JNC NEXT2 沒有進(jìn)位 則轉(zhuǎn) 至第四個數(shù)相加 INC R0 有進(jìn)位 高 8 位加 1 NEXT2 ADD A M4 與第四個數(shù)相加 JNC NEXT3 沒有進(jìn)位 則轉(zhuǎn) 至結(jié)束 INC R0 有進(jìn)位 高 8 位再加 1 NEXT3 MOV R1 A 低 8 位保存到 R1 SJMP 暫停 END 第 4 章 單片機(jī)的 C51 語言 習(xí)題 1 C 語言的優(yōu)點(diǎn)是什么 C 程序的主要結(jié)構(gòu)特點(diǎn)是什么 答 C 語 言是一種高 級語言 學(xué)習(xí)比低級容易 不需要具體組織 分配存儲器資源和處理端口 數(shù)據(jù) 可以直接驅(qū)動單片機(jī)的所有資源 C 程序以函數(shù) 為單 位 由一個主函數(shù)和若干個其他函數(shù)構(gòu)成 主函數(shù)是程序的入口 其他函數(shù) 由主函數(shù)直接或間接調(diào)用 程序可以由一個文件或多個文件組成 文件類型包括頭文件和 C 語言源 文件 也可以是匯編語言文件 C 程序可與匯編語言混合編程 2 C51 語言的變量定義包含哪些關(guān) 鍵因素 為何這樣考慮 答 C 語 言的變 量定義格式如下 存儲種類 數(shù)據(jù)類型 存儲類型 變量名 其中 存儲種類與標(biāo)準(zhǔn) C 語言相同 包括 自動型 auto 外部型 extern 靜態(tài)型 static 寄存 器型 register 數(shù)據(jù)類型除了包含標(biāo)準(zhǔn) C 語言類型的字符型 char 整型 int 長整型 long 浮點(diǎn)型 float 雙精度型 double 外 還有二進(jìn)制位型 bit 特殊功能寄存器型 sfr SFR 可位尋址的位類型 sbit 存儲類型包括 片內(nèi) RAM 區(qū) data 片內(nèi)可位尋址區(qū) bdata 片內(nèi) RAM 間接尋址區(qū) idata 片外 RAM 頁尋 址區(qū) pdata 片外 RAM 區(qū) xdata ROM 區(qū) code 只所以比標(biāo)準(zhǔn) C 語言多了存儲類型 就是因?yàn)?MCS 51 單片機(jī)的存儲結(jié)構(gòu)中有四個物理存儲 空間 片內(nèi) RAM 片內(nèi) ROM 片外 RAM 片外 ROM 三個邏輯地址空間 片內(nèi) RAM 片外 RAM ROM 而且有多種尋址方式 直接尋址 間接尋址 頁面尋址 位尋址 所致 所以在定 義變量時 要根據(jù)其所在位置和尋址方式明確指定存儲類型 3 C51 與匯編語言的特點(diǎn)各有哪些 怎 樣實(shí)現(xiàn)兩者的優(yōu)勢互 補(bǔ) 答 C51 是結(jié)構(gòu)化 語言 代碼緊湊 接近自然語言 程序可讀性強(qiáng) 易于調(diào)試 維護(hù) 庫函數(shù) 豐富 編程工作量小 可使產(chǎn)品開發(fā)周期短 具有機(jī)器級控制能力 功能很強(qiáng) 適合于嵌入式系統(tǒng) 開發(fā) 匯編指令無關(guān) 易于掌握 上手快 匯編語言優(yōu)點(diǎn)是編寫的程序代碼精煉 執(zhí)行速度快 在相同功能下 匯編語言程序可能比 C 語 言程序效率高 缺點(diǎn)是對程序員要求高 必須對單片機(jī)的硬件結(jié)構(gòu)非常熟悉才能編程 不便于編寫 比較復(fù)雜的程序 可根據(jù)需要對要求時間性很強(qiáng)的代碼用匯編語言編寫 其它部分用 C 語言編寫 兩者混合編程 就可以實(shí)現(xiàn)優(yōu)勢互補(bǔ) 4 指出下面程序的語法錯誤 include main a C int a 7 C delay 10 void delay cgar i for i O i 255 答 include main a C a 和 C 必須先定義才可使用 int a 7 C 缺分號 應(yīng)該提在使用前 說明 delay 10 延 時子程序必須先定義 或先有函數(shù)原型說明 void delay 作為函數(shù)定義 有函數(shù)定義不能嵌套的問題 即不能在一個函數(shù)內(nèi)定義另一個函數(shù) 而且 前不應(yīng)有分號 作為函數(shù)原型說明 應(yīng)該放在函數(shù)調(diào)用之前 且其后不應(yīng)該接函數(shù)體 cgar i 字符型 應(yīng)該是 unsigned char for i O i 255 應(yīng)改成 i 主函數(shù)沒有結(jié)束 缺 5 定義變量 a b c 其中 a 為內(nèi)部 RAM 的可位尋址區(qū)的字符變量 b 為外部數(shù)據(jù)存儲區(qū)浮 點(diǎn)型變量 c 為 指向 int 型 xdata 區(qū)的指針 答 char bdata a float xdata b int xdata c 6 編程將 8051 的內(nèi)部數(shù)據(jù)存 儲器 20H 單元和 35H 單元的數(shù)據(jù)相乘 結(jié)果存到外部數(shù)據(jù) 存儲器中 任意位置 解 方法一 用嵌入式匯編語言實(shí)現(xiàn) include void main pragma asm MOV A 20H MOV B 35H MUL AB MOV DPTR 1234H MOVX DPTR A INC DPTR MOV A B MOVX DPTR A pragma endasm 方法二 單用 C 語言編程實(shí)現(xiàn) include include int movdata char void main unsigned int xdata x unsigned char ptr a b ptr 0 x25 a ptr ptr 0 x30 b ptr x a b 7 8051 的片內(nèi)數(shù)據(jù)存儲器 25H 單元中存放有一個 0 10 的整數(shù) 編程求其平方根 精確 到 5 位有效數(shù)字 將平方根放到 30H 單元為首址的內(nèi)存中 解 方法一 用 C 語言與匯編語言混合編程實(shí)現(xiàn) 用 C 語言編寫的主函數(shù) MAIN C include include char getdata char void main char a 0 x25 c float f c getdata a f sqrt c 用匯編語言編寫的取數(shù)據(jù)子函數(shù) 只有一個地址參數(shù)在 R7 中 返回值為指定地址單元中的內(nèi) 容 用 R7 返回主函數(shù) PUBLIC GETDATA DE SEGMENT CODE RSEG DE GETDATA MOV A R7 取地址參數(shù) MOV R0 A MOV A R0 MOV R7 A 返回地址單元中的內(nèi)容 EXIT RET END 方法二 單用 C 語言編程實(shí)現(xiàn) MAIN C include include int movdata char void main char n char ptr float ptr2 float f ptr 0 x25 n ptr f sqrt n ptr2 0 x30 ptr2 f 8 將外部 RAM 10H 15H 單元的內(nèi)容傳送到內(nèi)部 RAM 10H 15H 單元 解 方法一 采用 C 語 言與匯編語 言混合編程 用 C 語言編寫的主函數(shù) MAIN C include char movdata char char void main char a 0 x10 b 0 x06 movdata a b 用匯編語言編寫的移動數(shù)據(jù)子函數(shù) MOVDATA 其中第一個參數(shù)在 R7 中為首地址 第二個 參數(shù)在 R5 中為 字節(jié)數(shù) PUBLIC MOVDATA DE SEGMENT CODE RSEG DE MOVDATA MOV A R7 取參數(shù) MOV R0 A LOOP MOVX A R0 MOV R0 A DJNZ R5 LOOP EXIT RET END 方法二 單用 C 語言編程實(shí)現(xiàn) MAIN C include int movdata char void main char n 6 char ptr1 0 x10 char xdata ptr2 ptr2 0 x20 while n ptr2 ptr1 9 內(nèi)部 RAM 20H 21H 和 22H 23H 單元分別存放著兩個無符號的 16 位數(shù) 將其中的 大數(shù)置于 24H 和 25H 單元 解 方法一 include void main unsigned int ptr 設(shè)置一個內(nèi)部 RAM 指針 unsigned int x y z ptr 0 x20 指向 0 x20 單元 x ptr 取第一個數(shù) ptr 0 x22 指向 0 x22 單元 y ptr 取第二個數(shù) z x y x y 將兩數(shù)中的較大者賦給 z ptr 0 x24 指向地址為 0 x24 的目標(biāo)單元 ptr z 將大數(shù)存入目標(biāo)單元 方法二 include include void main unsigned int x y z x DBYTE 0X20 256 DBYTE 0X21 y DBYTE 0X22 256 DBYTE 0X23 z x y x y 將兩數(shù)中的較大者賦給 z DBYTE 0X24 z 256 DBYTE 0X25 z 256 方法三 include unsigned int x at 0 x20 unsigned int y at 0 x22 unsigned int z at 0 x24 void main z x y x y 第 4 章 單片機(jī)的 C51 語言 習(xí)題 1 C 語言的優(yōu)點(diǎn)是什么 C 程序的主要結(jié)構(gòu)特點(diǎn)是什么 答 C 語 言是一種高 級語言 學(xué)習(xí)比低級容易 不需要具體組織 分配存儲器資源和處理端口 數(shù)據(jù) 可以直接驅(qū)動單片機(jī)的所有資源 C 程序以函數(shù) 為單 位 由一個主函數(shù)和若干個其他函數(shù)構(gòu)成 主函數(shù)是程序的入口 其他函數(shù) 由主函數(shù)直接或間接調(diào)用 程序可以由一個文件或多個文件組成 文件類型包括頭文件和 C 語言源 文件 也可以是匯編語言文件 C 程序可與匯編語言混合編程 2 C51 語言的變量定義包含哪些關(guān) 鍵因素 為何這樣考慮 答 C 語 言的變 量定義格式如下 存儲種類 數(shù)據(jù)類型 存儲類型 變量名 其中 存儲種類與標(biāo)準(zhǔn) C 語言相同 包括 自動型 auto 外部型 extern 靜態(tài)型 static 寄存 器型 register 數(shù)據(jù)類型除了包含標(biāo)準(zhǔn) C 語言類型的字符型 char 整型 int 長整型 long 浮點(diǎn)型 float 雙精度型 double 外 還有二進(jìn)制位型 bit 特殊功能寄存器型 sfr SFR 可位尋址的位類型 sbit 存儲類型包括 片內(nèi) RAM 區(qū) data 片內(nèi)可位尋址區(qū) bdata 片內(nèi) RAM 間接尋址區(qū) idata 片外 RAM 頁尋 址區(qū) pdata 片外 RAM 區(qū) xdata ROM 區(qū) code 只所以比標(biāo)準(zhǔn) C 語言多了存儲類型 就是因?yàn)?MCS 51 單片機(jī)的存儲結(jié)構(gòu)中有四個物理存儲 空間 片內(nèi) RAM 片內(nèi) ROM 片外 RAM 片外 ROM 三個邏輯地址 空間 片內(nèi) RAM 片外 RAM ROM 而且有多種尋址方式 直接尋址 間接尋址 頁面尋址 位尋址 所致 所以在定義變量時 要根據(jù)其所在位置和尋址方式明確指定存儲類型 3 C51 與匯編語言的特點(diǎn)各有哪些 怎 樣實(shí)現(xiàn)兩者的優(yōu)勢互 補(bǔ) 答 C51 是結(jié)構(gòu)化 語言 代碼緊湊 接近自然語言 程序可讀性強(qiáng) 易于調(diào)試 維護(hù) 庫函數(shù) 豐富 編程工作量小 可使產(chǎn)品開發(fā)周期短 具有機(jī)器級控制能力 功能很強(qiáng) 適合于嵌入式系統(tǒng) 開發(fā) 匯編指令無關(guān) 易于掌握 上手快 匯編語言優(yōu)點(diǎn)是編寫的程序代碼精煉 執(zhí)行速度快 在相同功能下 匯編語言程序可能比 C 語 言程序效率高 缺點(diǎn)是對程序員要求高 必須對單片機(jī)的硬件結(jié)構(gòu)非常熟悉才能編程 不便于編寫 比較復(fù)雜的程序 可根據(jù)需要對要求時間性很強(qiáng)的代碼用匯編語言編寫 其它部分用 C 語言編寫 兩者混合編程 就可以實(shí)現(xiàn)優(yōu)勢互補(bǔ) 4 指出下面程序的語法錯誤 include main a C int a 7 C delay 10 void delay cgar i for i O i 255 答 include main a C a 和 C 必須先定義才可使用 int a 7 C 缺分號 應(yīng)該提在使用前 說明 delay 10 延 時子程序必須先定義 或先有函數(shù)原型說明 void delay 作為函數(shù)定義 有函數(shù)定義不能嵌套的問題 即不能在一個函數(shù)內(nèi)定義另一個函數(shù) 而且 前不應(yīng)有分號 作為函數(shù)原型說明 應(yīng)該放在函數(shù)調(diào)用之前 且其后不應(yīng)該接函數(shù)體 cgar i 字符型 應(yīng)該是 unsigned char for i O i 255 應(yīng)改成 i 主函數(shù)沒有結(jié)束 缺 5 定義變量 a b c 其中 a 為內(nèi)部 RAM 的可位尋址區(qū)的字符變量 b 為外部數(shù)據(jù)存儲區(qū)浮 點(diǎn)型變量 c 為 指向 int 型 xdata 區(qū)的指針 答 char bdata a float xdata b int xdata c 6 編程將 8051 的內(nèi)部數(shù)據(jù)存 儲器 20H 單元和 35H 單元的數(shù)據(jù)相乘 結(jié)果存到外部數(shù)據(jù) 存儲器中 任意位置 解 方法一 用嵌入式匯編語言實(shí)現(xiàn) include void main pragma asm MOV A 20H MOV B 35H MUL AB MOV DPTR 1234H MOVX DPTR A INC DPTR MOV A B MOVX DPTR A pragma endasm 方法二 單用 C 語言編程實(shí)現(xiàn) include include int movdata char void main unsigned int xdata x unsigned char ptr a b ptr 0 x25 a ptr ptr 0 x30 b ptr x a b 7 8051 的片內(nèi)數(shù)據(jù)存儲器 25H 單元中存放有一個 0 10 的整數(shù) 編程求其平方根 精確 到 5 位有效數(shù)字 將平方根放到 30H 單元為首址的內(nèi)存中 解 方法一 用 C 語言與匯編語言混合編程實(shí)現(xiàn) 用 C 語言編寫的主函數(shù) MAIN C include include char getdata char void main char a 0 x25 c float f c getdata a f sqrt c 用匯編語言編寫的取數(shù)據(jù)子函數(shù) 只有一個地址參數(shù)在 R7 中 返回值為指定地址單元中的內(nèi) 容 用 R7 返回主函數(shù) PUBLIC GETDATA DE SEGMENT CODE RSEG DE GETDATA MOV A R7 取地址參數(shù) MOV R0 A MOV A R0 MOV R7 A 返回地址單元中的內(nèi)容 EXIT RET END 方法二 單用 C 語言編程實(shí)現(xiàn) MAIN C include include int movdata char void main char n char ptr float ptr2 float f ptr 0 x25 n ptr f sqrt n ptr2 0 x30 ptr2 f 8 將外部 RAM 10H 15H 單元的內(nèi)容傳送到內(nèi)部 RAM 10H 15H 單元 解 方法一 采用 C 語言與匯編語言混合編程 用 C 語言編寫的主函數(shù) MAIN C include char movdata char char void main char a 0 x10 b 0 x06 movdata a b 用匯編語言編寫的移動數(shù)據(jù)子函數(shù) MOVDATA 其中第一個參數(shù)在 R7 中為首地址 第二個 參數(shù)在 R5 中為 字節(jié)數(shù) PUBLIC MOVDATA DE SEGMENT CODE RSEG DE MOVDATA MOV A R7 取參數(shù) MOV R0 A LOOP MOVX A R0 MOV R0 A DJNZ R5 LOOP EXIT RET END 方法二 單用 C 語言編程實(shí)現(xiàn) MAIN C include int movdata char void main char n 6 char ptr1 0 x10 char xdata ptr2 ptr2 0 x20 while n ptr2 ptr1 9 內(nèi)部 RAM 20H 21H 和 22H 23H 單元分別存放著兩個無符號的 16 位數(shù) 將其中的 大數(shù)置于 24H 和 25H 單元 解 方法一 include void main unsigned int ptr 設(shè)置一個內(nèi)部 RAM 指針 unsigned int x y z ptr 0 x20 指向 0 x20 單元 x ptr 取第一個數(shù) ptr 0 x22 指向 0 x22 單元 y ptr 取第二個數(shù) z x y x y 將兩數(shù)中的較大者賦給 z ptr 0 x24 指向地址為 0 x24 的目標(biāo)單元 ptr z 將大數(shù)存入目標(biāo)單元 方法二 include include void main unsigned int x y z x DBYTE 0X20 256 DBYTE 0X21 y DBYTE 0X22 256 DBYTE 0X23 z x y x y 將兩數(shù)中的較大者賦給 z DBYTE 0X24 z 256 DBYTE 0X25 z 256 方法三 include unsigned int x at 0 x20 unsigned int y at 0 x22 unsigned int z at 0 x24 void main z x y x y 第 5 章 單片機(jī)的中斷系 統(tǒng) 習(xí)題 1 什么是中斷 中斷源 中斷優(yōu)先級和中斷嵌套 答 中斷是指單片機(jī)內(nèi)部有一個中斷管理系統(tǒng) 它對內(nèi)部的定時器事件 串行通信的發(fā)送和接 收及外部事件 如鍵盤按鍵動作 等進(jìn)行自動的檢測判斷 當(dāng) CPU 正在處理某件事情 例如正在執(zhí) 行主程序 的時候 外部或內(nèi)部發(fā)生的某一事件 如某個引腳上電平的變化 一個脈沖沿的發(fā)生或 計(jì)數(shù)器的計(jì)數(shù)溢出等 請求 CPU 迅速處理 于是 中斷管理系統(tǒng)會置位相應(yīng)標(biāo)志通知 CPU 暫時中 止當(dāng)前的工作 迅速轉(zhuǎn)去處理所發(fā)生的事件 處理完該事件后 再回到原來被中止的地方 繼續(xù)原 來的工作 這樣的過程稱為中斷 引發(fā)中斷的事件稱為中斷源 將中斷事件按輕重緩急分若干級別叫中斷優(yōu)先級 允許中斷優(yōu)先級高的中斷源中斷正在執(zhí)行的低優(yōu)先級的中斷服務(wù)程序叫中斷嵌套 2 什么叫中斷源 MCS 51 有哪些中斷源 各有什么特點(diǎn) 它們的中斷向量地址分別是多少 答 中斷源即引發(fā)中斷的事件 MCS 51 單片機(jī)有 5 個中斷源 它們是外部中斷 0 定時器 T0 外部中斷 1 定時器 T1 串行口 外部中斷源是由引腳的觸發(fā)信號引起的中斷 定時器中斷源是由于定時器計(jì)數(shù)器的溢出引發(fā)的 中斷 串行口是由于串行通信的發(fā)送或接收引發(fā)的中斷 外部中斷 0 定 時器 T0 外部中斷 1 定時器 T1 串行口五個中斷源的中斷向量地址依次為 0003H 000BH 0013H 001BH 0023H 3 MCS 51 中斷的中斷響應(yīng)條件是什么 答 1 中斷源有中斷請求 2 此中斷源允許位為 1 即中斷源可以向 CPU 發(fā)中斷請求 3 CPU 開總中斷 即 EA 1 4 無同 級或者更高級中斷正在服務(wù) 4 MCS 51 的中斷響應(yīng)過程是怎樣的 答 1 將相應(yīng)的中斷優(yōu)先級狀態(tài)觸發(fā)器置 1 以阻斷后來的同 級和低級中斷請求 2 由硬件清除相應(yīng)的中斷請求標(biāo)志 串行口的發(fā)送和接收中斷除外 3 執(zhí)行一條硬件 LCALL 指令 即把程序 計(jì)數(shù)器 PC 的內(nèi)容壓 入堆棧保存 再將相應(yīng)的中斷 服務(wù)程序的入口地址送入 PC 5 編寫出外部中斷 1 為下跳沿觸 發(fā)的中斷初始化程序 解 void Int1 init IT1 1 EA 1 EX1 1 IE 0 x84 IE 0 x84 6 有一外部中斷源 接入 INT0 端 當(dāng)其中有中斷請求時 要求 CPU 把一個從內(nèi)部 RAM 30H 單元開始的 50 個字節(jié)的數(shù)據(jù)塊傳送到外部 RAM 從 1000H 開始的連續(xù)存儲區(qū) 請編寫對應(yīng) 的程序 解 include void main IT0 1 EA 1 EX0 1 while 1 void intx0 interrupt 0 using 1 char ptr1 0 x30 char xdata ptr2 0 x1000 for i 0 i 50 i ptr2 ptr1 7 設(shè) fosc 12MHz 利用定時器 TO 工作在方式 2 在 P1 1 引腳上獲取輸出周期為 O 4ms 的方波信號 定時器溢出時采用中斷方式處理 請編寫 T0 的初始化程序及中斷服務(wù)程序 解 fosc 12MHz 則機(jī)器周期 1us 當(dāng) T0 工作在方式 2 時 其最大定時時間為 256us 要 輸出周期 為 0 4mS 即 400us 的方波信號 則其高 低 電平應(yīng)各為 200us 顯然當(dāng)定 時器 T0 按方式 2 工作時 只需計(jì)數(shù)達(dá)到 200 次即可 因此其 時間常數(shù)初值為 256 200 56 在 T0 的中斷服務(wù)程序中 只需將 P1 1 引腳求反即可 include sbit P1 1 P1 1 void timer0 interrupt 1 using 1 P1 1 P1 1 void main P1 1 0 TMOD 0 x02 TH0 56 TL0 56 IE 0 x82 TR0 1 for 8 設(shè) fosc 6MHz 要求每隔 50ms 從內(nèi)部 RAM 以 30H 開始的數(shù)據(jù)存儲區(qū)傳送一個字 節(jié)數(shù)據(jù)到外部 RAM 以 2000H 開始的連續(xù)存儲區(qū) 共傳送 50 個數(shù)據(jù) 要求 采用定時器 T1 以 方式 2 實(shí)現(xiàn)定時 數(shù)據(jù)傳送在中斷服務(wù)程序中完成 解 fosc 6MHz 機(jī)器周期 12 6 10 6S 2us T1 工作在方式 2 時 最大定時時間為 512us 要定 時 50ms 可以計(jì) 數(shù) 100 次 每次定時 500us 來實(shí)現(xiàn) 方式 2 定時 500us 需計(jì)數(shù) 250 次 故其時間常數(shù)為 256 250 6 include char intcnt 0 char movcnt 0 char ptr1 0 x30 char xdata ptr2 0 x2000 void timer1 interrupt 3 using 1 intcnt if intcnt 100 if mocnt 50 ptr2 ptr1 movcnt else EX1 0 intcnt 0 void main TMOD 0 x20 TH1 6 TL1 6 IE 0 x84 TR1 1 for 9 805l 單片機(jī)只有兩個外部中斷源 若要擴(kuò)展成 8 個外部中斷源 請畫出實(shí)現(xiàn)這種擴(kuò)展的 硬件線路圖 并說明如何確定各中斷源的優(yōu)先級 解 用按鈕開關(guān)模擬中斷源的中斷請求 INT0 單獨(dú)作為一個中斷源 INT1 擴(kuò)展成 7 個中斷 源 有中斷請求時 借助于 P2 口識別是這七個中斷源是哪個請 求中斷 為了驗(yàn)證正確性 如果是 INT0 中斷 則 在 P0 口的數(shù)碼管上顯示 0 是 INT1 中斷 則根據(jù)從上到下是哪個中斷源在 P0 口 的數(shù)碼管上顯示 1 7 具體電路和程序如下 include char led mod 0 x3f 0 x06 0 x5b 0 x4f 0 x66 0 x6d 0 x7d 0 x07 void INT0 srv void interrupt 0 using 1 外部中斷 0 處理程序 P0 led mod 0 void INT1 srv void interrupt 2 using 2 外部中斷 1 處理程序 char intnum intnum P2 switch intnum case 0 xfe P0 led mod 1 break case 0 xfd P0 led mod 2 break case 0 xfb P0 led mod 3 break case 0 xf7 P0 led mod 4 break case 0 xef P0 led mod 5 break case 0 xdf P0 led mod 6 break case 0 xbf P0 led mod 7 void main E- 1.請仔細(xì)閱讀文檔,確保文檔完整性,對于不預(yù)覽、不比對內(nèi)容而直接下載帶來的問題本站不予受理。
- 2.下載的文檔,不會出現(xiàn)我們的網(wǎng)址水印。
- 3、該文檔所得收入(下載+內(nèi)容+預(yù)覽)歸上傳者、原創(chuàng)作者;如果您是本文檔原作者,請點(diǎn)此認(rèn)領(lǐng)!既往收益都?xì)w您。
下載文檔到電腦,查找使用更方便
15 積分
下載 |
- 配套講稿:
如PPT文件的首頁顯示word圖標(biāo),表示該P(yáng)PT已包含配套word講稿。雙擊word圖標(biāo)可打開word文檔。
- 特殊限制:
部分文檔作品中含有的國旗、國徽等圖片,僅作為作品整體效果示例展示,禁止商用。設(shè)計(jì)者僅對作品中獨(dú)創(chuàng)性部分享有著作權(quán)。
- 關(guān) 鍵 詞:
- 單片機(jī) 原理 應(yīng)用 第三 林立 張俊亮 課后 答案
鏈接地址:http://ioszen.com/p-10683191.html