歡迎來(lái)到裝配圖網(wǎng)! | 幫助中心 裝配圖網(wǎng)zhuangpeitu.com!
裝配圖網(wǎng)
ImageVerifierCode 換一換
首頁(yè) 裝配圖網(wǎng) > 資源分類 > DOC文檔下載  

單片機(jī)原理及應(yīng)用-第三版-林立-張俊亮課后答案

  • 資源ID:10683191       資源大小:456KB        全文頁(yè)數(shù):52頁(yè)
  • 資源格式: DOC        下載積分:15積分
快捷下載 游客一鍵下載
會(huì)員登錄下載
微信登錄下載
三方登錄下載: 微信開(kāi)放平臺(tái)登錄 支付寶登錄   QQ登錄   微博登錄  
二維碼
微信掃一掃登錄
下載資源需要15積分
郵箱/手機(jī):
溫馨提示:
用戶名和密碼都是您填寫(xiě)的郵箱或者手機(jī)號(hào),方便查詢和重復(fù)下載(系統(tǒng)自動(dòng)生成)
支付方式: 支付寶    微信支付   
驗(yàn)證碼:   換一換

 
賬號(hào):
密碼:
驗(yàn)證碼:   換一換
  忘記密碼?
    
友情提示
2、PDF文件下載后,可能會(huì)被瀏覽器默認(rèn)打開(kāi),此種情況可以點(diǎn)擊瀏覽器菜單,保存網(wǎng)頁(yè)到桌面,就可以正常下載了。
3、本站不支持迅雷下載,請(qǐng)使用電腦自帶的IE瀏覽器,或者360瀏覽器、谷歌瀏覽器下載即可。
4、本站資源下載后的文檔和圖紙-無(wú)水印,預(yù)覽文檔經(jīng)過(guò)壓縮,下載后原文更清晰。
5、試題試卷類文檔,如果標(biāo)題沒(méi)有明確說(shuō)明有答案則都視為沒(méi)有答案,請(qǐng)知曉。

單片機(jī)原理及應(yīng)用-第三版-林立-張俊亮課后答案

