單片機(jī)習(xí)題答案.doc_第1頁
單片機(jī)習(xí)題答案.doc_第2頁
單片機(jī)習(xí)題答案.doc_第3頁
單片機(jī)習(xí)題答案.doc_第4頁
單片機(jī)習(xí)題答案.doc_第5頁
已閱讀5頁,還剩30頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

單片機(jī)應(yīng)用技術(shù) 習(xí)題答案 第一章 概述 1 什么是總線 總線主要有哪幾部分組成 各部分的作用是什么 總線是連接計(jì)算機(jī)各部件之間的一組公共的信號線 一般情況下 可分為系統(tǒng)總線和外總線 系統(tǒng)總線應(yīng)包括 地址總線 AB 控制總線 CB 數(shù)據(jù)總線 DB 地址總線 AB CPU 根據(jù)指令的功能需要訪問某一存儲器單元或外部設(shè)備時 其地址信息 由地址總線輸出 然后經(jīng)地址譯碼單元處理 地址總線為 16 位時 可尋址范圍為 216 64K 地址總線的位數(shù)決定了所尋址存儲器容量或外設(shè)數(shù)量的范圍 在任一時刻 地址總線上的地 址信息是惟一對應(yīng)某一存儲單元或外部設(shè)備 控制總線 CB 由 CPU 產(chǎn)生的控制信號是通過控制總線向存儲器或外部設(shè)備發(fā)出控制命令 的 以使在傳送信息時協(xié)調(diào)一致的工作 CPU 還可以接收由外部設(shè)備發(fā)來的中斷請求信號和 狀態(tài)信號 所以控制總線可以是輸入 輸出或雙向的 數(shù)據(jù)總線 DB CPU 是通過數(shù)據(jù)總線與存儲單元或外部設(shè)備交換數(shù)據(jù)信息的 故數(shù)據(jù)總線 應(yīng)為雙向總線 在 CPU 進(jìn)行讀操作時 存儲單元或外設(shè)的數(shù)據(jù)信息通過數(shù)據(jù)總線傳送給 CPU 在 CPU 進(jìn)行寫操作時 CPU 把數(shù)據(jù)通過數(shù)據(jù)總線傳送給存儲單元或外設(shè) 2 什么是接口電路 CPU 與接口電路連接一般應(yīng)具有哪些信號線 外部設(shè)備與接口電路連接 一般應(yīng)具有哪些信號線 CPU 通過接口電路與外部輸入 輸出設(shè)備交換信息 一般情況下 外部設(shè)備種類 數(shù)量較多 而且各種參量 如運(yùn)行速度 數(shù)據(jù)格式及物理量 也不盡相同 CPU 為了實(shí)現(xiàn)選取目標(biāo)外部設(shè)備并與其交換信息 必須借助接口電路 一般情 況下 接口電路通過地址總線 控制總線和數(shù)據(jù)總線與 CPU 連接 通過數(shù)據(jù)線 D 控制 線 C 和狀態(tài)線 S 與外部設(shè)備連接 3 存儲器的作用是什么 只讀存儲器和隨機(jī)存儲器有什么不同 存儲器具有記憶功能 用來存放數(shù)據(jù)和程序 計(jì)算機(jī)中的存儲器主要有隨機(jī)存儲器 RAM 和只讀存儲器 ROM 兩種 隨機(jī)存儲器一般用來存放程序運(yùn)行過程中的中間數(shù) 據(jù) 計(jì)算機(jī)掉電時數(shù)據(jù)不再保存 只讀存儲器一般用來存放程序 計(jì)算機(jī)掉電時信息不會 丟失 4 什么是單片機(jī) 單片機(jī)與微機(jī)相比有何特點(diǎn) 單片機(jī) Single Chip Microcomputer 又稱單片微控制器 其基本結(jié)構(gòu)是將微型計(jì)算機(jī)的基 本功能部件 中央處理機(jī) CPU 存儲器 輸入接口 輸出接口 定時器 計(jì)數(shù)器 中斷系 統(tǒng)等全部集成在一個半導(dǎo)體芯片上 因此 單片機(jī)其體積小 功耗低 價格低廉 且具有邏 輯判斷 定時計(jì)數(shù) 程序控制等多種功能 單片機(jī)結(jié)構(gòu)上的設(shè)計(jì) 在硬件 指令系統(tǒng)及 I O 能力等方面都有獨(dú)到之處 具有較強(qiáng)而有效 的控制功能 雖然單片機(jī)只是一個芯片 但無論從組成還是從其邏輯功能上來看 都具有微 機(jī)系統(tǒng)的含義 另一方面 單片機(jī)畢竟是一個芯片 只有外加所需的輸入 輸出設(shè)備 才可 以構(gòu)成實(shí)用的單片機(jī)應(yīng)用系統(tǒng) 5 單片機(jī)主要應(yīng)用于哪些領(lǐng)域 1 智能儀器 智能儀器是含有微處理器的測量儀器 單片機(jī)廣泛應(yīng)用于各種儀器儀表 使儀器儀表智能化取得了令人矚目的進(jìn)展 2 工業(yè)控制 單片機(jī)廣泛應(yīng)用于各種工業(yè)控制系統(tǒng)中 如數(shù)控機(jī)床 溫度控制 可編程順 序控制等 3 家用電器 目前各種家用電器普遍采用單片機(jī)取代傳統(tǒng)的控制電路 如洗衣機(jī) 電冰箱 空調(diào) 彩電 微波爐 電風(fēng)扇及高級電子玩具等 由于配上了單片機(jī) 使其功能增強(qiáng)而身價 倍增 深受用戶的歡迎 4 機(jī)電一體化 機(jī)電一體化是機(jī)械工業(yè)發(fā)展的方向 機(jī)電一體化產(chǎn)品是指集機(jī)械技術(shù) 微 電子技術(shù) 計(jì)算機(jī)技術(shù)于一體 具有智能化特征的機(jī)電產(chǎn)品 單片機(jī)除以上各方面應(yīng)用之外 還廣泛應(yīng)用于辦公自動化領(lǐng)域 如復(fù)印機(jī) 汽車電路 通 信系統(tǒng) 如手機(jī) 計(jì)算機(jī)外圍設(shè)備等 成為計(jì)算機(jī)發(fā)展和應(yīng)用的一個重要方向 第二章 硬件 1 舉例說明 MCS 51 有哪些典型產(chǎn)品 它們有何區(qū)別 MCS 51 系列單片機(jī)可分為兩大系列 51 子系列和 52 子系列 51 子系列單片機(jī)的典型產(chǎn)品有 8051 8751 8031 80C51 80C31 等 它們的結(jié)構(gòu)基本相同 其主要差別反映在片內(nèi)存儲器的配置上有所不同 2 8051 單片機(jī)內(nèi)部包含哪些主要功能部件 各功能部件的主要作用是什么 8051 單片機(jī)內(nèi)部由 CPU 4KB 的 ROM 128B 的 RAM 4 個 8 位的 I O 并行端口 一個串 行口 兩個 16 位定時 計(jì)數(shù)器及中斷系統(tǒng)等組成 3 程序狀態(tài)字寄存器 PSW 各位的定義是什么 PSW 是一個 8 位寄存器 用于寄存當(dāng)前指令執(zhí)行后的某些狀態(tài) 即反映指令執(zhí)行結(jié)果的一 些特征信息 Cy PSW 7 即 PSW 的 D7 位 進(jìn)位 借位標(biāo)志 AC PSW 6 即 PSW 的 D6 位 輔助進(jìn)位標(biāo)志 F0 PSW 5 及 F1 PSE 1 即 PSW 的 D5 位 D1 位 用戶標(biāo)志位 RS1 及 RS0 PSW 4 及 PSW 3 即 PSW 的 D4 位 D3 位 寄存器組選擇控制位 OV PSW 2 即 PSW 的 D2 位 溢出標(biāo)志 4 MCS 51 存儲器結(jié)構(gòu)的主要特點(diǎn)是什么 程序存儲器和數(shù)據(jù)存儲器各有何不同 MCS 51 單片機(jī)的存儲器結(jié)構(gòu)與一般微機(jī)存儲器的配置方法不同 一般微機(jī)把程序和數(shù)據(jù)共 存同一存儲空間 各存儲單元對應(yīng)惟一的地址 而 MCS 51 的存儲器把程序和數(shù)據(jù)的存儲空 間嚴(yán)格區(qū)分開 數(shù)據(jù)存儲器用于存放程序運(yùn)算的中間結(jié)果 狀態(tài)標(biāo)志位等 程序存儲器用于存放已編制好的程序及程序中用到的常數(shù) 5 MCS 51 單片機(jī)內(nèi)部 RAM 可分為幾個區(qū) 各區(qū)的主要作用是什么 內(nèi)部數(shù)據(jù)存儲器分為高 低 128B 兩大部分 低 128B 為 RAM 區(qū) 地址空間為 00H 7FH 可分為 寄存器區(qū) 位尋址區(qū) 堆棧及數(shù)據(jù)存 儲區(qū) 存放程序運(yùn)算的中間結(jié)果 狀態(tài)標(biāo)志位等 高 128B 為特殊功能寄存器 SFR 區(qū) 地址空間為 80H FFH 其中僅有 21 個字節(jié)單 元是有定義的 6 MCS 51 單片機(jī)的 P0 P3 四個 I O 端口在結(jié)構(gòu)上有何異同 使用時應(yīng)注意哪些事項(xiàng) P0 口是一個 8 位漏極開路型雙向 I O 端口 P1 口是一個內(nèi)部帶上拉電阻的 8 位準(zhǔn)雙向 I O 端口 P2 口也是一個內(nèi)部帶上拉電阻的 8 位準(zhǔn)雙向 I O 端口 P3 口是一個內(nèi)部帶上拉電阻的 8 位多功能雙向 I O 端口 在使用時應(yīng)注意以下方面 P0 P3 都是準(zhǔn)雙向 I O 口 即 CPU 在讀取數(shù)據(jù)時 必須先向相應(yīng)端口的鎖存器寫入 1 各端口名稱與鎖存器名稱在編程時相同 均可用 P0 P3 表示 當(dāng)系統(tǒng)復(fù)位時 P0 P3 端口 鎖存器全為 1 故可直接對其進(jìn)行讀取數(shù)據(jù) P0 口每一輸出位可驅(qū)動8 個 LS 型 TTL 負(fù)載 P0 口可作通用輸入 輸出端口使用 此時 若要驅(qū)動NMOS 或其他拉電流負(fù)載時 需外接上拉電阻 才能使該位高電平輸出有效 在單片機(jī)進(jìn)行外部存儲器擴(kuò)展時 P0 口必須作為地址 數(shù)據(jù)復(fù)用線使用 此時 不必外 接上拉電阻 P0 也不能作通用 I O 口使用 P1 P2 P3 口輸出均接有內(nèi)部上拉電阻 輸入端無需外接上拉電阻 每一位輸出可 以驅(qū)動 4 個 LS 型 TTL 電路 P0 P2 口除可以作通用 I O 端口 以實(shí)現(xiàn)與外部進(jìn)行數(shù)據(jù)交換外 更主要的是 當(dāng) CPU 訪問外部存儲器時 CPU 將自動地把外部存儲器的地址線信號 16 位 送 P0 P2 口 作為地址總線 P0 口輸出低 8 位地址 P2 口輸出高 8 位地址 向外部存儲器輸出 16 位存 儲單元地址 在控制信號作用下 該地址低 8 位被鎖存后 P0 口自動切換為數(shù)據(jù)總線 這 時經(jīng) P0 口可向外部存儲器進(jìn)行讀 寫數(shù)據(jù)操作 此時 P2 口不再作通用 I O 端口 P0 口為 地址 數(shù)據(jù)復(fù)用口 7 在什么情況下 P3 口作為第二功能使用 P3 口的第二功能是作為控制端口使用的 由于單片機(jī)沒有專設(shè)的控制信號引腳 單片機(jī)在 進(jìn)行外部存儲器和 I O 端口擴(kuò)展時所需要的控制信號必須由 P3 口提供 P3 口第二功能相當(dāng) 于 PC 機(jī)中 CPU 的控制線引腳 8 為什么說單片機(jī)具有較強(qiáng)的位處理能力 對于許多控制系統(tǒng) 開關(guān)量控制是控制系統(tǒng)的主要對象之一 作為傳統(tǒng)的 CPU 對于簡單的 個別開關(guān)量進(jìn)行控制卻顯得不那么方便 而讓 MCS 51 值得驕傲的正是它有效地解決了單一 位的控制 MCS 51 片內(nèi) CPU 還是一個性能優(yōu)異的位處理器 也就是說 MCS 51 實(shí)際上又是一個完整而 獨(dú)立的 1 位單片機(jī) 也稱布爾處理機(jī) 該布爾處理機(jī)除了有自己的 CPU 位寄存器 位累 加器 即進(jìn)位標(biāo)志 Cy I O 口和位尋址空間外 還有專供位操作的指令系統(tǒng) 可以直接尋 址對位存儲單元和 SFR 的某一位進(jìn)行操作 MCS 51 單片機(jī)對于位操作 布爾處理 有置位 復(fù)位 取反 測試轉(zhuǎn)移 傳送 邏輯與和邏輯或運(yùn)算等功能 所以 單片機(jī)具有較強(qiáng)的位處 理能力 9 指出 8051 可進(jìn)行位尋址的存儲空間 00 7FH 即 20H 0 2FH 7 及 SFR 地址能被 8 整除的寄存器中的各位 10 位地址 90H 和字節(jié)地址 90H 及 P1 0 有何異同 如何區(qū)別 位地址 90H 表示 P1 0 位 字節(jié)地址 90H 表示 P1 口 11 在訪問外部 ROM 或 RAM 時 P0 和 P2 口各用來傳送什么信號 P0 口為什么要采用片 外地址鎖存器 P0 口傳送地址低八位后可復(fù)用數(shù)據(jù)線 所以 P0 口要采用片外地址鎖存器 P2 口傳送地 址高八位 12 什么是時鐘周期 什么是機(jī)器周期 什么是指令周期 當(dāng)振蕩頻率為 12MHz 時 一個 機(jī)器周期為多少微秒 時鐘周期 也稱振蕩周期 即振蕩器的振蕩頻率 fosc的倒數(shù) 是時序中最小的時間單位 機(jī)器周期 執(zhí)行一條指令的過程可分為若干個階段 每一階段完成一規(guī)定的操作 完成 一個規(guī)定操作所需要的時間稱為一個機(jī)器周期 一個機(jī)器周期包含 12 個時鐘周期 當(dāng)振蕩頻率為 12MHz 時 一個機(jī)器周期為 12 12 1000000 秒 1 微秒 指令周期 定義為執(zhí)行一條指令所用的時間 13 MCS 51 單片機(jī)有幾種復(fù)位方法 復(fù)位后 CPU 從程序存儲器的哪一個單元開始執(zhí)行程 序 MCS 51 的復(fù)位電路包括上電復(fù)位電路和按鍵 外部 復(fù)位電路 0000H 14 8051 系統(tǒng)掉電時如何保存內(nèi)部 RAM 中的數(shù)據(jù) 單片機(jī)在運(yùn)行過程中 如果發(fā)生掉電 片內(nèi) RAM 和 SFR 中的信息將會丟失 為防止信息丟 失 可以把一組備用電源加到 RST VPD端 當(dāng) VCC上的電壓低于 VPD上的電壓時 備用電源 通過 VPD端 以低功耗保持內(nèi)部 RAM 和 SFR 中的數(shù)據(jù) 15 8051 單片機(jī)引腳 ALE 的作用是什么 當(dāng) 8051 不外接 RAM 和 ROM 時 ALE 上輸出的 脈沖頻率是多少 其作用是什么 地址鎖存使能輸出 ALE 當(dāng)單片機(jī)訪問外部存儲器時 外部存儲器的 16 位地址信號由 P0 口輸出低 8 位 P2 口輸出高 8 位 ALE 可用作低 8 位地址鎖存控制信號 當(dāng)不用作外部存 儲器地址鎖存控制信號時 該引腳仍以時鐘振蕩頻率的 1 6 固定地輸出正脈沖 可以驅(qū)動 8 個 LS 型 TTL 負(fù)載 第三章 單片機(jī)指令 尋址方式就是處理器根據(jù)指令中給出的地址信息來尋找物理地址的方式 1 MCS 51 有哪幾種尋址方式 舉例說明它們是怎樣尋址的 MCS 51 指令系統(tǒng)的尋址方式有以下 7 種 立即尋址方式 操作數(shù)直接出現(xiàn)在指令中 直接尋址方式中 操作數(shù)的單元地址直接出現(xiàn)在指令中 寄存器尋址方式中 寄存器中的內(nèi)容就是操作數(shù) 寄存器間接尋址方式中 指定寄存器中的內(nèi)容是操作數(shù)的地址 該地址對應(yīng)存儲單元的 內(nèi)容才是操作數(shù) 變址尋址方式是以程序指針 PC 或數(shù)據(jù)指針 DPTR 為基址寄存器 以累加器 A 作為變址 寄存器 兩者內(nèi)容相加 即基地址 偏移量 形成 16 位的操作數(shù)地址 相對尋址是以程序計(jì)數(shù)器 PC 的當(dāng)前值作為基地址 與指令中的第二字節(jié)給出的相對偏移量 rel 進(jìn)行相加 所得和為程序的轉(zhuǎn)移地址 位地址 內(nèi)部 RAM 地址空間的可進(jìn)行位尋址的 128 位和 SFR 地址空間的可位尋址的 11 個 8 位寄存器的 88 位 位尋址給出的是直接地址 2 位尋址和字節(jié)尋址如何區(qū)分 在使用時有何不同 由尋址方式可以看出 不同的尋址方式所尋址的存儲空間是不同的 正確地使用尋址方式不 僅取決于尋址方式的形式 而且取決于尋址方式所對應(yīng)的存儲空間 字節(jié)尋址必須是對 8 位 存儲單元 位尋址的存儲空間只能是片內(nèi) RAM 的 20H 2FH 字節(jié)地址中的所有位 位地址 為 00H 7FH 和部分 SFR 的位 決不能是該范圍之外的任何單元的任何位 3 要訪問專用寄存器和片外數(shù)據(jù)寄存器 應(yīng)采用什么尋址方式 舉例說明 訪問專用寄存器 可采用直接尋址或寄存器尋址 訪問片外數(shù)據(jù)寄存器 寄存器間接尋址 4 什么是堆棧 其主要作用是什么 堆棧是后進(jìn)先出的數(shù)據(jù)存儲區(qū) 一般用于中斷處理過程中 若需要保護(hù)現(xiàn)場數(shù)據(jù) 如內(nèi)部 RAM 單元的內(nèi)容 可使用 入棧指令 將數(shù)據(jù)壓入堆棧 中斷處理過程執(zhí)行完后 再使用出棧指令恢復(fù)現(xiàn)場數(shù)據(jù) 5 編程將內(nèi)部 RAM 的 20H 單元的內(nèi)容傳送給外部 RAM 的 2000H 單元 MOV A 20H MOV DPTR 2000H MOVX DPTR A 6 編程將內(nèi)部數(shù)據(jù)存儲器 20H 30H 單元內(nèi)容清零 MOV R0 20H MOV A 0 MOV R3 17 LOP MOV R0 A INC R0 DJNZ R3 LOP 7 編程查找內(nèi)部 RAM 的 32H 41H 單元中是否有 0AAH 這個數(shù)據(jù) 若有這一數(shù)據(jù) 則將 50H 單元置為 0FFH 否則清 50H 單元為 0 MOV R3 10H MOV A 0AAH MOV R0 31H LOP INC R0 SUBB A R0 JZ LOP1 DJNZ R3 LOP MOV 50H 0H AJMP LOP3 LOP1 MOV 50H 0FFH LOP3 AJMP 1OP3 8 查找 20H 4FH 單元中出現(xiàn) 00H 的次數(shù) 并將查找結(jié)果存入 50H 單元 MOV R3 30H MOV R0 20H MOV A 0 LOP MOV A R0 JZ LOP1 LOP3 INC R0 DJNZ R3 LOP AJMP LOP2 LOP1 INC 50H AJMP LOP3 LOP2 AJMP LOP2 9 已知 A 83H R0 17H 17H 34H 寫出下列程序段執(zhí)行完后的 A 中的內(nèi)容 ANL A 17H ORL 17H A XRL A R0 CPLA A 11001011B 0CBH 10 已知單片機(jī)的 fosc 12MHz 分別設(shè)計(jì)延時 0 1s 1s 1min 的子程序 設(shè)晶振頻率為 12MHz 一個機(jī)器周期為 1 s 延時 1ms 的子程序 執(zhí)行時間 機(jī)器周期 DELAY MOV R7 0FFH 1 LOOP NOP 1 NOP 1 DJNZ R7 LOOP 2 RET 2 該程序段的總的執(zhí)行時間為 1 4 255 2 s 1023 s 1ms 延時時間為 100ms 的子程序 DELAY MOV R5 64H 對延時 1ms 的子程序循環(huán) 100 次 LOP1 MOV R7 0FFH LOOP NOP NOP DJNZ R7 LOOP DJNZ R5 LOP1 RET 延時時間為 1s 的子程序 DELAY1 MOV R3 0AH 對延時 100ms 的子程序循環(huán) 10 次 DELAY MOV R5 64H LOP1 MOV R7 0FFH LOOP NOP NOP DJNZ R7 LOOP DJNZ R5 LOP1 DJNZ R3 DELAY RET 延時時間為 60s 的子程序 對延時 1s 的子程序循環(huán) 60 次 11 MCS 51 匯編語言中有哪些常用的偽指令 各起什么作用 BIT 地址符號命令 END 結(jié)束匯編 EQU 等值 DB 定義字節(jié) DW 定義字 DS 定義存儲單元 ORG 匯編起始地址 12 比較下列各題中的兩條指令有什么異同 MOV A R1 MOV 0E0H R1 指令功能相同 尋址方式表示不同 MOV A P0 MOV A 80H 指令功能相同 尋址方式表示不同 LOOP SJMP LOOP SJMP 指令功能相同 13 下列程序段匯編后 從 3000H 開始各有關(guān)存儲單元的內(nèi)容是什么 ORG 3000H TAB1 EQU 1234H TAB2 EQU 5678H DB65 13 abcABC DWTAB1 TAB2 9ABCH 3000H 65 3001H 13 3002H a 3003H b 3004H c 3005H A 3006H B 3007H C 3008H 34H 3009H 12H 300AH 78H 300BH 56H 300CH 0BCH 300DH 9AH 14 為了提高匯編語言程序的效率 在編寫時應(yīng)注意哪些問題 1 把要解決的問題化成一個個具有一定獨(dú)立性的功能模塊 各模塊盡量采用子程序完成其 功能 2 力求少用無條件轉(zhuǎn)移指令 盡量采用循環(huán)結(jié)構(gòu) 3 對主要的程序段要下功夫精心設(shè)計(jì) 這樣會收到事半功倍的效果 4 能用 8 位數(shù)據(jù)解決問題的就不要使用 16 位數(shù)據(jù) 5 累加器是信息傳遞的樞紐 在調(diào)用子程序時應(yīng)通過累加器傳送子程序的參數(shù) 通過累加 器向主程序傳送返回參數(shù) 所以 在子程序中一般不把累加器推入堆棧 若需保護(hù)累加器的 內(nèi)容時 應(yīng)先把累加器的內(nèi)容存入其他寄存器單元 然后再調(diào)用子程序 6 為了保證程序運(yùn)行的安全可靠 應(yīng)考慮使用軟件抗干擾技術(shù) 如數(shù)字濾波技術(shù) 指 令冗余技術(shù) 軟件陷井技術(shù) 用匯編語言程序?qū)崿F(xiàn)這些技術(shù) 不需要增加硬件成本 可靠性 高 穩(wěn)定性好 方便靈活 15 試編寫 8 字節(jié)外部數(shù)據(jù)存儲器到內(nèi)部數(shù)據(jù)存儲器的數(shù)據(jù)塊傳送程序 外部數(shù)據(jù)存儲器地 址范圍為 40H 47H 內(nèi)部數(shù)據(jù)存儲器地址范圍為 30H 37H MOV R3 8 MOV R0 40H MOV R1 30H LOP1 MOVX A R0 MOV R1 A INC R0 INC R1 DJNZ R3 LOP1 16 試編寫 8 字節(jié)外部程序存儲器到內(nèi)部數(shù)據(jù) RAM 的傳送程序 外部程序存儲器地址為 2040H 2047H 內(nèi)部 RAM 地址為 30H 37H 參看 15 題答案 提示 外部程序存儲器地址為 16 位地址 2040H 2047H 間接尋址采用 DPTR 17 試編程使內(nèi)部 RAM 的 20H 4FH 單元的數(shù)據(jù)塊按降序排列 參看 23 題答案 提示 本題對 20H 4FH 單元 48 個 數(shù)據(jù)降序排列 18 內(nèi)部 RAM 的 20H 單元開始有一個數(shù)據(jù)塊 以 0DH 為結(jié)束標(biāo)志 試統(tǒng)計(jì)該數(shù)據(jù)塊長 度 將該數(shù)據(jù)塊傳送到外部數(shù)據(jù)存儲器 7E01H 開始的單元 并將長度存入 7E00H 單元 MOV R0 20H MOV DPTR 7E01H LOP MOV A R0 MOV 60H A SUBB A 0DH JZ LOP1 MOV A 60H MOVX DPTR A INC R3 INC R0 INC DPTR AJMP LOP LOP1 MOV DPTR 7E00H MOV A R3 MOVX DPTR A END 19 試編寫一個用查表法查 0 9 字形 7 段碼 假設(shè)表的首地址為 TABLE 的子程序 調(diào)用 子程序前 待查表的數(shù)據(jù)存放在累加器 A 中 子程序返回后 查表的結(jié)果也存放在累加器 A 中 SQR1 MOV DPTR TABLE MOVC A A DPTR RET TABLE DB 0C0H 0F9H 0A4H 0B0H 99H 0 9 的字形顯示段碼 LED 共陽極 DB 92H 82H F8H 80H 90H 20 內(nèi)部 RAM 的 DATA 開始的區(qū)域中存放著 10 個單字節(jié)十進(jìn)制數(shù) 求其累加和 并將結(jié) 果存入 SUM 和 SUM 1 單元 MOV R0 DATA MOV R3 0AH MOV A 0 LOP ADD A R0 MOV R4 A ADDC A 0 MOV R5 A INC R0 DJNZ R3 LOP MOV SUM R4 MOV SUM 1 R5 END 21 內(nèi)部 RAM 的 DATA1 和 DATA2 單元開始存放著兩個等長的數(shù)據(jù)塊 數(shù)據(jù)塊的長度在 LEN 單元中 請編程檢查這兩個數(shù)據(jù)塊是否相等 若相等 將 0FFH 寫入 RESULT 單元 否則將 0 寫入 RESULT 單元 MOV R0 DATA1 MOV R3 LEN LOP MOV A R0 CJNZ A DATA2 LOP1 INC R0 INC DATA2 DJNZ R3 LOP MOV A 0FFH MOV RESULT A AJMP LOP2 LOP1 MOV A 0 MOV RESULT A LOP2 AJMP LOP2 END 22 有一輸入設(shè)備 其端口地址為 20H 要求在 1 秒鐘時間內(nèi)連續(xù)采樣 10 次讀取該端口數(shù) 據(jù) 求其算術(shù)平均值 結(jié)果存放在內(nèi)部 RAM 區(qū) 20H 單元 MOV R0 20H MOV R2 0 MOV A 0 MOV R4 0 LOP MOV R3 0AH IN ACALL DELAY MOVX A R0 MOV R2 A MOV A R4 ADD A R2 MOV R4 A DJNZ R3 IN MOV B 0AH DIV AB MOV 20H A AJMP LOP DELAY MOV R5 64H 延時時間為 0 1s 的子程序 LOP1 MOV R7 0FFH LOOP NOP NOP DJNZ R7 LOOP DJNZ R5 LOP1 RET END 第 4 章 中斷 1 MCS 51 系列單片機(jī)能提供幾個中斷源 幾個中斷優(yōu)先級 各個中斷源的優(yōu)先級怎樣確定 在同一優(yōu)先級中 各個中斷源的優(yōu)先順序怎樣確定 答 MCS 51 系列單片機(jī)能提供 5 個中斷源 2 個中斷優(yōu)先級 各個中斷源的優(yōu)先級是由特 殊功能寄存器 IP 來確定 IP 中和各個中斷源對應(yīng)位為 1 時 此中斷源為高優(yōu)先級 否則為 低優(yōu)先級 在同一優(yōu)先級中 各個中斷源的優(yōu)先順序是由自然優(yōu)先級來確定的 2 簡述 MCS 51 系列單片機(jī)的中斷響應(yīng)過程 答 MCS 51 系列單片機(jī)的中斷響應(yīng)過程是按照以下順序執(zhí)行的 開中斷 中斷請求 中斷判斷 中斷響應(yīng) 中斷返回 3 MCS 51 系列單片機(jī)的外部中斷有哪兩種觸發(fā)方式 如何設(shè)置 對外部中斷源的中斷請求 信號有何要求 答 MCS 51 系列單片機(jī)的外部中斷有電平觸發(fā)和邊沿觸發(fā)兩種方式 是由特殊功能寄存器 TCON 中 IT0 IT1 的狀態(tài)確定的 如 IT0 為 1 時外部中斷 0 為邊沿觸發(fā)方式 當(dāng) INT0 外部 引腳出現(xiàn)下降沿時向 CPU 提出中斷請求 否則為電平觸發(fā)方式 當(dāng) INT0 外部引腳出現(xiàn)低 電平時向 CPU 提出中斷請求 4 MCS 51 單片機(jī)中斷響應(yīng)時間是否固定 為什么 答 MCS 51 單片機(jī)中斷響應(yīng)時間不固定 因?yàn)楫?dāng)中斷源向 CPU 提出中斷請求時 CPU 正 在執(zhí)行的指令的指令周期是不一樣的 5 MCS 51 單片機(jī)如果擴(kuò)展 6 個中斷源 可采用哪些方法 如何確定它們的優(yōu)先級 答 一般可采取中斷加查詢方式 軟件先查詢到的為高優(yōu)先級 最后查詢到的為低優(yōu)先級 6 當(dāng)正在執(zhí)行某一中斷源的中斷服務(wù)程序時 如果有新的中斷請求出現(xiàn) 問在什么情況下 可響應(yīng)新的中斷請求 在什么情況下不能響應(yīng)新的中斷請求 答 當(dāng)正在執(zhí)行某一中斷源的中斷服務(wù)程序時 如果有新的中斷請求出現(xiàn) 當(dāng)新中斷源中斷 級別比正在執(zhí)行中斷源的中斷級別高時可響應(yīng)新的中斷請求 否則不能響應(yīng)新的中斷請求 7 8051 單片機(jī)有 5 個中斷源 但只能設(shè)置兩個中斷優(yōu)先級 因此 在中斷優(yōu)先級安排上受 到一定的限制 問以下幾種中斷優(yōu)先級順序的安排 級別由高到低 是否可能 如可能 則 應(yīng)如何設(shè)置中斷源的中斷級別 否則 請敘述不可能的理由 1 定時器 0 定時器 1 外中斷 0 外中斷 1 串行口中斷 可能 其中 定時器 0 定時器 1 為高優(yōu)先級 2 串行口中斷 外中斷 0 定時器 0 外中斷 1 定時器 1 可能 其中 串行口中斷為高優(yōu)先級 3 外中斷 0 定時器 1 外中斷 1 定時器 0 串行口中斷 不可能 4 外中斷 0 外中斷 1 串行口中斷 定時器 0 定時器 1 可能 其中 外中斷 0 外中斷 1 串行口中斷為高優(yōu)先級 5 串行口中斷 定時器 0 外中斷 0 外中斷 1 定時器 1 不可能 6 外中斷 0 外中斷 1 定時器 0 串行口中斷 定時器 1 不可能 7 外中斷 0 定時器 1 定時器 0 外中斷 1 串行口中斷 可能 其中 外中斷 0 定時器 1 為高優(yōu)先級 第 5 章 定時計(jì)數(shù)器 1 8051 定時器 計(jì)數(shù)器有哪幾種工作模式 各有什么特點(diǎn) 答 8051 定時器 計(jì)數(shù)器有 0 1 2 3 四種工作模式 模式 0 為 13 位 1 定時器 計(jì)數(shù)器 模 式 1 為 16 位 1 定時器 計(jì)數(shù)器 模式 2 為自動賦初值的 8 位定時器 計(jì)數(shù)器 模式 3 可以增加 一個 8 位定時器 T1 沒有模式 3 2 8051 定時器作定時和計(jì)數(shù)時 其計(jì)數(shù)脈沖分別由誰提供 答 8051 定時器作定時器時 輸入的記數(shù)脈沖是由晶體振蕩器的輸出經(jīng) 12 分頻后得到的 所以定時器可看作是對單片機(jī)機(jī)器周期的計(jì)數(shù)器 8051 定時器作計(jì)數(shù)器時 則對外部事件 進(jìn)行計(jì)數(shù) 3 8051 定時器的門控信號 GATE 為 1 時 定時器如何啟動 答 8051 定時器的門控信號 GATE 為 1 時 只有 或 引腳為高電平且INT0INT1 TR0 或 TR1 置 1 時 相應(yīng)的 T0 或 T1 才能選通工作 4 定時器 計(jì)數(shù)器 0 已預(yù)置為 156 且選定用于模式 2 的計(jì)數(shù)方式 現(xiàn)在 T0 引腳上輸入周期 為 1ms 的脈沖 問 1 此時定時器 計(jì)數(shù)器 0 的實(shí)際用途是什么 2 在什么情況下 定時器 計(jì)數(shù)器 0 溢出 答 1 此時定時器 計(jì)數(shù)器 0 的實(shí)際用途是 0 1S 脈沖信號發(fā)生器 2 當(dāng) T0 每記數(shù) 100 次后定時器 計(jì)數(shù)器 0 溢出 5 設(shè) fosc 12MHz 定時器 0 的初始化程序和中斷服務(wù)程序如下 MAIN MOV TH0 9DH MOV TL0 0D0H MOV TMOD 01H SETB TR0 中斷服務(wù)程序 MOV TH0 9DH MOV TL0 0D0H RETI 問 1 該定時器工作于什么方式 2 相應(yīng)的定時時間或計(jì)數(shù)值是多少 答 1 該定時器以模式 1 工作于定時方式 2 相應(yīng)的定時時間為 25 136ms 6 8051 單片機(jī)的 fosc 6MHz 如果要求定時時間分別位 0 1ms 和 5ms 當(dāng) T0 工作在模式 0 模式 1 和模式 2 時 分別求出定時器的初值 答 1 定時時間分別位 0 1ms 時 模式 0 初值為 8142 模式 1 初值為 65486 模式 2 初值 206 2 定時時間分別位 5ms 時 模式 0 初值為 5692 模式 1 初值為 63036 模式 2 此 時定時時間不夠 7 以定時器 1 進(jìn)行外部事件計(jì)數(shù) 每計(jì)數(shù) 1000 個脈沖后 定時器 1 轉(zhuǎn)為定時工作方式 定 時 10ms 后 又轉(zhuǎn)為計(jì)數(shù)方式 如此循環(huán)不止 設(shè) fosc 6MHz 試用模式 1 編程 解 先確定 T1 作為計(jì)數(shù)器時初值為 64536 0FC68H T1 作為定時器時初值為 60536 0EC78H 程序 SETB TR1 LOOP MOV TMOD 50H MOV TH1 0FCH MOV TL1 68H AA JBC TF1 AA MOV TMOD 10H MOV TH1 0E0H MOV TL1 78H BB JBC TF1 BB SJMP LOOP END 8 已知 8051 單片機(jī)的 fosc 6MHz 試?yán)?T0 和 P1 0 輸出矩形波 矩形波高電平寬 100 s 低電平寬 300 s 解 先確定 T0 作為定時器工作于模式 2 時初值為 高電平為 50 低電平為 150 采用中斷方式編程 ORG 0000H AJMP MAIN ORG 001BH AJMP TIM0 ORG 0030H MAIN MOV SP 30H 設(shè)置棧底 MOV TMOD 02H MOV TL0 50 MOV IE 82H SETB P1 0 SETB TR0 SJMP ORG 0100H TIM0 JNB P1 0 AA CLR P1 0 MOV TL0 150 RETI AA SETB P1 0 MOV TL0 50 RETI END 9 設(shè) fosc 12MHz 試編寫一段程序 功能為 對定時器 T0 初始化 使之工作在模式 2 產(chǎn) 生 200 s 定時 并用查詢 T0 溢出標(biāo)志的方法 控制 P1 1 輸出周期為 2ms 的方波 解 先確定 T0 作為定時器時初值為 56 程序 MOV TMOD 02H MOV TL0 56 MOV TH0 56 MOV R7 5 設(shè)置循環(huán)次數(shù) SETB TR0 AA JBC TF0 AA DJNZ R7 AA CPL P1 1 MOV R7 5 SJMP AA END 10 已知 8051 單片機(jī)系統(tǒng)時鐘頻率為 6MHz 利用其定時器測量某正脈沖寬度時 采用哪 種工作模式可以獲得最大的量程 能夠測量的最大脈寬是多少 第第 6 6 章章 串口通信串口通信 1 異步通信和同步通信的主要區(qū)別是什么 MCS 51 串行口有沒有同步通信功能 答案 異步通信因?yàn)槊繋瑪?shù)據(jù)都有起始位和停止位 所以傳送數(shù)據(jù)的速率受到限制 但異步通 信不需要傳送同步脈沖 字符幀的長度不受限制 對硬件要求較低 因而在數(shù)據(jù)傳送量不很 大 同步通信一次可以連續(xù)傳送幾個數(shù)據(jù) 每個數(shù)據(jù)不需起始位和停止位 數(shù)據(jù)之間不留間 隙 因而數(shù)據(jù)傳輸速率高于異步通信 但同步通信要求用準(zhǔn)確的時鐘來實(shí)現(xiàn)發(fā)送端與接收端 之間的嚴(yán)格同步 MCS 51 串行口有同步通信功能 2 解釋下列概念 1 并行通信 串行通信 2 波特率 3 單工 半雙工 全雙工 4 奇偶校驗(yàn) 答案 1 并行通信 數(shù)據(jù)的各位同時進(jìn)行傳送 其特點(diǎn)是傳送速度快 效率高 數(shù)據(jù)有多少位 就需要有多少根傳輸線 當(dāng)數(shù)據(jù)位數(shù)較多和傳送距離較遠(yuǎn)時 就會導(dǎo)致通信線路成本提高 因此它適合于短距離傳輸 串行通信 數(shù)據(jù)一位一位地按順序進(jìn)行傳送 其特點(diǎn)是只需一對傳輸線就可實(shí)現(xiàn)通信 當(dāng)傳輸?shù)臄?shù)據(jù)較多 距離較遠(yuǎn)時 它可以顯著減少傳輸線 降低通信成本 但是串行傳送的 速度慢 2 波特率 每秒鐘傳送的二進(jìn)制數(shù)碼的位數(shù)稱為波特率 也稱比特?cái)?shù) 單位是 bps bit per second 即位 秒 3 單工 只允許數(shù)據(jù)向一個方向傳送 即一方只能發(fā)送 另一方只能接收 半雙工 允許數(shù)據(jù)雙向傳送 但由于只有一根傳輸線 在同一時刻只能一方發(fā)送 另 一方接收 全雙工 允許數(shù)據(jù)同時雙向傳送 由于有兩根傳輸線 在 A 站將數(shù)據(jù)發(fā)送到 B 站的同 時 也允許 B 站將數(shù)據(jù)發(fā)送到 A 站 4 奇偶校驗(yàn) 為保證通信質(zhì)量 需要對傳送的數(shù)據(jù)進(jìn)行校驗(yàn) 對于異步通信 常用的校 驗(yàn)方法是奇偶校驗(yàn)法 采用奇偶校驗(yàn)法 發(fā)送時在每個字符 或字節(jié) 之后附加一位校驗(yàn)位 這個校驗(yàn)位可以是 0 或 1 以便使校驗(yàn)位和所發(fā)送的字符 或字節(jié) 中 1 的個數(shù)為奇數(shù) 稱為奇校驗(yàn) 或?yàn)?偶數(shù) 稱為偶校驗(yàn) 接收時 檢查所接收的字符 或字節(jié) 連同奇偶校驗(yàn)位中 1 的個數(shù)是 否符合規(guī)定 若不符合 就證明傳送數(shù)據(jù)受到干擾發(fā)生了變化 CPU 可進(jìn)行相應(yīng)處理 3 MCS 51 串行口控制寄存器 SCON 中 SM2 TB8 RB8 有何作用 主要在哪幾種方式下 使用 答案 SM2 多機(jī)通信控制位 主要在方式 1 2 3 下使用 TB8 存放發(fā)送數(shù)據(jù)的第 9 位 主要在方式 2 3 下使用 RB8 存放接收數(shù)據(jù)的第 9 位或停止位 主要在方式 1 2 3 下使用 4 試分析比較 MCS 51 串行口在四種工作方式下發(fā)送和接收數(shù)據(jù)的基本條件和波特率的產(chǎn) 生方法 答案 發(fā)送數(shù)據(jù)的基本條件 方式 0 1 2 3 CPU 執(zhí)行一條將數(shù)據(jù)寫入發(fā)送緩沖器 SBUF 的指令 接收數(shù)據(jù)的基本條件 方式 0 用軟件使 REN 1 同時 RI 0 方式 1 用軟件使 REN 1 一幀數(shù)據(jù)接收完畢后 必須同時滿足以下兩個條件 RI 0 SM2 0 或接收到的停止位為 1 這次接收才真正有 效 將 8 位數(shù)據(jù)送入 SBUF 停止位送 RB8 置位 RI 否則 這次接收到的數(shù)據(jù)將因不能裝 入 SBUF 而丟失 方式 2 3 軟件使 REN 1 同時滿足以下兩個條件 RI 0 SM2 0 或接收到的第 9 位數(shù)據(jù)為 1 SM2 1 則這次接收有效 8 位數(shù)據(jù)裝入 SBUF 第 9 位數(shù)據(jù) 裝入 RB8 并由硬件置位 RI 否則 接收的這一幀數(shù)據(jù)將丟失 波特率的產(chǎn)生方法 在方式 0 下 串行口的波特率是固定的 即波特率 fosc 12 在方式 1 3 下 串行口波特率 由定時器 T1 的溢出率和 SMOD 值同時決定 相應(yīng)公式為 波特率 2SMOD T1 溢出率 32 在方式 2 下 串行口的波特率可由 PCON 中的 SMOD 位控制 若使 SMOD 0 則所選波特 率為 fosc 64 若使 SMOD 1 則波特率為 fosc 32 即 5 為何 T1 用作串行口波特率發(fā)生器時常用模式 2 若 fosc 6MHz 試求出 T1 在模式 2 下可 能產(chǎn)生的波特率的變化范圍 答案 定時器 T1 作為波特率發(fā)生器可工作于模式 0 模式 1 和模式 2 其中模式 2 在 T1 溢 出后可自動裝入時間常數(shù) 避免了重裝參數(shù) 因而在實(shí)際應(yīng)用中除非波特率很低 一般都采 用模式 2 若 fosc 6MHz T1 在模式 2 下可能產(chǎn)生的波特率的變化范圍為 61 04 bps 15625 bps 6 簡述多機(jī)通信原理 答案 當(dāng)主機(jī)選中與其通信的從機(jī)后 只有該從機(jī)能夠與主機(jī)通信 其他從機(jī)不能與主機(jī)進(jìn) 行數(shù)據(jù)交換 而只能準(zhǔn)備接收主機(jī)發(fā)來的地址幀 上述要求是通過 SCON 寄存器中的 SM2 和 TB8 來實(shí)現(xiàn)的 當(dāng)主機(jī)發(fā)送地址幀時使 TB8 1 發(fā)送數(shù)據(jù)幀時使 TB8 0 TB8 是發(fā)送的 一幀數(shù)據(jù)的第 9 位 從機(jī)接收后將第 9 位數(shù)據(jù)作為 RB8 這樣就知道主機(jī)發(fā)來的這一幀數(shù)據(jù) 是地址還是數(shù)據(jù) 另外 當(dāng)一臺從機(jī)的 SM2 0 時 可以接收地址幀或數(shù)據(jù)幀 而當(dāng) SM2 1 時只能接收地址幀 這就能實(shí)現(xiàn)主機(jī)與所選從機(jī)之間的單獨(dú)通信 7 試用 8051 串行口擴(kuò)展 I O 口 控制 16 個發(fā)光二極管自右向左以一定速度輪流發(fā)光 畫 出電路并編寫程序 答案 電路如下 程序如下 ORG 0000H AJMP MAIN ORG0023H AJMPSBS 轉(zhuǎn)向串行口中斷服務(wù)程序 ORG2000H MAIN MOV SCON 00H 串行口設(shè)置為方式 0 MOV A 01H 最右邊一位發(fā)光二極管先亮 2SMOD 64 fosc波特率 CLRP1 0 關(guān)閉并行輸出 熄滅顯示 CLRP1 1 MOV SBUF A 開始串行輸出 LOOP SJMPLOOP 等待中斷 SBS INC R0 CJNE R0 11H DSP MOV R0 01H DSP CJNE R0 08H DSPR SETB P1 1 啟動高 8 位并行輸出 DSPR SETB P1 0 啟動低 8 位并行輸出 ACALLDELY 顯示延遲 1s CLRTI 清發(fā)送中斷標(biāo)志 RLA 準(zhǔn)備點(diǎn)亮下一位 CLRP1 0 關(guān)閉并行輸出 熄滅顯示 CLRP1 1 MOV SBUF A 串行輸出 ZDFH RETI DELY MOV R2 05H 延時 1s 子程序 fosc 6MHz DELY0 MOV R3 0C8H DELY1 MOV R4 0F8H NOP DELY2 DJNZR4 DELY2 DJNZ R3 DELY1 DJNZ R2 DELY0 RET END 8 試設(shè)計(jì)一個 8051 單片機(jī)的雙機(jī)通信系統(tǒng) 串行口工作在方式 1 波特率為 2400bps 編 程將甲機(jī)片內(nèi) RAM 中 40H 4FH 的數(shù)據(jù)塊通過串行口傳送到乙機(jī)片內(nèi) RAM 的 40H 4FH 單元中 答案 雙方約定的通信協(xié)議如下 甲機(jī)先發(fā)送請求乙機(jī)接收信號 0AAH 乙機(jī)收到該信號后 若為準(zhǔn)備好狀態(tài) 一個則發(fā)送 數(shù)據(jù) 0BBH 作為應(yīng)答信號 表示同意接收 當(dāng)甲機(jī)發(fā)送完 16 個字節(jié)后 再向乙機(jī)發(fā)送一 個累加校驗(yàn)和 校驗(yàn)和是針對數(shù)據(jù)塊進(jìn)行的 即在數(shù)據(jù)發(fā)送時 發(fā)送方對塊中的數(shù)據(jù)簡單求 和 產(chǎn)生一個單字節(jié)校驗(yàn)字符 校驗(yàn)和 附加到數(shù)據(jù)塊結(jié)尾 在數(shù)據(jù)接收時 接收方每接 收一個數(shù)據(jù)也計(jì)算一次校驗(yàn)和 接收完數(shù)據(jù)塊后 再接收甲機(jī)發(fā)送的校驗(yàn)和 并將接收到的 校驗(yàn)和與乙機(jī)求出的校驗(yàn)和進(jìn)行比較 向甲機(jī)發(fā)送一個狀態(tài)字 表示正確 00H 或出錯 0FFH 出錯則要求甲機(jī)重發(fā) 甲機(jī)收到收到乙機(jī)發(fā)送的接收正確應(yīng)答信號 00H 后 即結(jié)束發(fā)送 否則 就重發(fā)一次數(shù)據(jù) 甲機(jī)采用查詢方式進(jìn)行數(shù)據(jù)發(fā)送 乙機(jī)采用中斷方式進(jìn)行數(shù)據(jù)接收 雙方約定傳輸波特率為 2400bps 兩機(jī)主頻均為 11 059MHz 雙機(jī)串行口都工作于方式 1 查表 6 2 可知 SMOD 0 定時器 T1 采用工作模式 2 初值為 F4H 甲機(jī)發(fā)送子程序 ORG2000H SEND MOV TMOD 20H 定時器 1 設(shè)為模式 2 MOV TL1 0F4H MOV TH1 0F4H 置定時器初值 SETB TR1 啟動 T1 MOV SCON 50H 設(shè)串行口為方式 2 MOV PCON 00H SMOD 0 TLLS MOV SBUF 0AAH 發(fā)送請求接收信號 WFS1 JBCTI RYD1 等待發(fā)送 SJMP WFS1 RYD1 JBCRI RYD2 等待乙機(jī)回答 SJMP RYD1 RYD2 MOV A SBUF 接收應(yīng)答信號 XRL A 0BBH JNZ TLLS 乙機(jī)未準(zhǔn)備好 繼續(xù)聯(lián)絡(luò) SDD1 MOV R0 40H 首地址 40H R0 MOV R1 10H 數(shù)據(jù)個數(shù) R1 MOV R2 00H 清校驗(yàn)和寄存器 SDD2 MOV SBUF R0 發(fā)送一個數(shù)據(jù) MOV A R2 ADD A R0 求校驗(yàn)和 MOV R2 A 保存校驗(yàn)和 INC R0 WFS2 JBCTI SDD3 等待發(fā)送 SJMP WFS2 SDD3 DJNZ R1 SDD2 數(shù)據(jù)塊是否發(fā)送完 MOV SBUF R2 發(fā)送校驗(yàn)和 WFS3 JBCTI RYD3 SJMP WFS3 RYD3 JBCRI RYD4 等待乙機(jī)回答 SJMP RYD3 RYD4 MOV A SBUF JNZ SDD1 回答出錯則重發(fā) RET 乙機(jī)接收子程序 ORG2000H RECV MOV TMOD 20H 定時器 1 設(shè)為模式 2 MOV TL1 0F4H MOV TH1 0F4H 置定時器初值 SETB TR1 啟動 T1 MOV SCON 50H 設(shè)串行口為方式 2 MOV PCON 00H SMOD 0 MOV R0 40H 首地址 40H R0 MOV R1 10H 數(shù)據(jù)個數(shù) R1 MOV 50H 00H 清校驗(yàn)和寄存器 SETB 7FH SETB 7EH 標(biāo)志位初始置 1 SETB ES 允許接收中斷 SETB EA 開中斷 LOOP SJMPLOOP 等待中斷 中斷服務(wù)子程序 CLR EA CLR RI 清中斷 JB 7FH RCMD 是請求接收信號嗎 JB 7EH DATA 是數(shù)據(jù)塊嗎 MOV A SBUF 接收校驗(yàn)和 CJNE A 50H ERR 判斷發(fā)送是否正確 MOV A 00H MOV SBUF A 正確 發(fā) 00H WFS1 JNBTI WFS1 等待發(fā)送 CLR TI SJMP RETN ERR MOV A 0FFH MOV SBUF A 出錯 發(fā) 0FFH WFS2 JNBTI WFS2 等待發(fā)送 CLR TI SJMP AGAN RCMD MOVA SBUF 接收甲機(jī)請求信號 XRL A 0AAH JZ TYDX SJMP RETN TYDX MOVSBUF 0BBH 發(fā)送應(yīng)答信號 0BBH WFS3 JNBTI WFS3 等待發(fā)送 CLR TI CLR 7FH SJMP RETN DATA MOVA SBUF 接收數(shù)據(jù) MOV R0 A INC DPTR ADD A 50H 求校驗(yàn)和 MOV 50H A 保存校驗(yàn)和 DJNZ R1 RETN CLR 7EH 數(shù)據(jù)接收完后清數(shù)據(jù)標(biāo)志位 SJMP RETN AGAN SETB7FH SETB 7EH 恢復(fù)標(biāo)志位 MOV DPTR 2000H 首地址 2000H DPTR MOV R1 10 數(shù)據(jù)個數(shù) R1 MOV 50H 00H 清校驗(yàn)和寄存器 RETN SETB EA 開中斷 RETI 9 8051 以方式 2 進(jìn)行串行通信 假定波特率為 1200bps 第 9 位作奇偶校驗(yàn)位 以中斷方 式發(fā)送 請編寫程序 答案 主程序 ORG2000H MAIN MOV SCON 80H 將串行口設(shè)置為方式 2 REN 1 MOV PCON 00H SMOD 0 MOV R0 30H 發(fā)送數(shù)據(jù)區(qū)首地址 R0 MOV R1 50H 接收數(shù)據(jù)區(qū)首地址 R1 MOV R2 20 置發(fā)送數(shù)據(jù)個數(shù) R2 SETB ES SETB EA 開中斷 LOOP SJMPLOOP 等待中斷 中斷服務(wù)子程序 ORG0023H AJMPSOUT 轉(zhuǎn)至中斷服務(wù)程序 ORG0200H SOUT CLRTI 清發(fā)送中斷標(biāo)志 DJNZ R2 LOOP1 數(shù)據(jù)未發(fā)送完 繼續(xù)發(fā)送 SJMP RR1 發(fā)送完返回 LOOP1 MOV A R0 取發(fā)送數(shù)據(jù)到 A MOV C PSW 0 MOV TB8 C MOV SBUF A 發(fā)送數(shù)據(jù) INCR0 指向下一個數(shù)據(jù) RR1 RETI 10 8051 以方式 3 進(jìn)行串行通信 假定波特率為 1200bps 第 9 位作奇偶驗(yàn)位 以查詢方式 接收 請編寫程序 答案 ORG2000H RECV MOV TMOD 20H 定時器 1 設(shè)為模式 2 MOV TL1 0E8H MOV TH1 0E8H 置定時器初值 SETB TR1 啟動 T1 MOV SCON 0D0H 將串行口設(shè)置為方式 3 REN 1 MOV PCON 00H SMOD 0 MOV R1 20H 接收數(shù)據(jù)區(qū)首地址 R1 MOV R2 16 置發(fā)送數(shù)據(jù)個數(shù) R2 WAIT JBC RI PRI 等待接收到數(shù)據(jù) SJMP WAIT PRI MOV A SBUF 讀接收數(shù)據(jù) JNB PSW 0 PZEO P 0 則跳轉(zhuǎn) JNB RB8 ERR P 1 RB8 0 轉(zhuǎn)至出錯 SJMP RIGHT P 1 RB8 1 轉(zhuǎn)至正確 PZEO JB RB8 ERR P 0 RB8 1 轉(zhuǎn)至出錯 RIGHT MOV R1 A 存放數(shù)據(jù) INCR1 指向下一個存儲單元 DJNZ R2 WAIT 未接收完則繼續(xù)接收 CLR F0 F0 0 RET ERR CLR REN SETB F0 置 F0 1 RET 11 RS 232C 總線標(biāo)準(zhǔn)是如何定義其邏輯電平的 實(shí)際應(yīng)用中可以將 MCS 51 單片機(jī)串行口 和 PC 機(jī)的串行口直接相連嗎 為什么 答

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論