版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、單片機的C語言應(yīng)用程序設(shè)計,2,課程的目的和任務(wù),課程的目的 系統(tǒng)介紹單片機C語言編程 基本方法; 應(yīng)用技術(shù)。 課程的任務(wù) 學(xué)習(xí)單片機硬件接口結(jié)構(gòu)上 以C語言為主要編程工具; 匯編語言為輔助編程工具; 采用模塊化編程技術(shù); 獨立進(jìn)行應(yīng)用程序設(shè)計。,3,課程的基本要求,通過本課程的學(xué)習(xí),應(yīng)該 掌握8051單片機的指令系統(tǒng); 掌握C51程序設(shè)計語言; 掌握8051中斷、定時器/計數(shù)器、串行通信等內(nèi)部資源的C編程方法; 正確理解單片機C語言模塊化設(shè)計匯編、編譯及優(yōu)化方法; 掌握8051外部擴(kuò)展資源、輸出控制、數(shù)據(jù)采集以及人機交互的C程序設(shè)計方法。,4,授課內(nèi)容,第一章 C51與單片機; 第二章 80
2、C51的C語言簡介(C51) ; 第三章 C51數(shù)據(jù)與運算; 第四章 C51流程控制語句 ; 第五章 C51構(gòu)造數(shù)據(jù)類型; 第六章 C51函數(shù) ; 第七章 模塊化程序設(shè)計; 第八章 80C51內(nèi)部資源的C編程; 第九章 80C51外部接口的C編程 。,5,課時安排與考核辦法,課程學(xué)時:共48學(xué)時 其中: 講課 32學(xué)時 實驗 16學(xué)時 (4次),考核辦法,采取平時和期末考試綜合評定成績,平時成績不低于總成績的30%,考試成績不低于總成績的70%,6,教材及參考書,教材 單片機的C語言應(yīng)用程序設(shè)計,馬忠梅、籍順心、張凱、馬巖等,北京航空航天大學(xué)出版社 參考書 單片機C程序設(shè)計及應(yīng)用實例,胡偉、季
3、曉衡主編, 人民郵電出版社 單片機高級語言C51Windows 環(huán)境編程與應(yīng)用,徐愛鈞、彭秀華主編,電子工業(yè)出版社 單片機應(yīng)用技術(shù)教程,張洪潤,易濤主編 清華大學(xué)出版社 MCS51系列單片機原理及應(yīng)用,孫涵芳、徐愛卿主編,北京航空航天大學(xué)出版社,7,1.1 匯編語言與高級語言,相關(guān)定義 機器語言:用二進(jìn)制代碼表示的能為計算機立即識別和執(zhí)行的指令。 匯編語言:采用一些簡單而又形象的符號來代表操作碼或地址碼所編寫的指令。 源程序:用匯編語言編寫的程序稱為匯編語言源程序,簡稱源程序。 目標(biāo)程序:將匯編語言編寫的源程序“翻譯”成機器語言的程序,這種經(jīng)過翻譯之后的形成的機器語言程序稱為目標(biāo)程序。 編譯程
4、序:把用高級語言編寫的源程序全部翻譯成機器語言程序,稱為編譯程序。,第一章C51與單片機,8,補充,源代碼(也稱源程序),是指一系列人類可讀的計算機語言指令。計算機程序包括源程序和目標(biāo)程序。同一程序的源文本和目標(biāo)文本應(yīng)當(dāng)視為同一作品。源程序是指用高級語言或匯編語言編寫的程序。 源程序具有易讀性,規(guī)范性,簡易性。并不是所有的程序都是這樣。,9,目標(biāo)程序 由編譯程序?qū)⒃闯绦蚓幾g成與之等價的由機器碼構(gòu)成的,計算機能直接運行的程序,該程序叫目標(biāo)程序。 計算機并不能直接地接受和執(zhí)行用高級語言編寫的源程序,源程序在輸入計算機時,通過翻譯程序翻譯成機器語言形式的目標(biāo)程序,計算機才能識別和執(zhí)行。這種翻譯通常有
5、兩種方式,即編譯方式和解釋方式。編譯方式是指利用事先編好的一個稱為編譯程序的機器語言程序,作為系統(tǒng)軟件存放在計算機內(nèi),當(dāng)用戶將高級語言編寫的源程序輸入計算機后,編譯程序便把源程序整個地翻譯成用機器語言表示的與之等價的目標(biāo)程序,然后計算機再執(zhí)行該目標(biāo)程序,以完成源程序要處理的運算并取得結(jié)果。解釋方式是指源程序進(jìn)入計算機后,解釋程序邊掃描邊解釋,逐句輸入逐句翻譯,計算機一句句執(zhí)行,并不產(chǎn)生目標(biāo)程序。如PASCAL、FORTRAN、COBOL等高級語言執(zhí)行編譯方式;BASIC語言則以執(zhí)行解釋方式為主;而PASCAL、C語言是能書寫編譯程序的高級程序設(shè)計語言。,10,編譯程序、解釋程序、匯編程序是3種
6、語言處理程序。其區(qū)別主要為:匯編程序(為低級服務(wù))是將匯編語言書寫的源程序翻譯成由機器指令和其他信息組成的目標(biāo)程序。解釋程序(為高級服務(wù))直接執(zhí)行源程序或源程序的內(nèi)部形式,一般是讀一句源程序,翻譯一句,執(zhí)行一句,不產(chǎn)生目標(biāo)代碼,如BASIC解釋程序。編譯程序(為高級服務(wù))是將高級語言書寫的源程序翻譯成與之等價的低級語言的目標(biāo)程序。編譯程序與解釋程序最大的區(qū)別之一在于前者生成目標(biāo)代碼,而后者不生成;此外,前者產(chǎn)生的目標(biāo)代碼的執(zhí)行速度比解釋程序的執(zhí)行速度要快;后者人機交互好,適于初學(xué)者使用。用COBOL、FORTRAN等語言編寫的程序考慮到執(zhí)行速度一般都是編譯執(zhí)行。,11,一種面向機器的低級程序設(shè)
7、計語言。 以助記符形式表示每一條計算機指令。 主要特點: 匯編語言程序與處理器指令系統(tǒng)密切相關(guān); 程序員可直接、有效地控制系統(tǒng)硬件; 形成的可執(zhí)行文件運行速度快、占用主存容量少。 匯編語言源程序需要利用匯編程序進(jìn)行“翻譯”。 匯編語言程序與匯編程序是兩個概念 !,匯編語言,12,匯編語言采用助記符,助記符(mnemonic)是便于人們記憶、并能描述指令功能和指令操作數(shù)的符號。 助記符一般就是表明指令功能的英語單詞或其縮寫 用助記符表示的指令就是匯編格式指令 匯編格式指令以及使用它們編寫程序的規(guī)則就形成匯編語言(Assembly Language) 用匯編語言書寫的程序就是匯編語言程序,或稱匯編
8、語言源程序。 匯編程序?qū)R編語言程序“匯編”成機器代碼目標(biāo)模塊。,13,匯編語言編寫的程序格式,標(biāo)號:操作碼 操作數(shù) ;注釋 例如:MOV A,#20H;立即數(shù)送A 標(biāo)號:指令符號地址,以便于在源程序中找到相應(yīng)的語 句。標(biāo)號的后面一定要帶冒號; 操作碼:用記憶符來表示; 操作數(shù):用符號地址,如A或#20H; 注釋:分號后面的是注釋部分,以說明語句的功能,便于 閱讀和交流。 注意: 不是每一條指令都需要標(biāo)號,需要其它語句訪問時才加一個標(biāo)號。 標(biāo)號由18個ASCII字符組成,但頭一個字符必須是字母,其它字符可以是字母、數(shù)字或其他特定字符。 不能使用本匯編語言已定義的符號作為標(biāo)號,如指令助記符、偽指
9、令記憶符以及寄存器的符號名稱等。 不是每一條語句都需要注釋。,14,匯編語言和高級語言比較一,匯編語言與處理器密切相關(guān) 匯編語言程序的通用性、可移植性較差 高級語言與具體計算機無關(guān) 高級語言程序可以在多種計算機上編譯后執(zhí)行,15,匯編語言和高級語言比較二,匯編語言功能有限,又涉及硬件細(xì)節(jié) 編寫程序比較繁瑣,調(diào)試起來也比較困難 高級語言提供了強大的功能,不必關(guān)心瑣碎問題 類似自然語言的語法,易于掌握和應(yīng)用,16,匯編語言和高級語言比較三,匯編語言本質(zhì)上就是機器語言 可以直接、有效地控制計算機硬件 易于產(chǎn)生速度快、容量小的高效率目標(biāo)程序 高級語言不針對具體計算機系統(tǒng) 不易直接控制計算機的各種操作
10、產(chǎn)生目標(biāo)程序比較龐大、運行速度較慢,17,匯編語言和高級語言比較總結(jié),匯編語言的優(yōu)點: 直接控制計算機硬件部件 可以編寫在“時間”和“空間”兩方面最有效的程序 匯編語言的缺點: 與處理器密切有關(guān) 需要熟悉計算機硬件系統(tǒng)、考慮許多細(xì)節(jié)問題 編寫程序繁瑣,調(diào)試、維護(hù)、交流和移植困難,18,匯編語言和高級語言比較結(jié)論,匯編語言的優(yōu)點使得他在程序設(shè)計中占有重要的位置,是不可被取代的。 匯編語言的缺點使得人們主要采用高級語言進(jìn)行程序開發(fā)工作。 有時需要采用高級語言和匯編語言混合編程的方法,互相取長補短,更好地解決實際問題。,19,匯編語言的主要應(yīng)用場合,程序要具有較快的執(zhí)行時間,或者只能占用較小的存儲容
11、量。 程序與計算機硬件密切相關(guān),程序要直接、有效地控制硬件。 大型軟件需要提高性能、優(yōu)化處理的部分。 沒有合適的高級語言、或只能采用匯編語言的時候。 分析具體系統(tǒng)尤其是該系統(tǒng)的底層軟件、加密解密軟件、分析和防治計算機病毒等等。 匯編語言的用途實在不小 !,20,1.2 單片機的結(jié)構(gòu)特點,單片機是在一塊硅片上集成了CPU、RAM、ROM、定時器/計數(shù)器和多種I/O接口電路的微型計算機。 主流單片機:雖然單片機的品種繁多,各具特色,但仍以8051為核心, 8051為核心的單片機占據(jù)了半壁江山。 兼容其結(jié)構(gòu)和指令系統(tǒng)有 PHILIPS公司的產(chǎn)品; ATMEL公司的產(chǎn)品; 中國臺灣的SyncMos、W
12、inbond系列單片機等。 注8051與80C51: MCS-51系列單片機有兩種半導(dǎo)體生產(chǎn)工藝: HMOS:高密度金屬氧化物半導(dǎo)體工藝,功耗630mW; CHMOS:互補高密度氧化物半導(dǎo)體工藝,具有高速度、高密度的特點及CMOS低功耗的特點,功耗120mW。 具有CHMOS工藝的MCS-51系列單片機帶有字母“C”,其余為HMOS工藝。,1.2.1 單片機的發(fā)展,21,80C51單片機指MCS51系列和其它公司的8051派生產(chǎn)品。這些派生產(chǎn)品是在基本型的基礎(chǔ)上增強了各種功能的產(chǎn)品,如高級語言型、Flash型、EEPROM型、A/D型、DMA型、多并行口型、專用接口型和雙控制器串行通信型等。
13、Atmel公司的AT89系統(tǒng)單片機把8051內(nèi)核與其Flash專利存儲技術(shù)相結(jié)合,具有較高性價比。 Philips公司具有豐富的外圍部件,是8051系列單片機品種最多的生產(chǎn)廠家。 Dallas公司和Infineon公司的單片機增加了數(shù)據(jù)指針和運算能力。 ADI公司和TI公司把ADC,DAC和8051內(nèi)核結(jié)合起來,推出微轉(zhuǎn)換器系統(tǒng)芯片。 Cypress公司把8051內(nèi)核和USB接口結(jié)合起來,推出USB控制器芯片。 Cygnal公司的片上系統(tǒng)單片機C8051F系列改進(jìn)了8051內(nèi)核,具有JTAG接口,可實現(xiàn)在線下載和調(diào)試程序,是8051最具生命力的體現(xiàn)。,派生 80C51產(chǎn)品,22,1.2 單片機
14、的結(jié)構(gòu)特點,常用的單片機有 MICROCHIP PIC16C5X系列 Intel MCS-51系列 Philips 80C51XA Intel 8XC251 ATMEL 89系列 Philips 83C552 DALLAS DS80C320 WINBOND W78C31 Philips 87C752,23,MICROCHIP PIC16C5X系列,PIC16C5X系列單片機是MICROCHIP公司高性價比嵌入式8位單片機,CMOS工藝,其高速度、低電壓工作、低功耗、強大驅(qū)動能力、低價OTP技術(shù)(一次性編程)、體積小等都體現(xiàn)了單片機工業(yè)的新趨勢。 采用精簡指令集(RISC),僅33條指令。字長1
15、2位,全部是單字節(jié)指令。 工作頻率為DC-20MHz 系統(tǒng)為哈佛結(jié)構(gòu)。數(shù)據(jù)總線8位,指令總線為12位。 內(nèi)部程序存儲器從0.5K-2K不等。內(nèi)部寄存器組有25-72個。 7個特殊功能寄存器。 2級子程序堆棧。 工作電源:2.5V-6.25V 內(nèi)部自振式看門狗(WDT) 低功耗模式(Standby Mode),耗電小于10uA. 內(nèi)部復(fù)位電路 內(nèi)帶一個8位定時器/計數(shù)器(RTCC) 具備保密位。保密熔絲可在燒寫時熔斷,使程序不能被讀出拷貝。 提供四種可選振蕩方式:RC、XT、HS、LP 12-20根雙向可獨立編程I/O口。,24,Intel MCS-51系列,MCS-51是Intel公司生產(chǎn)的一
16、個單片機系列的名稱。屬于這一個系列的單片機芯片有許多種,如8051,8751,80C51BH等等,它們的基本組成、基本性能和指令系統(tǒng)都是相同的。是目前國內(nèi)最常用的單片機。 MCS-51單片機的基本組成: 一個8位的微處理器。 片內(nèi)數(shù)據(jù)存儲器RAM(128B/256B),用以存放可以讀/寫的數(shù)據(jù)。 片內(nèi)程序存儲器ROM/EPROM(4KB/8KB),用以存放程序,數(shù)據(jù)和表格。 四個8位并行I/O口P0-P3,每個口既可以用作輸入,也可以用作輸出。 兩個定時器/計數(shù)器,每個都可以設(shè)成對外計數(shù)和內(nèi)定時方式。 五個中斷源的中斷控制系統(tǒng)。 一個全雙工UART(通用異步接收發(fā)送器)串行I/O,用于串行通訊
17、。 片內(nèi)振蕩器和時鐘產(chǎn)生電路,最高振蕩頻率達(dá)12M。 溫度范圍為: 民品(商業(yè)用A) 0 - 70攝氏度 工業(yè)品 -40 - 85攝氏度 軍用品 -65 - 125攝氏度,25,Philips 80C51XA,Philips Semiconductor 最新推出新一代80C51系列16位微處理器-80C51XA與當(dāng)今廣泛使用的80C51系統(tǒng)保持著源碼級的兼容性,用戶不用投入很大的軟件開銷和人員就能極大提高其產(chǎn)品性能。80C51XA是對原8位微控制基本結(jié)構(gòu)徹底改進(jìn)的基礎(chǔ)上,使其滿足現(xiàn)代設(shè)計人員的不同需求的各種高性能,主要包括: 提高執(zhí)行速度。比80C51快10-100倍。 支持最新的高級語言,如
18、C語言。 支持實時多任務(wù)執(zhí)行。XA提供系統(tǒng)堆棧和用戶堆棧。多任務(wù)彼此隔離。 易于形成派生產(chǎn)品系列。 80C51XA的結(jié)構(gòu)特征: 與標(biāo)準(zhǔn)的8XC51核(匯編源程序級)向后兼容 24位尋址范圍(16MB程序代碼和數(shù)據(jù)空間),26,Philips 80C51XA,16位靜態(tài)CPU 可使用16位字和8位字節(jié)的擴(kuò)展結(jié)構(gòu) 高的程序代碼效率,大多數(shù)指令為2-4字節(jié) 快速的16 X 16乘法和32 / 16的除法指令 16位堆棧指針和通用寄存器 支持32個矢量中斷(31個可屏蔽和1個不可屏蔽) 支持16位硬陷阱和16位軟陷阱 對多任務(wù)的硬件支持,27,Intel 8XC251,MCS 251系列單片機是最新的
19、,也是Intel公司8位單片機的最高系列,它是MCS 51的換代產(chǎn)品,且與MCS 51完全兼容,而且還吸取16位單片機的許多特點和功能,如:PCA(可編程計數(shù)器陣列)、電源管理、存貯空間管理等,嶄新的指令系統(tǒng)使用運行速度高于51系列5-15倍。 此系列芯片包括以下一些特征參數(shù): 指令流水線方式,寄存器內(nèi)置于CPU,最短的指令只需1個狀態(tài)周期。 線性地址可達(dá)64MB。 16KB片內(nèi)OTP ROM/ROM 128KB外部代碼/數(shù)據(jù)存貯空間(17根地址線)。 1KB片內(nèi)RAM,且全部可以位尋址。 64KB外部堆棧。 可配置為頁模式,以及增加等待狀態(tài),擴(kuò)展ALE脈寬。 擴(kuò)展指令集,增添許多新指令,可進(jìn)
20、行8位、16位、32位操作。 芯片內(nèi)多種外設(shè):3個16位定時器/計數(shù)器,1個串口,5個PCA模塊 (含1個軟件WDT),1個硬件WDT,7個中斷源。,28,ATMEL 89系列,ATMEL 89系列是以8031核構(gòu)成,所以和8051系列完全兼容。它的優(yōu)點是: 內(nèi)部含F(xiàn)lash存貯器 和80C51插座兼容 靜態(tài)時鐘方式 錯誤編程亦無廢品 可反復(fù)進(jìn)行系統(tǒng)試驗 一、低檔型單片機 AT89C1051和AT89C2051,除了并行I/O端口數(shù)較少之外,其它部件基本和AT89C51差不多,因為它的引腳只有DIP20,所以稱它低檔型。,29,ATMEL 89系列,二、標(biāo)準(zhǔn)型單片機 標(biāo)準(zhǔn)型有89C51、89L
21、V51、89C52、89LV52這4種型號。標(biāo)準(zhǔn)型和MCS51單片兼容的。 內(nèi)部含有4K或8K可重復(fù)編程的Flash存儲器; 可進(jìn)行1000次擦寫操作。 全靜態(tài)工作為0Hz到24Hz; 有3級程序存儲器鎖定; 內(nèi)部含128到256字節(jié)的RAM; 32條可編程的I/O端口; 有2-3個16位定時/計數(shù)器; 有6-8級中斷; 有通用串行口; 有空閑及電源下降方式。,30,ATMEL 89系列,三、高檔型單片機 高檔型只有一種型號AT89S8252,它在標(biāo)準(zhǔn)型基礎(chǔ)上增加一些功能: 8KFlash可下載功能,下載功能是由IBM微機通過AT89S8252的串行外圍接口SPI執(zhí)行的。 除了8KFlash存
22、儲器之外,還含有一個2K的EEPROM,從而提高了存儲容量。 含有9個中斷響應(yīng)的能力。 含有標(biāo)準(zhǔn)型和低檔型不具有的SPI接口。 含有Watchdog定時器。 含有雙數(shù)據(jù)指針。 含有從電源下降的中斷恢復(fù)。,31,Philips 83C552,Philips 83C552是一種高性能微控制器,可廣泛用于儀器儀表、工業(yè)控制、汽車控制、電機調(diào)速等實時測控領(lǐng)域。 83C552是80C51的增強型產(chǎn)品,共68(或80)只引腳,它與Intel 8051兼容,其資源特性如下: 中央處理器為80C51。 8K X 8位ROM,可在外部擴(kuò)展64KB。 256 X 8位RAM,可外部擴(kuò)展64KB數(shù)據(jù)存儲器或I/O。
23、 2個標(biāo)準(zhǔn)的16位定時器/計數(shù)器T0,T1。 1個附加的16位定時器/計數(shù)器T2,配4個捕捉和3個比較寄存器。 1個8路輸入的10位A/D轉(zhuǎn)換器。 2路8位分辨率的脈沖寬度調(diào)制輸出PWM。,32,Philips 83C552,5個8位I/O口,外加一個與模擬輸入共享的8位輸入口。 I2C串行口。 全雙工異步串行口UART。 監(jiān)視定時器(WATCHDOG)T3。 15個具有2個優(yōu)先級的中斷源。 工作頻率為1.2MHz-16MHz.,33,DALLAS DS80C320,87C752是Philips 公司生產(chǎn)的一種小體積、低價格的80C51系列單片機。 其內(nèi)部總線不對外開放,這意味著沒有擴(kuò)展外部程
24、序存儲器和數(shù)據(jù)存儲器的并行擴(kuò)展總線端口。 指令系統(tǒng)和80C51兼容。 內(nèi)含2K字節(jié)的EPROM。 內(nèi)含64字節(jié)的RAM。 2個8位I/O口P1和P3,1個5位I/O口P0,共21根I/O線。 一個常數(shù)可自動重裝的16位定時器/計數(shù)器。 1個固定速率的定時器。 7個中斷源,1個中斷優(yōu)先級。 5路8位A/D轉(zhuǎn)換器 1路脈寬調(diào)制輸出以及方式的I2C總線接口。,34,DALLAS DS80C320,最新改進(jìn)8051兼容蕊片。主要特點簡介如下: 工作頻率為25MHz。 內(nèi)置看門狗計數(shù)器。 內(nèi)置兩組全雙工的串行傳輸端口。 兩組DPTR方便程序設(shè)計。 一個機器周期只需4個時鐘工作周期。,35,87C752單
25、片機,87C752是Philips 公司生產(chǎn)的一種小體積、低價格的80C51系列單片機。 其內(nèi)部總線不對外開放,這意味著沒有擴(kuò)展外部程序存儲器和數(shù)據(jù)存儲器的并行擴(kuò)展總線端口。 指令系統(tǒng)和80C51兼容。 內(nèi)含2K字節(jié)的EPROM。 內(nèi)含64字節(jié)的RAM。 2個8位I/O口P1和P3,1個5位I/O口P0,共21根I/O線。 一個常數(shù)可自動重裝的16位定時器/計數(shù)器。 1個固定速率的定時器。 7個中斷源,1個中斷優(yōu)先級。 5路8位A/D轉(zhuǎn)換器、 1路脈寬調(diào)制輸出以及方式的I2C總線接口。,36,ALU(算術(shù)邏輯單元)對數(shù)據(jù)進(jìn)行 算術(shù)運算; 邏輯運算; 位操作運算。,1.2.2 8位CPU,1.2
26、.3 片內(nèi)振蕩器及時鐘電路,一、8051外部控制總線由輸出控制線及輸入控制信號線構(gòu)成 輸出控制線(如PSEN,ALE,RD,WR); 輸入控制信號線(如INT0,INT1,T0和T1)。,1.2 單片機的結(jié)構(gòu)特點,37,1.2 單片機的結(jié)構(gòu)特點,圖 MCS-51單片機各種周期的相互關(guān)系,二、8051時鐘由反相放大器構(gòu)成振蕩器產(chǎn)生內(nèi)部時鐘,包含振蕩周期、時鐘周期、機器周期、指令周期等基本時序周期: 振蕩周期(節(jié)拍P):振蕩源的周期 (1/fosc) 時鐘周期(狀態(tài)S):振蕩周期的2倍 (2/fosc) 時鐘周期振蕩周期P1振蕩周期P2( SP1P2) 機器周期:含6個時鐘周期(6S) 指令周期:
27、14個機器周期,38,指令的字節(jié)數(shù)與機器周期數(shù),根據(jù)指令所占的字節(jié)數(shù),可分為單字節(jié)、雙字節(jié)與三字節(jié)指令。 根據(jù)指令的執(zhí)行時間,可分為單機器周期、雙機器周期與四機器周期指令。 二者之間有一定的聯(lián)系,但又沒有必然的聯(lián)系。,圖中ALE脈沖為鎖存地址的選通信號,每出現(xiàn)一次該信號單片機即進(jìn)行一次讀指令操作。 從時序圖中可看出,該信號是振蕩頻率6分頻后得到,在一個機器周期中,ALE信號兩次有效,第一次在S1P2和S2P1期間,第二次在S4P2和S5P1期間。,單周期和雙周期取指時序,39,指令的字節(jié)數(shù)與機器周期數(shù),單機器周期指令,主要有: 單字節(jié)指令 如:MOV A, Rn 只進(jìn)行一次讀指令操作,當(dāng)?shù)诙€
28、ALE信號有效時,PC不加1,讀出的還是原指令,屬于一次無效的讀操作。 雙字節(jié)指令如: MOV A,#data 兩次的ALE信號都是有效的,第一個ALE信號有效時讀的是操作碼,第二個ALE信號有效時讀的是操作數(shù)。,雙機器周期指令: 單字節(jié)指令 如: MOVC A,A+DPTR 進(jìn)行四讀指令操作,但只有一次讀操作是有效的,后三次的讀操作均為無效操作。 有一種特殊的情況,象執(zhí)行MOVC這類指令,先在ROM中讀取指令,然后對外部數(shù)據(jù)存儲器進(jìn)行讀或?qū)懖僮?,頭一個機器周期的第一次讀指令的操作碼為有效,而第二次讀指令操作則為無效的。在第二個指令周期時,則訪問外部數(shù)據(jù)存儲器,這時,ALE信號對其操作無影響,
29、即不會再有讀指令操作動作。 雙字節(jié)指令 如:PUSH direct 三字節(jié)指令 如:MOV direct, #data,四機器周期指令: 單字節(jié)四機器周期指令(如單字節(jié)的乘除法指令) 如:MUL AB,40,1.2 單片機的結(jié)構(gòu)特點,三、指令部件 程序計數(shù)器PC:16位計數(shù)器,指向下一條待執(zhí)行指令的地址,可尋址范圍為64K; 指令寄存器IR:存放當(dāng)前正在執(zhí)行的指令; 指令譯碼器ID:對IR中指令操作碼進(jìn)行解釋、產(chǎn)生相應(yīng)的控制信號; 數(shù)據(jù)指針DPTR:16位地址寄存器,既可以用于外部數(shù)據(jù)存儲器、也可以用于外部程序存儲器中的表格數(shù)據(jù),范圍64K 。,41,1.2 單片機的結(jié)構(gòu)特點,程序存儲器:內(nèi)、
30、外部程序存儲器 數(shù)據(jù)存儲器:內(nèi)、外部數(shù)據(jù)存儲器,1.2.4 存儲器組織,圖1.18051存儲器組織結(jié)構(gòu),42,1.2 單片機的結(jié)構(gòu)特點,片內(nèi)有256字節(jié),片外可擴(kuò)展至64K,片外RAM與ROM在地址上重疊。 片內(nèi)RAM 片內(nèi)的256字節(jié)分為兩個區(qū)域 007FH:真正的RAM區(qū) 80FFH:SFR區(qū),一、RAM,圖1.2 內(nèi)部數(shù)據(jù)存儲器的分布,43,1.2 單片機的結(jié)構(gòu)特點,片內(nèi)的低128字節(jié)分為三個區(qū)域: (1)00H1FH:共有四組工作寄存器組,每組占用8個RAM字節(jié),共32字節(jié),記為R0R7, 由程序狀態(tài)控制字PSW的第3位與第4位確定工作寄存器切換; 注:同一時刻只能選用一組工作寄存器
31、(2)20H2FH:可位尋址區(qū),共16字節(jié),對每個字節(jié)的每一位進(jìn)行操作,共有128位,用位地址00H7FH與之對應(yīng);,表1.1 位內(nèi)RAM位尋址區(qū)的位尋址,44,1.2 單片機的結(jié)構(gòu)特點,(3)30H7FH:一般RAM區(qū),共80字節(jié);對8052來說,地址80HFFH也可以作為一般RAM區(qū),與SFR地址重疊,使用時通過地址加以區(qū)別。 片內(nèi)的高128字節(jié)為SFR區(qū) 26個特殊功能寄存器(其中T2CON,RLD,T2只屬于8052),其中5個是雙字節(jié)寄存器(8052的T2,RLD為雙字節(jié)),共占用26個字節(jié)(80C51只占用21個字節(jié)); 注: 8051的SFR區(qū)的128位沒有全部利用 特殊功能寄存
32、器地址能被8整除的可以進(jìn)行位尋址,共有11個特殊功能寄存器可以被位尋址(ACC(0E0H),B(0F0H),PSW(0D0H),P0P3(80H0B0H),IE(0A8H),IP(0B8H), TCON(88H),SCON(98H), IP.5,IP.6,IP.7及IE.6,IE.5未定義,45,1.2 單片機的結(jié)構(gòu)特點,SFR的地址分布, 6 F,F E D C B A 9 8,地址低位,地 址 高 位,46,1.2 單片機的結(jié)構(gòu)特點,表1.2 SFR地址表,圖1.4 SFR地址表,47,(1)并行口:P0P3,表1.4 80C51并行I/O端口的比較,48,1.2 單片機的結(jié)構(gòu)特點,補充表
33、 用于與微機相連接的各種邏輯門集成塊的電氣特性,圖1.5 P3口各引腳功能表,49,P0的位結(jié)構(gòu)圖,組成: 輸出鎖存器: 1個; 三態(tài)緩沖器:2個; 輸出驅(qū)動電路:一對FET(場效應(yīng)管) ; 輸出控制電路:包括1個與門、一個反相器和1路模擬轉(zhuǎn)換開關(guān)(MUX)。,模擬轉(zhuǎn)換開關(guān)的位置由來自CPU的控制信號決定: 一般的I/O口:控制信號為低電平“”時,模擬開關(guān)與鎖存器/Q相連 與門輸出為,上拉FET處于截止?fàn)顟B(tài),輸出極是漏極開路的開漏電路; 寫脈沖加在時鐘端CP上,內(nèi)部總線數(shù)據(jù)取反出現(xiàn)在/Q端上; 經(jīng)輸出FET反相,在P0引腳上出現(xiàn)的數(shù)據(jù)正好是內(nèi)部總線數(shù)據(jù)。,50,B輸入操作(讀操作) 當(dāng)P0口作
34、為輸入口使用時,在電路中有兩個用于讀入的三態(tài)緩沖器應(yīng)區(qū)分讀引腳和讀鎖存器(端口)兩種情況。,A輸出操作(寫操作) 內(nèi)部的寫脈沖加在觸發(fā)器的CP端; 數(shù)據(jù)寫入鎖存器,并向端口引腳輸出,即鎖存器的輸出與引腳的輸出狀態(tài)是一致的; 作通用輸出口時,輸出級屬漏極開路,在驅(qū)動NMOS電路時應(yīng)外接上拉電阻。,51,讀引腳 若輸出鎖存過數(shù)據(jù)0,則T2導(dǎo)通,引腳上的電位始終被鉗在“0”電平上,輸入數(shù)據(jù)不可能被正確地讀入; 在端口處于輸入狀態(tài),應(yīng)先向鎖存器寫“”,這時輸出級個 FET截止,可用作高阻抗輸入(系統(tǒng)復(fù)位時P0=0FFH); 使用下方的數(shù)據(jù)緩沖器,由“讀引腳”信號把緩沖器打開; 端口引腳上的數(shù)據(jù)經(jīng)緩沖器
35、通過內(nèi)部總線讀進(jìn)來。 MOV類傳送指令進(jìn)行讀口操作就是屬于這種情況。,52,讀鎖存器 在端口已處于輸出狀態(tài)的情況下,不能正常讀取引腳的信號,只能讀取鎖存器的狀態(tài); 通過上方的緩沖器讀鎖存器端的狀態(tài),對端口進(jìn)行“讀修改寫”操作指令的需要。 例如“ANL P0,A”就屬于這類指令,執(zhí)行時先讀入P0口鎖存器中的數(shù)據(jù),然后與A的內(nèi)容進(jìn)行邏輯“與”,再把結(jié)果送到P0口輸出。從這種意義上說,該指令又可看作是輸出指令。 除MOV類指令外的其它口操作指令都屬于這種情況。,53,C結(jié)論 P0口既可作地址/數(shù)據(jù)總線使用,又可作通用I/O口用。當(dāng)P0口作地址數(shù)據(jù)總線使用時,就不能再把它當(dāng)通用I/O口使用。 作通用輸
36、出口時,輸出級屬漏極開路,在驅(qū)動NMOS電路時應(yīng)外接上拉電阻。 作通用輸入口使用時,應(yīng)區(qū)分讀引腳和讀鎖存器。讀引腳時,應(yīng)先向鎖存器寫“”,這時輸出級個 FET截止,可用作高阻抗輸入。,54,1.2 單片機的結(jié)構(gòu)特點,表1.3 P3口各引腳功能表,54,第一章,圖1.5 P3口各引腳功能表,55,1.2 單片機的結(jié)構(gòu)特點,(2)CPU:ACC,B,PSW,SP,DPTR(DPL,DPH) 程序計數(shù)器:16位計數(shù)器 注:沒有地址,具有自動加1功能,尋址范圍64K,用戶無法讀寫,但可通過轉(zhuǎn)移、調(diào)轉(zhuǎn)、返回指令改變其內(nèi)容。 ACC:累加器,最常用的專用寄存器,既可以存放操作數(shù),也可以存放中間結(jié)果,復(fù)位后
37、初態(tài)為00H。 乘法運算時,存放被乘數(shù)及16位乘積的低字節(jié); 除法運算時,存放除數(shù)及運算結(jié)果的余數(shù)。 B:一般寄存器,還用于乘除運算,復(fù)位后初態(tài)為00H。 乘法運算時,存放乘數(shù)及16位乘積的高字節(jié); 除法運算時,存放被除數(shù)及運算結(jié)果的商。,56,1.2 單片機的結(jié)構(gòu)特點,PSW:程序狀態(tài)控制字,復(fù)位后初態(tài)為00H。除PSW.1位保留未用外,其余各位的定義及使用如下: CY(PSW.7):進(jìn)位標(biāo)志位,是PSW最常用的標(biāo)志位,它存放算術(shù)運算的進(jìn)位標(biāo)志,位操作時作累加器使用; AC(PSW.6):輔助進(jìn)位標(biāo)志,BCD碼調(diào)整時也要用到AC位狀態(tài); F0(PSW.5):用戶標(biāo)志位,用軟件方法置位或復(fù)位;
38、 RS1和RS0(PSW.4,PSW.3):寄存器組選擇位,四種狀態(tài)組合用來選擇03寄存器組。 OV(PSW.2):溢出標(biāo)志,當(dāng)符號運算結(jié)果超出128+127或無符號乘法運算超過255及除數(shù)為0時,OV1;否則,OV0。 P(PSW.0):奇偶校驗標(biāo)志,若A中1的個數(shù)為奇數(shù)時,P1;否則P0。,表1.5 PSW狀態(tài)字定義,57,1.2 單片機的結(jié)構(gòu)特點,SP:8位堆棧指針,堆棧按照“先進(jìn)后出,后進(jìn)先出”原則進(jìn)行存取。 注: 8051的椎棧為向上生長型,壓棧時SP先加1再將程序計數(shù)器自動保護(hù)進(jìn)棧。 例:(SP)=40H, 則CPU執(zhí)行一條調(diào)用指令或中斷響應(yīng),程序計數(shù)器PC(L)保護(hù)到41H,PC
39、(H)保護(hù)到42H,(SP)42H 。 初始狀態(tài)為07H,一般設(shè)在30H以后的范圍為宜。,(3)中斷系統(tǒng):IE,IP (4)定時器: TCON,TMOD,TL0,TL1,TH0,TH1 (5)串行口:SCON,SBUF,PCON,58,1.2 單片機的結(jié)構(gòu)特點,(6)幾點說明:,內(nèi)部RAM的高128單元,SFR是不連續(xù)地分布,盡管有許多空閑單元,但用戶并不能使用; 程序計數(shù)器不占用RAM單元,在物理上是獨立的,是不可尋址的寄存器; 對專用寄存器只能直接尋址,書寫時既可以使用地址,也可以使用符號。,59,1.2 單片機的結(jié)構(gòu)特點,OV的討論,OV=C6YC7Y 例: 0 1 0 1 0 1 0
40、0 (+84) + 0 1 1 0 1 0 0 1 (+105) CY=0 1 0 1 1 1 1 0 1 (+189) 結(jié)果為負(fù)數(shù),產(chǎn)生正溢出 C6Y=1 C7Y=0 OV=C6YC7Y =1 0=1 除加減法外,無符號數(shù)乘法指令MUL的執(zhí)行結(jié)果也會影響溢出標(biāo)志位。 當(dāng)AB的乘積超過255時,OV=1,否則為0; 當(dāng)除法數(shù)為0時,OV=1,否則為0。 對于兩個單字節(jié)數(shù)相乘,乘積不會超過雙字節(jié),所以MUL AB執(zhí)行后沒有進(jìn)位和溢出的可能,但借用溢出標(biāo)志位OV作為另一種二態(tài)信息的標(biāo)志,當(dāng)乘積不超過單字節(jié)時(B的內(nèi)容為0)OV=0,而乘積超過單字節(jié)時(B的內(nèi)容不為0)令OV=1。,60,1.2 單
41、片機的結(jié)構(gòu)特點,二、ROM 片內(nèi)有4K字節(jié),片外可擴(kuò)展至64K,其中0000H0FFFH這4K字節(jié)對于片內(nèi)ROM和片外ROM是共用的,可用控制信號EA區(qū)分,EA為低電平時,從片外ROM取指,EA為高電平時,從片內(nèi)ROM取指。 8051通過片外程序存儲器選通信號PSEN來選通ROM,當(dāng)PSEN0選通外部ROM。 程序存貯器某些單元是保留給系統(tǒng)使用的: (1)0000H0002H:所有執(zhí)行程序的入口地址; (2)0003H002AH:中斷服務(wù)程序入口地址。,61,1.2 單片機的結(jié)構(gòu)特點,表1.6單片機的基本中斷,62,1.2 單片機的結(jié)構(gòu)特點,1.2.5 8051的內(nèi)部資源 (一)串行口:1個可
42、編程的、全雙工的串行接口。 (二)定時器/計數(shù)器:2個16位可編程定時器/計數(shù)器,記為T0,T1。 (三)中斷系統(tǒng):允許5個獨立的中斷源,即兩個外部中斷申請、兩個定時器/計數(shù)器中斷及一個串行口中斷。 1.2.6 8051的工作方式 單片機的工作方式包括:復(fù)位方式、程序執(zhí)行方式、單步執(zhí)行方式、低功耗操作方式及EPROM編程和校驗方式。 低功耗操作方式分節(jié)電方式與掉電方式: 在節(jié)電方式時,CPU停止工作,而RAM、定時器、串行口和中斷系統(tǒng)繼續(xù)工作,同時CPU的狀態(tài)被保留; 掉電方式工作時,只有片內(nèi)RAM的內(nèi)容被保持,SFR內(nèi)容被破壞。,63,1.2 單片機的結(jié)構(gòu)特點,節(jié)電與掉電狀態(tài)可以通過電源控制
43、寄存器中(PCON)的有關(guān)位控制,這些有關(guān)位為: IDL(PCON.0);節(jié)電方式位,=1啟動節(jié)電方式,=0終止節(jié)電方式; PD(PCON.1);掉電方式位,=1啟動掉電方式,=0終止掉電方式; GF0(PCON.3);通用標(biāo)志位;指示中斷是在休閑期間還是正常期間發(fā)生。 GF1(PCON.4);通用標(biāo)志位; 注: 節(jié)電方式可以通過中斷及硬件復(fù)位退出節(jié)電方式,恢復(fù)CPU的狀態(tài); 掉電方式只有硬件復(fù)位方式退出掉電方式,CPU狀態(tài)復(fù)位。,64,1.2 單片機的結(jié)構(gòu)特點,表 空閑和掉電方式下各引腳狀態(tài),空閑方式: ALE,/PSEN輸出高電平,片外EPROM處于禁止?fàn)顟B(tài)。 掉電方式:ALE,/PSEN
44、輸出低電平,便于撤消對片內(nèi)RAM以外的電路供電,以降低功耗,VCC可降至2V。,65,1.2 單片機的結(jié)構(gòu)特點,復(fù)位后各內(nèi)部寄存器的初始狀態(tài)為如表1.8所示。 表1.7 各特殊功能寄存器的初始狀態(tài),66,1.2 單片機的結(jié)構(gòu)特點,累加器A寫成A與ACC有何不同? A與ACC雖指的是同一個寄存器, 指令中它們是有區(qū)別的。 ACC在匯編后的機器指令必有一個字節(jié)的操作數(shù)是ACC的字節(jié)地址E0H,A則隱含在指令操作碼中。 所以,符號指令中的A不能用ACC代替; 反之,特殊功能寄存器直接尋址和位尋址要用ACC,而不能用A代替。,不存在的位地址有哪些? C0CFH, D8DFH,E8EFH,F(xiàn)8FFH A
45、EH,BEH,BFH 計8051有位地址221位,寄存器18個,占用字節(jié)21個。,67,1.2 8051的指令系統(tǒng),指令是指示計算機執(zhí)行某些操作的命令,一臺計算機所能執(zhí)行的全部指令稱為指令系統(tǒng)。,8051單片機指令系統(tǒng)共有111條指令,分為5大類: 數(shù)據(jù)傳送類指令(29條); 算術(shù)運算類指令(24條); 邏輯運算類指令(24條); 控制轉(zhuǎn)移類指令(17條); 位操作類指令(17條);,68,1.2 8051的指令系統(tǒng),匯編語言的指令形式為 操作碼目的操作數(shù) 源操作數(shù) 操作碼與操作數(shù)地址都有對應(yīng)二進(jìn)制編碼,指令代碼可以是1字節(jié)、2字節(jié)或3字節(jié)指令。 MOVA,23H機器碼7423,表1.8805
46、1系統(tǒng)指令描述約定,69,1.3 8051的指令系統(tǒng),尋址方式是指令中用于說明操作數(shù)(源操作數(shù))所在地址的方法. 8051單片機共有7種尋址方式:立即數(shù)尋址、直接尋址、寄存器尋址、寄存器間接尋址、變址尋址、相對尋址、位尋址。 一、立即數(shù)尋址 指令中地址碼部分給出了操作數(shù),如 MOVA,4FH機器碼744F 立即尋址的空間為ROM。 二、直接尋址(是SFR的唯一訪問方式) 指令地址碼部分直接給出了操作數(shù)的有效地址,如 MOVA,4FH機器碼E54F 直接尋址的空間為片內(nèi)低128B及SFR,片內(nèi)高128B除SFR外不能尋址。,1.3.1 尋址方式,70,1.3 8051的指令系統(tǒng),三、寄存器尋址
47、指令中地址碼給出的是某一通用寄存器的編號,寄存器的內(nèi)容為操作數(shù),如 MOVA,R0機器碼E8 寄存器尋址的空間為:R0R7,ACC,C,DPTR,B 四、寄存器間接尋址 指令中給出的寄存器的內(nèi)容為操作數(shù)的地址,而不是操作數(shù)本身,即寄存器為地址指針,如 MOVA,R1機器碼F7 寄存器尋址的空間為片內(nèi)低128B(R0,R1,SP(僅PUSH,POP),片外RAM(R0,DPTR),71,1.3 8051的指令系統(tǒng),五、變址尋址 指定的變址寄存器的內(nèi)容與指令中給出的偏移量相加,所得的結(jié)果作為操作數(shù)的地址,如 MOVCA,ADPTR機器碼93 變址尋址的空間為程序存儲器(APC,ADPTR)。 六、
48、相對尋址 由程序計數(shù)器PC提供的基地址與指令中提供的偏移量rel相加,得到操作數(shù)的地址,rel中的地址是操作數(shù)與現(xiàn)行指令的相對位置,如 SJMPrel 機器碼80rel 相對尋址的尋址空間為ROM256B范圍(PC偏移量),72,1.3 8051的指令系統(tǒng),七、位尋址 操作數(shù)是二進(jìn)制的某一位,其地址出現(xiàn)在指令中,如 SETBbit _(_填位地址) D2 位尋址的地址空間為RAM的20H2FH,地址能夠被8整除的SFR。,1.3.1 指令說明,一、 傳送、交換、棧出入指令(29條) 通用傳送指令(訪問片內(nèi)RAM和SFR區(qū)內(nèi)的各字節(jié)單元及位單元)。 格式MOV目的字節(jié),源字節(jié) 操作數(shù)包括:Adi
49、rect, Rn,Ri A,Rn,Ri,direct #data directRn,Ri,direct DPTR #data16,73,1.3 8051的指令系統(tǒng),【注意】: 不破壞源地址中數(shù)據(jù):只把數(shù)據(jù)拷貝到目的地址。 有幾種組合沒有:寄存器-寄存器傳送,間址-間址傳送,寄存器-間址傳送。 特殊功能寄存器只能直接尋址: Ri是以Ri的內(nèi)容作為地址進(jìn)行尋址,而Ri為8位寄存器,其尋址范圍為0255。 SFR只能直接尋址,而SFR地址范圍(128255)中很多單元沒有定義,對之讀寫得不到確定的值,寫入的數(shù)據(jù)也將丟失。 對內(nèi)部的RAM來說,間址的真正作用范圍只有0127個單元的片內(nèi)RAM地址。 除
50、了給PSW賦值,傳送類指令不影響PSW狀態(tài)。,74,1.3 8051的指令系統(tǒng),外部數(shù)據(jù)存貯器與累加器A傳送指令(片外64KB的RAM空間) 格式MOVX目的字節(jié),源字節(jié) 操作數(shù)包括:ARi, DPTR 程序存貯器與累加器A傳送指令(片內(nèi)或片外64KB的ROM空間) 格式MOVC目的字節(jié),源字節(jié) 操作數(shù)包括:AADPTR,APC 注:這兩條指令主要用于查表,完成從程序存貯器讀取數(shù)據(jù)的功能。但兩條指令使用的基址寄存器不同,因此適用范圍不同。 前一條為遠(yuǎn)程查表指令,應(yīng)用范圍較為廣泛,基址寄存器為數(shù)據(jù)指針DPTR:DPTR的內(nèi)容可通過賦不同值予改變,表格常數(shù)可設(shè)置在64K程序存貯器的任何地址,缺點是
51、DPTR已有它用,在賦表首地址前須保護(hù)現(xiàn)場,執(zhí)行完查表后再予以恢復(fù)。 后一條為近程查表指令:基址寄存器為PC,表格常數(shù)可設(shè)在PC值以下的256單元。 傳送類指令除了給PSW賦值,不影響PSW狀態(tài)。,75,1.3 8051的指令系統(tǒng),例:設(shè)外部擴(kuò)展RAM區(qū),用P2輸出高8位地址。若片外數(shù)據(jù)存貯器單元中, (3007H)=60H,(3008H)=2FH 則將3007單元的內(nèi)容送入累加器,可采用如下指令 (1) MOV DPTR, #3007H MOVX A,DPTR (2) MOV P2,#30H MOV R0,#07H MOVX A,R0 例:在程序存儲器中,數(shù)據(jù)表格為,執(zhí)行程序 1000H:
52、MOV A,#0DH 1002H: MOVC A,A+PC 1003H: MOV R0,A 結(jié)果為? (A)=02H,(R0)=02H,(PC)=1004H。,76,1.3 8051的指令系統(tǒng),例:在程序存儲器中,數(shù)據(jù)表格為,執(zhí)行程序 1000H: MOV A,#10H 1002H: PUSH DPH 1004H: PUSH DPL 1006H: MOV DPTR,#7000H 1009H: MOVC A,A+DPTR 100AH: POP DPL 100CH: POP DPH 結(jié)果為A=?,PC=?,DPTR=? (A)=02H,(PC)=100EH,(DPTR)=原值。,77,1.3 80
53、51的指令系統(tǒng),數(shù)據(jù)交換指令 XCH A direct,Rn, Ri XCHD A Ri SWAP A 數(shù)據(jù)交換類指令除目標(biāo)操作數(shù)為PSW,不影響PSW。 棧操作指令 PUSH/POP direct 其中:PUSH direct (SP)(SP)+1;(SP) (direct) POP direct (direct) (SP);(SP) (SP)-1 棧操作指令不影響PSW。,78,1.3 8051的指令系統(tǒng),作業(yè): 試編制根據(jù)累加器A中的數(shù)(09之間)查其平方表的子程序 根據(jù)累加器A中的內(nèi)容找出由偽指令DB所定義的四個值中的一個 ADD A,#01H MOVCA,APC; RET STAR:
54、 DB66H DB77H DB 88H DB 99H 若A中原內(nèi)容為02H,則執(zhí)行上述程序后返回累加器將變?yōu)槎嗌伲?79,1.3 8051的指令系統(tǒng),COUNT:PUSHDPH; 保護(hù)DPTR內(nèi)容; PUSHDPL; MOVDPTRTABLE;賦表首地址給DPTR MOVCA,A+DPTR;據(jù)A中的內(nèi)容查表 POP DPL;恢復(fù)DPTR原內(nèi)容 POP DPH TABLE:DB00 DB01 DB04 DB09 DB16,80,1.3 8051的指令系統(tǒng),用立即尋址指令給片內(nèi)RAM中20H,25H和P1口上置 MOV 20H,#25H MOV 25H, #10H MOV P1, #0CAH 執(zhí)行
55、后, (20H)=? (25H)=?,(P1)=? 再執(zhí)行下列程序 MOV R0,#20H MOV A, R0 MOV R1, A MOV B,R1 MOV R1, P1 MOV P3, P1 結(jié)果 (A)=?, (R1)=?, (B)=?, (25H)=?, (P3)=?,81,1.3 8051的指令系統(tǒng),二、算術(shù)、邏輯運算指令 邏輯運算 (24條) (1)單操作數(shù)指令 CLR AA CPL AA RL AA RLC AA RR AA RRC AA 左移一位相當(dāng)于*2, 右移一位相當(dāng)于除2。 (2)雙操作數(shù)指令 Adata,Rn,Ri,directA direct#data, A direc
56、t 表示做某種運算。,82,1.3 8051的指令系統(tǒng),例:設(shè)兩位用ASCII碼表示的09的數(shù)分別保存在40H、41H單元中,把其轉(zhuǎn)換成兩位BCD數(shù),并以壓縮形式存入40H單元中(40H內(nèi)容在低位,41H內(nèi)容在高4位)。,可編程如下: ANL 40H,#0FH MOV A,41H ANL A,#0FH SWAP A ORL 40H,A,例:設(shè)P1中內(nèi)容為0AAH,A中內(nèi)容為15H,則執(zhí)行 ANL P1, #0F0H (P1)=? ORL P1,#0FH (P1)=? XRL P1,A (P1)=?,ANL 40H,#0FH MOV A,41H ANL A,#0F0H ORL 40H,A,83,
57、1.3 8051的指令系統(tǒng),【注意】: ANL常用于屏蔽字節(jié)中的某些位,欲保留的位用1與,欲清除的位用0去與; ORL用于使字節(jié)某些位置1,欲保留(不變)的位用0去或,欲清除的位用1去或; XRL用于字節(jié)中某些位求反,欲保留的位用0去異或,欲取反位用1去異或; 當(dāng)邏輯與、或、異或指令修改一個并行I/O口輸出內(nèi)容時,則原始值將從該輸出口的鎖存器中讀取,而不是從該 輸出口的引腳上讀取。,84,1.3 8051的指令系統(tǒng),第一章,算術(shù)運算(24條),Adata,Rn,Ri,directA,【注意】: 減法只有借位減指令,單字節(jié)減法時必須將借位位清0; 若運算兩數(shù)為無符號數(shù),則其溢出與否和OV狀態(tài)無關(guān)
58、,而靠CY是否有借位予以判別; 若運算兩數(shù)為符號數(shù),OV表示符號運算是否有溢出(即正數(shù)減負(fù)數(shù)得負(fù)數(shù),負(fù)數(shù)減正數(shù)得正數(shù)情況)。 影響C, AC及OV位。,例: MOV A, #0C3H ADD A, #0AAH 則:CY=1,OV=1, AC=0,(PSW)=85H, A=6DH,85,1.3 8051的指令系統(tǒng),第一章,MUL AB A*B積高字節(jié)在B,低字節(jié)在A DIV AB A/B商在A,余數(shù)在B C=0,相乘:無符號數(shù):OV=1 結(jié)果為雙字節(jié); OV=0 結(jié)果為單字節(jié); 符號數(shù): 相乘正數(shù)變負(fù)數(shù),負(fù)數(shù)變正數(shù); 相除:除數(shù)為0,例:利用單字節(jié)乘法指令進(jìn)行多字節(jié)乘法運算。 如雙字節(jié)數(shù)乘以單字
59、節(jié)數(shù),設(shè)雙字節(jié)數(shù)用X表示,單字節(jié)數(shù)用Y表示,則其乘法可表示為: (X1*28+X2)*Y1=X1*Y1*28+X2*Y1 根據(jù)上式利用“MUL”指令分別進(jìn)行X1*Y1和X2*Y1的乘法運算,然后把右邊兩項移位相加即得其積。,86,1.3 8051的指令系統(tǒng),第一章,設(shè)雙字節(jié)數(shù)低八位存30H,高八位存31H單元,單字節(jié)數(shù)存在40H單元,積按由低位到高位次序存在50H,51H,52單元中。 ORG2000H MOVA,30H MOVB,40H MULAB MOV50H,A MOV51H,B MOVA,31H MOVB,40H MULAB ADDA,51H MOV 51H, A MOVA,B ADD
60、CA,00H MOV52H,A END,87,1.3 8051的指令系統(tǒng),A, direct, Ri, Rn, DPTR,第一章,注:INC與DEC不影響標(biāo)志位; 無DEC DPTR 指令,DAAA 其調(diào)整條件和方法:若A039或AC1,則A0306H;若A479或CY1,則A4706H。 若兩者同時發(fā)生,或高4位雖等于9但低4位修正有進(jìn)位,則應(yīng)進(jìn)行修正。 注:DA必須在加法指令后才能正確運算; DA指令不影響溢出標(biāo)志; 不能用DA指令對十進(jìn)制減法的結(jié)果進(jìn)行調(diào)整; 借助進(jìn)位標(biāo)志可實現(xiàn)多位BCD數(shù)加法結(jié)果的調(diào)整。,88,1.3 8051的指令系統(tǒng),0 1 0 1 1 0 0 0 + 0 0 1
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 掃地機器人各地區(qū)市場發(fā)展前景
- 立體栽培的環(huán)境控制技術(shù)分析
- 當(dāng)前排水管網(wǎng)技術(shù)現(xiàn)狀
- 2024家庭裝飾裝修施工合同書
- 2024裝修補償協(xié)議合同范本
- Sodium-phosphate-dibasic-for-molecular-biology-Standard-生命科學(xué)試劑-MCE
- S-Metolachor-Standard-生命科學(xué)試劑-MCE
- SIRT3-IN-1-生命科學(xué)試劑-MCE
- 2022年關(guān)于骨干教師培訓(xùn)心得體會模板三篇
- 二年級數(shù)學(xué)(上)計算題專項練習(xí)匯編
- 園藝與健康知到章節(jié)答案智慧樹2023年金陵科技學(xué)院
- 知識點解析《方向向量與直線的參數(shù)方程》
- 重度子癇前期、胎盤早剝急救演練
- 老年社區(qū)獲得性肺炎的幾個熱點問題專家講座
- 建筑消防工程施工操作規(guī)程
- 大學(xué)生職業(yè)規(guī)劃4篇匯編
- GB/T 42461-2023信息安全技術(shù)網(wǎng)絡(luò)安全服務(wù)成本度量指南
- (完整word版)扣字詞匯124
- 2023屆廣東省廣州市高三一模語文現(xiàn)代文閱讀小說《給我一枝槍》講評課件
- 中職世界歷史全一冊教案
- 毛栗煤礦 礦業(yè)權(quán)價款計算結(jié)果的報告
評論
0/150
提交評論