第一章習(xí)題 1 什么是單片機(jī) 單片機(jī)和通用微機(jī)相比有何特點(diǎn) 答 單片機(jī)又稱為單片微計(jì)算機(jī) 它的結(jié)構(gòu)特點(diǎn)是將微型計(jì)算機(jī)的基本功能部件 如中央處理 器 CPU 存 儲(chǔ)器 輸入接口 輸出接口 定時(shí) 計(jì)數(shù)器及終端系統(tǒng)等 全部集成在一個(gè)半導(dǎo)體 芯片上 雖然單片機(jī)只是一個(gè)芯片 但無(wú)論從組成還是從邏輯功能上來(lái)看 都具有微機(jī)系統(tǒng)的定義 與通用的微型計(jì)算機(jī)相比 單片機(jī)體積小巧 可以嵌入到應(yīng)用系統(tǒng)中作為指揮決策中心 是應(yīng)用系 統(tǒng)實(shí)現(xiàn)智能化 2 單 片機(jī)的 發(fā)展有哪幾個(gè) 階段 8 位單片機(jī)會(huì)不會(huì)過(guò)時(shí) 為什么 答 單片機(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)域要求的提高 開(kāi) 始出現(xiàn)了 16 位 單片機(jī) 但因?yàn)樾詢r(jià)比不理想并未得到很廣泛的應(yīng)用 90 年代后隨著消費(fèi)電子產(chǎn)品 大發(fā)展 單片機(jī)技術(shù)得到了巨大提高 隨著 INTEL i960 系列特 別是后來(lái)的 ARM 系列的廣泛應(yīng)用 32 位單 片機(jī)迅速取代 16 位單 片機(jī)的高端地位 并且進(jìn)入主流市場(chǎng) 然而 由于各應(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)一段時(shí) 間內(nèi)仍將占據(jù)單片機(jī)應(yīng)用的主導(dǎo)地位 3 舉 例說(shuō) 明單片機(jī)的主要 應(yīng)用領(lǐng)域 答 單片機(jī)廣泛應(yīng)用于儀器儀表 家用電器 醫(yī)用設(shè)備 航空航天 專用設(shè)備的智能化管理及 過(guò)程控制等領(lǐng)域 大致可分如下幾個(gè)范疇 智能儀器 單片機(jī)具有體積小 功耗低 控制功能強(qiáng) 擴(kuò)展靈活 微型化和使用方便等優(yōu)點(diǎn) 廣泛應(yīng)用于 儀器儀表中 結(jié)合不同類型的傳感器 可實(shí)現(xiàn)諸如電壓 電流 功率 頻率 濕度 溫度 流量 速度 厚度 角度 長(zhǎng)度 硬度 元素 壓力等物理量的測(cè)量 采用單片機(jī)控制使得儀器儀表數(shù)字 化 智能化 微型化 且功能比起采用電子或數(shù)字電路更加強(qiáng)大 例如精密的測(cè)量設(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) 信號(hào)檢測(cè)系統(tǒng) 無(wú)線感知系統(tǒng) 測(cè)控系統(tǒng) 機(jī)器人等應(yīng)用控制系統(tǒng) 例如工廠流水線的智能化管理 電梯智能化控制 各種報(bào)警系 統(tǒng) 與計(jì)算機(jī)聯(lián)網(wǎng)構(gòu)成二級(jí)控制系統(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ī) 樓宇自動(dòng)通信呼叫系統(tǒng) 列車無(wú)線通信 再到日常工作中隨處可見(jiàn)的移 動(dòng)電話 集群移動(dòng)通信 無(wú)線電對(duì)講機(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) 如音樂(lè)集成單片機(jī) 看似簡(jiǎn)單的功能 微縮在純電子芯片中 有別于磁帶機(jī)的 原理 就需要復(fù)雜的類似于計(jì)算機(jī)的原理 如 音樂(lè)信號(hào)以數(shù)字的形式存于存儲(chǔ)器中 類似于 ROM 由微控制器讀出 轉(zhuǎn) 化為模擬音樂(lè)電信號(hào) 類似于聲卡 在大型電路中 這種模塊化應(yīng) 用極大地縮小了體積 簡(jiǎn)化了電路 降低了損壞 錯(cuò)誤率 也方便于更換 汽車電子 單片機(jī)在汽 車電子中的應(yīng)用非常廣泛 例如汽車中的發(fā)動(dòng)機(jī)控制器 基于 CAN 總線的汽車發(fā)動(dòng)機(jī)智能電子控 制器 GPS 導(dǎo)航系統(tǒng) abs 防抱死系 統(tǒng) 制動(dòng)系統(tǒng) 胎壓檢測(cè) 等 此外 單片機(jī)在工商 金融 科研 教育 電力 通信 物流和國(guó)防航空航天等領(lǐng)域都有著十 分廣泛的用途 4 將十 進(jìn) 制數(shù) 37 轉(zhuǎn)換為二進(jìn)制 BCD 碼和十六進(jìn)制數(shù) 并對(duì)轉(zhuǎn)換結(jié) 果進(jìn)行對(duì)比分析 答 37 100101 B 25 H BCD 碼為 0011 0111 可見(jiàn) 同一個(gè)數(shù)用不同進(jìn)制表示 其結(jié)果也不同 5 寫(xiě)出下列十進(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 對(duì) 于二 進(jìn)制數(shù) 1000 1001B 若理解為無(wú)符號(hào)數(shù) 則該數(shù)對(duì)應(yīng)十進(jìn)制數(shù)為多少 若理解為 有符號(hào)數(shù) 則該數(shù)對(duì)應(yīng)十進(jìn)制為多少 若理解為 BCD 數(shù) 則該 數(shù)對(duì)應(yīng)十進(jìn)制數(shù)為多少 答 1000 1001B 無(wú)符號(hào)數(shù) 137 有符號(hào)數(shù) 9 BCD 數(shù) 89 7 對(duì) 下列各 組數(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 的工作界面中包含哪幾個(gè)窗口 菜單欄中包含哪幾個(gè)選項(xiàng) 答 Proteus ISIS 的工作界面主要包括標(biāo)題欄 菜單欄 工具欄 狀態(tài)欄 方位控制按鈕 仿真進(jìn)程控制按鈕 對(duì)象選擇窗口 原理圖編輯窗口和預(yù)覽窗口等 主菜單欄包含文件 查看 編輯 工具 設(shè)計(jì) 圖形 源文件 調(diào)試 庫(kù) 模板 系統(tǒng) 幫助 選項(xiàng) 9 利用 ISIS 模塊 開(kāi)發(fā)單片機(jī)系統(tǒng) 需要經(jīng)過(guò)哪幾個(gè)主要步驟 答 1 啟動(dòng) ISIS 2 繪制電路原理 圖 3 輸入單片機(jī)程序 4 進(jìn)行源代碼調(diào)試 5 仿真運(yùn)行 10 何謂 PCB 利用 ARES 模塊進(jìn)行 PCB 設(shè)計(jì)需要經(jīng)過(guò)哪幾個(gè)主要步驟 答 PCB Printed Circuit Board 中文名稱為印制電路板 又稱印刷 電路板 印刷線路 板 是重要的電子部件 是電子元器件的支撐體 是電子元器件電氣連接的提供者 由于它是采用 電子印刷術(shù)制作的 故被稱為 印刷 電路板 利用 ARES 模 塊進(jìn)行 PCB 設(shè)計(jì)的主要步驟 1 啟動(dòng) 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)部功能部件有 控制器 是對(duì)取自程序存儲(chǔ)器中的指令進(jìn)行譯碼 在規(guī)定的時(shí)刻發(fā)出各種操作所需的控制信號(hào) 完成指令所規(guī)定的功能 運(yùn)算器 根據(jù)控制器發(fā)來(lái)的信號(hào) 執(zhí)行算術(shù)邏輯運(yùn)算操作 存儲(chǔ)器 包括程序存儲(chǔ)和數(shù)據(jù)存儲(chǔ)器 定時(shí)器計(jì)數(shù)器 2 個(gè) 16 位定時(shí)器 計(jì)數(shù)器 可對(duì)機(jī)器周期計(jì)數(shù) 也可 對(duì)外部輸入脈沖計(jì)數(shù) 中斷系統(tǒng) 可響應(yīng)三個(gè)內(nèi)部中斷源和兩個(gè)外部中斷源的中斷請(qǐng)求 輸入輸出接口 4 個(gè) 8 位并行口和一個(gè)全雙工串行口 2 MSC 51 單 片機(jī)外部引腳的名稱是什么 各有什么功能 答 1 電源及晶振引腳 VCC 40 腳 5V 電源引腳 VSS 20 腳 接地引腳 XTAL1 19 腳 外接晶振引腳 內(nèi)置放大器輸入端 XTAL2 18 腳 外接晶振引腳 內(nèi)置放大器輸出端 2 控制引腳 RST VPD 9 為復(fù)位 備用電源引腳 為地址鎖存使能輸出 編程脈沖 輸入 輸出訪問(wèn)片外程序存儲(chǔ)器讀選通信號(hào) 外部 ROM 允 許訪問(wèn) 編程電源輸入 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ī)的封裝有哪些類型 請(qǐng)說(shuō)明每一種封裝引腳之間的距離 答 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)成 通過(guò)上 電時(shí) 電容相當(dāng)于短路而使復(fù)位 引腳在晶振有效的情況下保持 2 個(gè)機(jī)器周期的高電平 按鈕開(kāi)關(guān)復(fù)位電路 由兩個(gè)電阻的分壓構(gòu)成 通過(guò)手工按下按鈕 使復(fù)位引腳在晶振有效的情況下保持 2 個(gè)機(jī)器周期的高電平 5 通常的微機(jī)系統(tǒng)存儲(chǔ)器結(jié)構(gòu)有哪幾種 MCS 51 單片機(jī)存儲(chǔ)器屬于哪一類 CS 51 可尋 址多大空間 答 通常的微機(jī)系統(tǒng)存儲(chǔ)器結(jié)構(gòu)有兩種結(jié)構(gòu) 即哈佛結(jié)構(gòu)和馮諾依曼結(jié)構(gòu) 也叫普林斯頓結(jié)構(gòu) MCS 51 單片機(jī)存儲(chǔ)器屬于 MCS 51 可尋址空間是兩個(gè) 64KB 即 64KB 的程序存儲(chǔ)空間和 64KB 的數(shù)據(jù)存 儲(chǔ)空間 6 片內(nèi) RAM 中低 128 個(gè)單元?jiǎng)澐譃槟娜齻€(gè)主要部分 各部分的主要 功能是什么 答 片內(nèi) RAM 中低 128 個(gè)單元?jiǎng)澐譃槿齻€(gè)部分 工作寄存器區(qū) 00H 1FH 四組 每組 8 個(gè) 可作用工作寄存器切換使用 可位尋址區(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)位時(shí)置 1 減法有借位時(shí)置 1 PSW 6 輔助 進(jìn)位標(biāo)志 AC 加法運(yùn)算低四位向高 上四位有進(jìn)位時(shí)置 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 有符號(hào)數(shù)加 減運(yùn)算結(jié)果有溢出或乘除上結(jié)果異常 乘法運(yùn)算結(jié)果 大于 255 即乘積在 BA 中 或除法運(yùn)算除數(shù)為 0 時(shí)置 1 PSW 0 奇偶標(biāo)志位 P 累加器 A 中 1 的個(gè)數(shù)為奇數(shù)時(shí)置 1 8 什么是時(shí)鐘周期 什么是機(jī)器周期 什么是指令周期 當(dāng)振蕩頻率為 12MHz 時(shí) 一個(gè)機(jī) 器周期為多少微秒 答 時(shí)鐘周期又叫振蕩周期或拍 用 P 表示 是 MCS 51 單 片機(jī)中最小的時(shí)間單位 在一個(gè) 時(shí)鐘周期內(nèi) CPU 完成一個(gè)最基本的動(dòng)作 機(jī)器周期 由 12 個(gè)時(shí)鐘周期構(gòu)成 完成一個(gè)基本操作 指令周期 是執(zhí)行一條指令所需的時(shí)間 根據(jù)指令的復(fù)雜性 可由 1 4 個(gè)機(jī)器周期構(gòu)成 當(dāng)振蕩頻率為 12MHz 時(shí) 一個(gè)機(jī)器周期 為 1 微秒 9 P0 P1 P2 和 P3 口的結(jié)構(gòu)和功能分別是什么 答 P0 口的每一位由 1 個(gè)鎖存器 2 個(gè)三態(tài)緩沖器 1 個(gè)輸出控制電路 非門(mén) X 與門(mén) 電子開(kāi)關(guān) MUX 輸出驅(qū)動(dòng)電路構(gòu)成 其功能既可以作為通用 I O 口實(shí)現(xiàn)輸入 輸出功能 也可作為 單片機(jī)地址線的低 8 位和數(shù)據(jù)線實(shí)現(xiàn)外部擴(kuò)展功能 在用作輸入輸出口時(shí) 需外接上拉電阻 P1 口的每一位由 1 個(gè)鎖存器 1 個(gè)場(chǎng)效應(yīng)管驅(qū)動(dòng)器 V 和 2 個(gè)三 態(tài)門(mén)緩沖器構(gòu)成 其作用是 用作輸入輸出口 P2 口的每一位由 1 個(gè)鎖存器 2 個(gè)三態(tài)緩沖器 1 個(gè)輸出控制單元 1 個(gè)輸出驅(qū)動(dòng)單元構(gòu)成 其功能是用作輸入輸出口 或地址總線的高 8 位 P3 口的每一位由 1 個(gè)鎖存器 2 個(gè)三態(tài)緩沖器 1 個(gè)第二功能控制單元 1 個(gè)輸出驅(qū)動(dòng)單元 構(gòu)成 其作用是用作輸入輸出口或第二功能 10 51 單片機(jī)引腳 ALE 的作用是什么 當(dāng) 51 不外接存儲(chǔ)器時(shí) ALE 上的輸出的脈沖頻率 是多少 答 51 單片機(jī)引腳 ALE 的作用是對(duì)外部存儲(chǔ)尋址時(shí)鎖存 P0 口輸出的低 8 位地址 當(dāng) 51 不 外接存儲(chǔ)器時(shí) ALE 上的輸出的脈沖頻率是 fosc 6 第 3 章 單片機(jī)的 匯編語(yǔ)言與程序設(shè)計(jì) 習(xí)題 1 MCS 51 單片機(jī)有哪幾種尋址方式 適用于什么地址空間 答 MCS 51 單片機(jī)有 7 種尋址方式 直接尋址 寄存器尋址 寄存器間接尋址 立即尋址 變址尋址 位尋址 相對(duì)尋址 直接尋址方式 操作數(shù)的地址由指令直接給出 適用于片內(nèi) RAM 的所有地址空間 如 MOV A 68H MOV A PSW 寄存器尋址方式 指令給出的是寄存器的編碼 操作數(shù)在編碼指定的寄存器中 適用于片內(nèi) 00H 至 1FH 的 32 個(gè)字節(jié) 用 R0 R7 表示 通過(guò) PSW 的 RS1 和 RS0 選擇組號(hào)確定對(duì)應(yīng) 32 個(gè)字 節(jié)中的其中 8 個(gè) 還有累加器 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ù)對(duì)片內(nèi) RAM 所有地址單 元賦值 也可用 16 位立即數(shù)對(duì) DPTR 賦值 如 MOV A 0E2H MOV DPTR 2000H 變址尋址方式 以 DPTR 或 PC 作為基地址寄存器 以累加器 A 作為變址寄存器 將基址寄存 器與變址寄存器的內(nèi)容相加形成操作數(shù)的實(shí)際地址的一種尋址方式 變址尋址方式適用于程序存儲(chǔ) 器 ROM 僅有三條指令如下 MOVC A A DPTR MOVC A A PC JMP A DPTR 位尋址方式 指令中直接給出操作數(shù)所在單元的位地址 適用于片內(nèi) RAM 中地址 20H 至 2FH 中的 16 個(gè)字 節(jié)中的 128 個(gè)位地址空間和 80H 至 FFH 中地址中可以被 8 整除的所有 SFR 中的每個(gè)位地址空間 如 MOV C 7FH MOV F0 C MOV C ACC 7 相對(duì)尋址方式 為相對(duì)轉(zhuǎn)移指令而設(shè) 指令中直接給出轉(zhuǎn)移的相對(duì)偏移量 其轉(zhuǎn)移目標(biāo)在當(dāng)前 指令 128 至 127 字節(jié)范圍 內(nèi)的地址空間 如 SJMP START HERE SJMP HERE 等效于 SJMP 2 MCS 51 單片機(jī)的 PSW 程序狀態(tài)字中無(wú) ZERO 零 標(biāo)志位 怎樣判斷某內(nèi)部數(shù)據(jù)單元的 內(nèi)容是否為零 答 MCS 51 單片機(jī)的 PSW 程序狀態(tài)字中無(wú) ZERO 零 標(biāo)志位 判斷某內(nèi)部數(shù)據(jù)單元的內(nèi)容 是否為零是能通過(guò)取數(shù)到 A 累加器 再判斷 A 中的每一位是否 為零來(lái)確定其值是否為零 3 編程將內(nèi)部 RAM 的 20H 30H 單元內(nèi)容清零 解 設(shè)一個(gè)片內(nèi) RAM 指針 R0 先指向首地址 20H 通過(guò)累加器 A 清零 然后采用間接尋址 方式依次將 A 中的零 值傳送到指 針?biāo)傅钠瑑?nèi) RAM 單元 每傳送一個(gè)字節(jié) 地址指針加 1 直到 達(dá)到地址為 30H 或達(dá)到計(jì)數(shù)器 規(guī)定的 17 個(gè)字節(jié)為止 程序 1 MOV R0 20H 設(shè)地址指針初值 CLR A 累加器清 0 CONT MOV R0 A 置 0 指針?biāo)竼卧?INC R0 地址指針加 1 CJNE R0 31H CONT 指針未超過(guò)終點(diǎn)則繼續(xù) SJMP 暫停 程序 2 MOV R0 20H 設(shè)地址指針初值 CLR A 累加器清 0 MOV R7 17 計(jì)數(shù)器賦初值 從 20H 到 30H 共 17 個(gè)字 節(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 這個(gè)數(shù)據(jù) 若有這一數(shù)據(jù) 則將 50H 單元置為 0FFH 否則將 50H 單元清零 解 設(shè)一個(gè)片內(nèi) RAM 指針 R0 先指向首地址 32H 比較 R0 與 0AAH 若相等 則退出 循環(huán) 給 50H 單元賦 0FFH 若不相等 則 R0 加 1 為繼續(xù)比較下一個(gè)字節(jié)做準(zhǔn)備 直到達(dá)到地 址為 41H 或達(dá)到 計(jì)數(shù)器規(guī)定的 16 個(gè)字節(jié)為止還沒(méi)找到 則給 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 若指針未越過(guò)終點(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 個(gè)字 節(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 個(gè)字 節(jié) MOV R7 48 字節(jié)計(jì)數(shù)器賦 初值 MOV R0 20H 設(shè)地址指針初值 CONT CJNE R0 00H NEXT 比較查找值與指針?biāo)竼卧闹?不相等轉(zhuǎn)移 INC R6 相等 0 的個(gè)數(shù) 計(jì)數(shù)器加 1 NEXT INC R0 修改地址指針 DJNZ R7 CONT 計(jì)數(shù)器減 1 非 0 則繼續(xù) MOV 50H R6 保存 O 的個(gè)數(shù)計(jì)數(shù)值到 50H 單元 SJMP 暫停 END END 6 已知 A 83H R0 17H 17H 34H 寫(xiě)出下列程序段 執(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ì)延時(shí)為 0 1s 1s 的子程序 答 已知單片 機(jī)的晶振頻率為 12MHz 則機(jī)器周期 為 1us 延時(shí)子程序是通過(guò)執(zhí)行指令序列中機(jī)器周期數(shù)來(lái)達(dá) 到 如果要 0 1s 即 100ms 也就是 100000us 所以需要機(jī)器周期數(shù)達(dá)到 100000 要延時(shí) 達(dá)到 1S 可通過(guò)對(duì) 延時(shí)為 0 1 秒的子程序調(diào)用 10 次來(lái)實(shí)現(xiàn) DELAY100MS MOV R6 200 1 個(gè)機(jī)器周期 D1 MOV R7 250 1 個(gè)機(jī)器周期 D2 NOP 1 個(gè)機(jī)器周期 DJNZ R7 D2 2 個(gè)機(jī)器周期 3 251 753 DJNZ R6 D1 2 個(gè)機(jī)器周期 1 753 2 132 99792 RET 2 個(gè)機(jī)器周期 1 99792 2 99795 約 100ms DELAY1S MOV R7 10 計(jì)數(shù) 10 次 1 LOOP ACALL DELAY100MS 延時(shí) 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 單元開(kāi)始處有一數(shù)據(jù)塊 以 ODH 為結(jié)束標(biāo)志 試統(tǒng)計(jì)該數(shù)據(jù)塊的長(zhǎng)度 將該數(shù)據(jù)塊送到外部數(shù)據(jù)存儲(chǔ)器 7E01H 開(kāi)始的單元 并將長(zhǎng) 度存入 7E00H 單元 解 從 20H 的指 針用 R0 從外部 RAM7E01 開(kāi)始的指針用 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 中的一個(gè)字節(jié) MOVX DPTR A 存入片外 RAM 指針?biāo)竼卧?INC R7 長(zhǎng)度計(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ù)長(zhǎng)度值 MOVX DPTR A 保存 SJMP 暫停 END 9 內(nèi)部 RAM 從 DATA 開(kāi)始的區(qū)域中存放著 10 個(gè)單字節(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 中的一個(gè)字節(jié)到 ACC DA A JNC NEXT 若無(wú)進(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 單元開(kāi)始處存放著兩個(gè)等長(zhǎng)的數(shù)據(jù)塊 數(shù)據(jù)塊的長(zhǎng)度 在 LEN 單元中 請(qǐng)編程檢查這兩個(gè)數(shù)據(jù)塊是否相等 若相等 將 0FFH 寫(xiě)入 RESULT 單元 否則 將 0 寫(xiě)入 RESULT 單元 解 從 DATA1 開(kāi)始的指針用 R0 從 DATA2 開(kāi)始的指針用 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 所指的的一個(gè)字節(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)備寫(xiě)入 FFH SJMP DOWN 轉(zhuǎn)寫(xiě)入結(jié)果處 NOEQ MOV A 0 不相等 準(zhǔn)備寫(xiě)入 00H DOWN MOV RESULT A 保存比較結(jié)果標(biāo)志 SJMP 暫停 END 11 編 制程序 將內(nèi)部 RAM 中 M1 M2 M3 和 M4 單元中的無(wú)符號(hào)數(shù) xl x2 x3 和 x4 相加 并把和存入 RO 和 R1 R0 中為高 8 位 中 解 M1 EQU 30H M2 EQU 40H M3 EQU 45H M4 EQU 4FH MOV A M1 取第一個(gè)數(shù) ADD A M2 與第二個(gè)數(shù)相加 JNC NEXT1 如果無(wú)進(jìn)位 則轉(zhuǎn) 移至第三個(gè)相加 MOV R0 1 有進(jìn)位 高 8 位置 1 NEXT1 ADD A M3 與第三個(gè)數(shù)相加 JNC NEXT2 沒(méi)有進(jìn)位 則轉(zhuǎn) 至第四個(gè)數(shù)相加 INC R0 有進(jìn)位 高 8 位加 1 NEXT2 ADD A M4 與第四個(gè)數(shù)相加 JNC NEXT3 沒(méi)有進(jìn)位 則轉(zhuǎn) 至結(jié)束 INC R0 有進(jìn)位 高 8 位再加 1 NEXT3 MOV R1 A 低 8 位保存到 R1 SJMP 暫停 END 第 4 章 單片機(jī)的 C51 語(yǔ)言 習(xí)題 1 C 語(yǔ)言的優(yōu)點(diǎn)是什么 C 程序的主要結(jié)構(gòu)特點(diǎn)是什么 答 C 語(yǔ) 言是一種高 級(jí)語(yǔ)言 學(xué)習(xí)比低級(jí)容易 不需要具體組織 分配存儲(chǔ)器資源和處理端口 數(shù)據(jù) 可以直接驅(qū)動(dòng)單片機(jī)的所有資源 C 程序以函數(shù) 為單 位 由一個(gè)主函數(shù)和若干個(gè)其他函數(shù)構(gòu)成 主函數(shù)是程序的入口 其他函數(shù) 由主函數(shù)直接或間接調(diào)用 程序可以由一個(gè)文件或多個(gè)文件組成 文件類型包括頭文件和 C 語(yǔ)言源 文件 也可以是匯編語(yǔ)言文件 C 程序可與匯編語(yǔ)言混合編程 2 C51 語(yǔ)言的變量定義包含哪些關(guān) 鍵因素 為何這樣考慮 答 C 語(yǔ) 言的變 量定義格式如下 存儲(chǔ)種類 數(shù)據(jù)類型 存儲(chǔ)類型 變量名 其中 存儲(chǔ)種類與標(biāo)準(zhǔn) C 語(yǔ)言相同 包括 自動(dòng)型 auto 外部型 extern 靜態(tài)型 static 寄存 器型 register 數(shù)據(jù)類型除了包含標(biāo)準(zhǔn) C 語(yǔ)言類型的字符型 char 整型 int 長(zhǎng)整型 long 浮點(diǎn)型 float 雙精度型 double 外 還有二進(jìn)制位型 bit 特殊功能寄存器型 sfr SFR 可位尋址的位類型 sbit 存儲(chǔ)類型包括 片內(nèi) RAM 區(qū) data 片內(nèi)可位尋址區(qū) bdata 片內(nèi) RAM 間接尋址區(qū) idata 片外 RAM 頁(yè)尋 址區(qū) pdata 片外 RAM 區(qū) xdata ROM 區(qū) code 只所以比標(biāo)準(zhǔn) C 語(yǔ)言多了存儲(chǔ)類型 就是因?yàn)?MCS 51 單片機(jī)的存儲(chǔ)結(jié)構(gòu)中有四個(gè)物理存儲(chǔ) 空間 片內(nèi) RAM 片內(nèi) ROM 片外 RAM 片外 ROM 三個(gè)邏輯地址空間 片內(nèi) RAM 片外 RAM ROM 而且有多種尋址方式 直接尋址 間接尋址 頁(yè)面尋址 位尋址 所致 所以在定 義變量時(shí) 要根據(jù)其所在位置和尋址方式明確指定存儲(chǔ)類型 3 C51 與匯編語(yǔ)言的特點(diǎn)各有哪些 怎 樣實(shí)現(xiàn)兩者的優(yōu)勢(shì)互 補(bǔ) 答 C51 是結(jié)構(gòu)化 語(yǔ)言 代碼緊湊 接近自然語(yǔ)言 程序可讀性強(qiáng) 易于調(diào)試 維護(hù) 庫(kù)函數(shù) 豐富 編程工作量小 可使產(chǎn)品開(kāi)發(fā)周期短 具有機(jī)器級(jí)控制能力 功能很強(qiáng) 適合于嵌入式系統(tǒng) 開(kāi)發(fā) 匯編指令無(wú)關(guān) 易于掌握 上手快 匯編語(yǔ)言優(yōu)點(diǎn)是編寫(xiě)的程序代碼精煉 執(zhí)行速度快 在相同功能下 匯編語(yǔ)言程序可能比 C 語(yǔ) 言程序效率高 缺點(diǎn)是對(duì)程序員要求高 必須對(duì)單片機(jī)的硬件結(jié)構(gòu)非常熟悉才能編程 不便于編寫(xiě) 比較復(fù)雜的程序 可根據(jù)需要對(duì)要求時(shí)間性很強(qiáng)的代碼用匯編語(yǔ)言編寫(xiě) 其它部分用 C 語(yǔ)言編寫(xiě) 兩者混合編程 就可以實(shí)現(xiàn)優(yōu)勢(shì)互補(bǔ) 4 指出下面程序的語(yǔ)法錯(cuò)誤 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 缺分號(hào) 應(yīng)該提在使用前 說(shuō)明 delay 10 延 時(shí)子程序必須先定義 或先有函數(shù)原型說(shuō)明 void delay 作為函數(shù)定義 有函數(shù)定義不能嵌套的問(wèn)題 即不能在一個(gè)函數(shù)內(nèi)定義另一個(gè)函數(shù) 而且 前不應(yīng)有分號(hào) 作為函數(shù)原型說(shuō)明 應(yīng)該放在函數(shù)調(diào)用之前 且其后不應(yīng)該接函數(shù)體 cgar i 字符型 應(yīng)該是 unsigned char for i O i 255 應(yīng)改成 i 主函數(shù)沒(méi)有結(jié)束 缺 5 定義變量 a b c 其中 a 為內(nèi)部 RAM 的可位尋址區(qū)的字符變量 b 為外部數(shù)據(jù)存儲(chǔ)區(qū)浮 點(diǎn)型變量 c 為 指向 int 型 xdata 區(qū)的指針 答 char bdata a float xdata b int xdata c 6 編程將 8051 的內(nèi)部數(shù)據(jù)存 儲(chǔ)器 20H 單元和 35H 單元的數(shù)據(jù)相乘 結(jié)果存到外部數(shù)據(jù) 存儲(chǔ)器中 任意位置 解 方法一 用嵌入式匯編語(yǔ)言實(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 語(yǔ)言編程實(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ù)存儲(chǔ)器 25H 單元中存放有一個(gè) 0 10 的整數(shù) 編程求其平方根 精確 到 5 位有效數(shù)字 將平方根放到 30H 單元為首址的內(nèi)存中 解 方法一 用 C 語(yǔ)言與匯編語(yǔ)言混合編程實(shí)現(xiàn) 用 C 語(yǔ)言編寫(xiě)的主函數(shù) MAIN C include include char getdata char void main char a 0 x25 c float f c getdata a f sqrt c 用匯編語(yǔ)言編寫(xiě)的取數(shù)據(jù)子函數(shù) 只有一個(gè)地址參數(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 語(yǔ)言編程實(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 語(yǔ) 言與匯編語(yǔ) 言混合編程 用 C 語(yǔ)言編寫(xiě)的主函數(shù) MAIN C include char movdata char char void main char a 0 x10 b 0 x06 movdata a b 用匯編語(yǔ)言編寫(xiě)的移動(dòng)數(shù)據(jù)子函數(shù) MOVDATA 其中第一個(gè)參數(shù)在 R7 中為首地址 第二個(gè) 參數(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 語(yǔ)言編程實(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 單元分別存放著兩個(gè)無(wú)符號(hào)的 16 位數(shù) 將其中的 大數(shù)置于 24H 和 25H 單元 解 方法一 include void main unsigned int ptr 設(shè)置一個(gè)內(nèi)部 RAM 指針 unsigned int x y z ptr 0 x20 指向 0 x20 單元 x ptr 取第一個(gè)數(shù) ptr 0 x22 指向 0 x22 單元 y ptr 取第二個(gè)數(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 語(yǔ)言 習(xí)題 1 C 語(yǔ)言的優(yōu)點(diǎn)是什么 C 程序的主要結(jié)構(gòu)特點(diǎn)是什么 答 C 語(yǔ) 言是一種高 級(jí)語(yǔ)言 學(xué)習(xí)比低級(jí)容易 不需要具體組織 分配存儲(chǔ)器資源和處理端口 數(shù)據(jù) 可以直接驅(qū)動(dòng)單片機(jī)的所有資源 C 程序以函數(shù) 為單 位 由一個(gè)主函數(shù)和若干個(gè)其他函數(shù)構(gòu)成 主函數(shù)是程序的入口 其他函數(shù) 由主函數(shù)直接或間接調(diào)用 程序可以由一個(gè)文件或多個(gè)文件組成 文件類型包括頭文件和 C 語(yǔ)言源 文件 也可以是匯編語(yǔ)言文件 C 程序可與匯編語(yǔ)言混合編程 2 C51 語(yǔ)言的變量定義包含哪些關(guān) 鍵因素 為何這樣考慮 答 C 語(yǔ) 言的變 量定義格式如下 存儲(chǔ)種類 數(shù)據(jù)類型 存儲(chǔ)類型 變量名 其中 存儲(chǔ)種類與標(biāo)準(zhǔn) C 語(yǔ)言相同 包括 自動(dòng)型 auto 外部型 extern 靜態(tài)型 static 寄存 器型 register 數(shù)據(jù)類型除了包含標(biāo)準(zhǔn) C 語(yǔ)言類型的字符型 char 整型 int 長(zhǎng)整型 long 浮點(diǎn)型 float 雙精度型 double 外 還有二進(jìn)制位型 bit 特殊功能寄存器型 sfr SFR 可位尋址的位類型 sbit 存儲(chǔ)類型包括 片內(nèi) RAM 區(qū) data 片內(nèi)可位尋址區(qū) bdata 片內(nèi) RAM 間接尋址區(qū) idata 片外 RAM 頁(yè)尋 址區(qū) pdata 片外 RAM 區(qū) xdata ROM 區(qū) code 只所以比標(biāo)準(zhǔn) C 語(yǔ)言多了存儲(chǔ)類型 就是因?yàn)?MCS 51 單片機(jī)的存儲(chǔ)結(jié)構(gòu)中有四個(gè)物理存儲(chǔ) 空間 片內(nèi) RAM 片內(nèi) ROM 片外 RAM 片外 ROM 三個(gè)邏輯地址 空間 片內(nèi) RAM 片外 RAM ROM 而且有多種尋址方式 直接尋址 間接尋址 頁(yè)面尋址 位尋址 所致 所以在定義變量時(shí) 要根據(jù)其所在位置和尋址方式明確指定存儲(chǔ)類型 3 C51 與匯編語(yǔ)言的特點(diǎn)各有哪些 怎 樣實(shí)現(xiàn)兩者的優(yōu)勢(shì)互 補(bǔ) 答 C51 是結(jié)構(gòu)化 語(yǔ)言 代碼緊湊 接近自然語(yǔ)言 程序可讀性強(qiáng) 易于調(diào)試 維護(hù) 庫(kù)函數(shù) 豐富 編程工作量小 可使產(chǎn)品開(kāi)發(fā)周期短 具有機(jī)器級(jí)控制能力 功能很強(qiáng) 適合于嵌入式系統(tǒng) 開(kāi)發(fā) 匯編指令無(wú)關(guān) 易于掌握 上手快 匯編語(yǔ)言優(yōu)點(diǎn)是編寫(xiě)的程序代碼精煉 執(zhí)行速度快 在相同功能下 匯編語(yǔ)言程序可能比 C 語(yǔ) 言程序效率高 缺點(diǎn)是對(duì)程序員要求高 必須對(duì)單片機(jī)的硬件結(jié)構(gòu)非常熟悉才能編程 不便于編寫(xiě) 比較復(fù)雜的程序 可根據(jù)需要對(duì)要求時(shí)間性很強(qiáng)的代碼用匯編語(yǔ)言編寫(xiě) 其它部分用 C 語(yǔ)言編寫(xiě) 兩者混合編程 就可以實(shí)現(xiàn)優(yōu)勢(shì)互補(bǔ) 4 指出下面程序的語(yǔ)法錯(cuò)誤 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 缺分號(hào) 應(yīng)該提在使用前 說(shuō)明 delay 10 延 時(shí)子程序必須先定義 或先有函數(shù)原型說(shuō)明 void delay 作為函數(shù)定義 有函數(shù)定義不能嵌套的問(wèn)題 即不能在一個(gè)函數(shù)內(nèi)定義另一個(gè)函數(shù) 而且 前不應(yīng)有分號(hào) 作為函數(shù)原型說(shuō)明 應(yīng)該放在函數(shù)調(diào)用之前 且其后不應(yīng)該接函數(shù)體 cgar i 字符型 應(yīng)該是 unsigned char for i O i 255 應(yīng)改成 i 主函數(shù)沒(méi)有結(jié)束 缺 5 定義變量 a b c 其中 a 為內(nèi)部 RAM 的可位尋址區(qū)的字符變量 b 為外部數(shù)據(jù)存儲(chǔ)區(qū)浮 點(diǎn)型變量 c 為 指向 int 型 xdata 區(qū)的指針 答 char bdata a float xdata b int xdata c 6 編程將 8051 的內(nèi)部數(shù)據(jù)存 儲(chǔ)器 20H 單元和 35H 單元的數(shù)據(jù)相乘 結(jié)果存到外部數(shù)據(jù) 存儲(chǔ)器中 任意位置 解 方法一 用嵌入式匯編語(yǔ)言實(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 語(yǔ)言編程實(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ù)存儲(chǔ)器 25H 單元中存放有一個(gè) 0 10 的整數(shù) 編程求其平方根 精確 到 5 位有效數(shù)字 將平方根放到 30H 單元為首址的內(nèi)存中 解 方法一 用 C 語(yǔ)言與匯編語(yǔ)言混合編程實(shí)現(xiàn) 用 C 語(yǔ)言編寫(xiě)的主函數(shù) MAIN C include include char getdata char void main char a 0 x25 c float f c getdata a f sqrt c 用匯編語(yǔ)言編寫(xiě)的取數(shù)據(jù)子函數(shù) 只有一個(gè)地址參數(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 語(yǔ)言編程實(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 語(yǔ)言與匯編語(yǔ)言混合編程 用 C 語(yǔ)言編寫(xiě)的主函數(shù) MAIN C include char movdata char char void main char a 0 x10 b 0 x06 movdata a b 用匯編語(yǔ)言編寫(xiě)的移動(dòng)數(shù)據(jù)子函數(shù) MOVDATA 其中第一個(gè)參數(shù)在 R7 中為首地址 第二個(gè) 參數(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 語(yǔ)言編程實(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 單元分別存放著兩個(gè)無(wú)符號(hào)的 16 位數(shù) 將其中的 大數(shù)置于 24H 和 25H 單元 解 方法一 include void main unsigned int ptr 設(shè)置一個(gè)內(nèi)部 RAM 指針 unsigned int x y z ptr 0 x20 指向 0 x20 單元 x ptr 取第一個(gè)數(shù) ptr 0 x22 指向 0 x22 單元 y ptr 取第二個(gè)數(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í)和中斷嵌套 答 中斷是指單片機(jī)內(nèi)部有一個(gè)中斷管理系統(tǒng) 它對(duì)內(nèi)部的定時(shí)器事件 串行通信的發(fā)送和接 收及外部事件 如鍵盤(pán)按鍵動(dòng)作 等進(jìn)行自動(dòng)的檢測(cè)判斷 當(dāng) CPU 正在處理某件事情 例如正在執(zhí) 行主程序 的時(shí)候 外部或內(nèi)部發(fā)生的某一事件 如某個(gè)引腳上電平的變化 一個(gè)脈沖沿的發(fā)生或 計(jì)數(shù)器的計(jì)數(shù)溢出等 請(qǐng)求 CPU 迅速處理 于是 中斷管理系統(tǒng)會(huì)置位相應(yīng)標(biāo)志通知 CPU 暫時(shí)中 止當(dāng)前的工作 迅速轉(zhuǎn)去處理所發(fā)生的事件 處理完該事件后 再回到原來(lái)被中止的地方 繼續(xù)原 來(lái)的工作 這樣的過(guò)程稱為中斷 引發(fā)中斷的事件稱為中斷源 將中斷事件按輕重緩急分若干級(jí)別叫中斷優(yōu)先級(jí) 允許中斷優(yōu)先級(jí)高的中斷源中斷正在執(zhí)行的低優(yōu)先級(jí)的中斷服務(wù)程序叫中斷嵌套 2 什么叫中斷源 MCS 51 有哪些中斷源 各有什么特點(diǎn) 它們的中斷向量地址分別是多少 答 中斷源即引發(fā)中斷的事件 MCS 51 單片機(jī)有 5 個(gè)中斷源 它們是外部中斷 0 定時(shí)器 T0 外部中斷 1 定時(shí)器 T1 串行口 外部中斷源是由引腳的觸發(fā)信號(hào)引起的中斷 定時(shí)器中斷源是由于定時(shí)器計(jì)數(shù)器的溢出引發(fā)的 中斷 串行口是由于串行通信的發(fā)送或接收引發(fā)的中斷 外部中斷 0 定 時(shí)器 T0 外部中斷 1 定時(shí)器 T1 串行口五個(gè)中斷源的中斷向量地址依次為 0003H 000BH 0013H 001BH 0023H 3 MCS 51 中斷的中斷響應(yīng)條件是什么 答 1 中斷源有中斷請(qǐng)求 2 此中斷源允許位為 1 即中斷源可以向 CPU 發(fā)中斷請(qǐng)求 3 CPU 開(kāi)總中斷 即 EA 1 4 無(wú)同 級(jí)或者更高級(jí)中斷正在服務(wù) 4 MCS 51 的中斷響應(yīng)過(guò)程是怎樣的 答 1 將相應(yīng)的中斷優(yōu)先級(jí)狀態(tài)觸發(fā)器置 1 以阻斷后來(lái)的同 級(jí)和低級(jí)中斷請(qǐng)求 2 由硬件清除相應(yīng)的中斷請(qǐng)求標(biāo)志 串行口的發(fā)送和接收中斷除外 3 執(zhí)行一條硬件 LCALL 指令 即把程序 計(jì)數(shù)器 PC 的內(nèi)容壓 入堆棧保存 再將相應(yīng)的中斷 服務(wù)程序的入口地址送入 PC 5 編寫(xiě)出外部中斷 1 為下跳沿觸 發(fā)的中斷初始化程序 解 void Int1 init IT1 1 EA 1 EX1 1 IE 0 x84 IE 0 x84 6 有一外部中斷源 接入 INT0 端 當(dāng)其中有中斷請(qǐng)求時(shí) 要求 CPU 把一個(gè)從內(nèi)部 RAM 30H 單元開(kāi)始的 50 個(gè)字節(jié)的數(shù)據(jù)塊傳送到外部 RAM 從 1000H 開(kāi)始的連續(xù)存儲(chǔ)區(qū) 請(qǐng)編寫(xiě)對(duì)應(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 利用定時(shí)器 TO 工作在方式 2 在 P1 1 引腳上獲取輸出周期為 O 4ms 的方波信號(hào) 定時(shí)器溢出時(shí)采用中斷方式處理 請(qǐng)編寫(xiě) T0 的初始化程序及中斷服務(wù)程序 解 fosc 12MHz 則機(jī)器周期 1us 當(dāng) T0 工作在方式 2 時(shí) 其最大定時(shí)時(shí)間為 256us 要 輸出周期 為 0 4mS 即 400us 的方波信號(hào) 則其高 低 電平應(yīng)各為 200us 顯然當(dāng)定 時(shí)器 T0 按方式 2 工作時(shí) 只需計(jì)數(shù)達(dá)到 200 次即可 因此其 時(shí)間常數(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 開(kāi)始的數(shù)據(jù)存儲(chǔ)區(qū)傳送一個(gè)字 節(jié)數(shù)據(jù)到外部 RAM 以 2000H 開(kāi)始的連續(xù)存儲(chǔ)區(qū) 共傳送 50 個(gè)數(shù)據(jù) 要求 采用定時(shí)器 T1 以 方式 2 實(shí)現(xiàn)定時(shí) 數(shù)據(jù)傳送在中斷服務(wù)程序中完成 解 fosc 6MHz 機(jī)器周期 12 6 10 6S 2us T1 工作在方式 2 時(shí) 最大定時(shí)時(shí)間為 512us 要定 時(shí) 50ms 可以計(jì) 數(shù) 100 次 每次定時(shí) 500us 來(lái)實(shí)現(xiàn) 方式 2 定時(shí) 500us 需計(jì)數(shù) 250 次 故其時(shí)間常數(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ī)只有兩個(gè)外部中斷源 若要擴(kuò)展成 8 個(gè)外部中斷源 請(qǐng)畫(huà)出實(shí)現(xiàn)這種擴(kuò)展的 硬件線路圖 并說(shuō)明如何確定各中斷源的優(yōu)先級(jí) 解 用按鈕開(kāi)關(guān)模擬中斷源的中斷請(qǐng)求 INT0 單獨(dú)作為一個(gè)中斷源 INT1 擴(kuò)展成 7 個(gè)中斷 源 有中斷請(qǐng)求時(shí) 借助于 P2 口識(shí)別是這七個(gè)中斷源是哪個(gè)請(qǐng) 求中斷 為了驗(yàn)證正確性 如果是 INT0 中斷 則 在 P0 口的數(shù)碼管上顯示 0 是 INT1 中斷 則根據(jù)從上到下是哪個(gè)中斷源在 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

注意事項(xiàng)

本文(單片機(jī)原理及應(yīng)用-第三版-林立-張俊亮課后答案)為本站會(huì)員(gbs****77)主動(dòng)上傳,裝配圖網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)上載內(nèi)容本身不做任何修改或編輯。 若此文所含內(nèi)容侵犯了您的版權(quán)或隱私,請(qǐng)立即通知裝配圖網(wǎng)(點(diǎn)擊聯(lián)系客服),我們立即給予刪除!

溫馨提示:如果因?yàn)榫W(wǎng)速或其他原因下載失敗請(qǐng)重新下載,重復(fù)下載不扣分。




關(guān)于我們 - 網(wǎng)站聲明 - 網(wǎng)站地圖 - 資源地圖 - 友情鏈接 - 網(wǎng)站客服 - 聯(lián)系我們

copyright@ 2023-2025  zhuangpeitu.com 裝配圖網(wǎng)版權(quán)所有   聯(lián)系電話:18123376007

備案號(hào):ICP2024067431號(hào)-1 川公網(wǎng)安備51140202000466號(hào)


本站為文檔C2C交易模式,即用戶上傳的文檔直接被用戶下載,本站只是中間服務(wù)平臺(tái),本站所有文檔下載所得的收益歸上傳人(含作者)所有。裝配圖網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)上載內(nèi)容本身不做任何修改或編輯。若文檔所含內(nèi)容侵犯了您的版權(quán)或隱私,請(qǐng)立即通知裝配圖網(wǎng),我們立即給予刪除!