




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
第一次課(4課時):【課程引入】1、課程定位:(重要)本門課程是電氣自動化專業(yè)針對電氣設(shè)備維護(hù)能力進(jìn)行培養(yǎng)的一門專業(yè)學(xué)習(xí)領(lǐng)域核心課程。主要培養(yǎng)學(xué)生的各類傳感器的使用與維護(hù)能力、信號的采集與處理能力、電子線路的安裝與調(diào)試能力以及單片機(jī)控制與工程應(yīng)用能力。2、單片機(jī)和傳感器的應(yīng)用:(廣泛)1)現(xiàn)代生活生產(chǎn)中單片機(jī)和傳感器的應(yīng)用:(視頻“我機(jī)器人”)2)大學(xué)生創(chuàng)新中單片機(jī)和傳感器的應(yīng)用:(創(chuàng)新的相關(guān)視頻)3)電子設(shè)計競賽中單片機(jī)和傳感器的應(yīng)用:(20XX年電子設(shè)計大賽題)3、單片機(jī)與傳感器技術(shù)的就業(yè)前景:(前途)4、學(xué)習(xí)資源:(條件)1)實驗實訓(xùn)室等硬件環(huán)境:單片機(jī)實訓(xùn)室、傳感器實訓(xùn)室,測控網(wǎng)絡(luò)實驗室2)虛擬的軟件仿真平臺:keil匯編語言環(huán)境、proteus仿真環(huán)境。3)網(wǎng)絡(luò)平臺:傳感器網(wǎng)站,各種公開的單片機(jī)學(xué)習(xí)網(wǎng)站。【課程要求】1、課程教學(xué)的主要形式:分組教學(xué),講、學(xué)、練、評一體,實物與虛擬交替進(jìn)行。2、達(dá)到的教學(xué)目標(biāo):1)每個團(tuán)隊能夠獨立的設(shè)計一個小型的測控系統(tǒng)(單物理量測量)、包括硬件、軟件及最終的調(diào)試。2)每個團(tuán)隊具有總結(jié)匯報團(tuán)隊所作工作,讓人全面了解的能力。同時每個團(tuán)隊也必須達(dá)到作為一個專業(yè)團(tuán)隊全面認(rèn)識,公正認(rèn)識其他團(tuán)隊成果的能力。3)每位同學(xué)能夠達(dá)到利用匯編語言進(jìn)行程序編寫的能力、能夠掌握檢測常見物理量的一般方法。4)每個人能夠達(dá)到利用網(wǎng)絡(luò)和資源查詢自己需要的測控相關(guān)知識的能力,可以實現(xiàn)自身的持續(xù)發(fā)展。3、課程考核:1)主動學(xué)習(xí)能力考核:主要采用實踐考評和卷面考評相結(jié)合,各占總成績的20%。2)團(tuán)隊合作能力考核:包括任務(wù)的接受、任務(wù)的分工、任務(wù)的完成、任務(wù)的總結(jié)及呈現(xiàn),主要采用過程考核的方式,根據(jù)每次任務(wù)完成的情況給予評價,占總成績的50%。3)良好的職業(yè)素養(yǎng)的考核:主要包括出勤,衛(wèi)生等個人素質(zhì)表現(xiàn),占總成績的10%4、課程內(nèi)容:為了達(dá)到本課程的目標(biāo),本課程分七個小的項目和一個綜合設(shè)計項目來開展,其中前六個項目主要是老師在帶領(lǐng)同學(xué)學(xué)習(xí)單片機(jī)和傳感器的基礎(chǔ)知識的同時由簡到難遞進(jìn)式鍛煉同學(xué)對給定的項目和任務(wù)的設(shè)計、實踐、調(diào)試、總結(jié)的能力。每個項目占大約三次到兩次課的內(nèi)容。第七個小的項目主要由學(xué)生主導(dǎo),教師為輔共同來進(jìn)行設(shè)計的演練。最后一個綜合設(shè)計項目基本以學(xué)生為主,教師只提供技術(shù)指導(dǎo)和參與最終評價?!痉纸M】2人一小組,4到6人一大組【本次課程開始】項目一:設(shè)計單片機(jī)最小系統(tǒng)本項目要求在學(xué)習(xí)單片機(jī)基本硬件、軟件知識的基礎(chǔ)上首先在PROTEUS軟件中完成單片機(jī)最小系統(tǒng)的繪制與最小軟件系統(tǒng)的聯(lián)調(diào),最終根據(jù)仿真實驗的結(jié)果分組利用實物搭建出實際的單片機(jī)最小控制電路,并進(jìn)行程序加載和調(diào)試,從而達(dá)到初步實現(xiàn)單片機(jī)控制電路的能力。本項目的完成分三個小的任務(wù)來完成。本次課我們完成第一個任務(wù)即可:任務(wù)1-1繪制單片機(jī)硬件最小系統(tǒng)1、任務(wù)要求:在熟悉單片機(jī)硬件基本結(jié)構(gòu)及單片機(jī)仿真軟件PROTEUS的基礎(chǔ)上,設(shè)計并繪制出單片機(jī)硬件最小系統(tǒng)圖。2、任務(wù)資訊:1、什么是單片機(jī):2、AT89S51單片機(jī)內(nèi)部結(jié)構(gòu)包含哪幾個部分?其引腳共有多少,各具有什么功能?3、單片機(jī)硬件系統(tǒng)包含哪些部分?每部分有什么功能?4、PROTEUS仿真軟件中常用元件的名稱?如何繪制單片機(jī)控制電路圖?三、任務(wù)實施1、寫出單片機(jī)最小系統(tǒng)中使用到的元件在PROTEUS軟件中的元件名稱。項目1認(rèn)識單片機(jī)任務(wù)1.1開發(fā)軟件的應(yīng)用1、PROTUES軟件的應(yīng)用二、單片機(jī)仿真實例運行PROTUES軟件進(jìn)入下界面:1、放置元件單擊“P”按鈕,出現(xiàn)挑選元件對話框在對話框的KEYWORDS中輸入要挑選的元件,如輸入“AT89C51”則出現(xiàn)如下界面,選擇該單片機(jī),點擊“任務(wù)1.2讓單片機(jī)動起來理論知識:1.2.1微型計算機(jī)中數(shù)的表示方法本次課要點:原碼、反碼、補碼的求法數(shù)制之間的轉(zhuǎn)換原則〖新課內(nèi)容:〗一、計算機(jī)中數(shù)的表示計算機(jī)只識別和處理數(shù)字信息,數(shù)字是以二進(jìn)制數(shù)表示的;它易于物理實現(xiàn),同時,資料存儲、傳送和處理簡單可靠;運算規(guī)則簡單,使邏輯電路的設(shè)計、分析、綜合、方便,使計算器具有邏輯性。(一)數(shù)制及數(shù)制之間的轉(zhuǎn)換1、各種進(jìn)位計數(shù)及其表示方法數(shù)字符號:0、1、2、……9——數(shù)碼。數(shù)碼的個數(shù)——基數(shù)。進(jìn)位規(guī)則:逢十進(jìn)一例如,十進(jìn)制數(shù),10個數(shù)碼;采用“逢十進(jìn)一”30681=3×104+0×103+6×102+8×101+1×100例如,二進(jìn)制數(shù),2個數(shù)碼,采用“逢二進(jìn)一”(11010100)2=1×27+1×26+0×25+1×24+0×23+1×22+0×21+0×20總之,N進(jìn)制數(shù),N個數(shù)碼,“逢N進(jìn)一”二進(jìn)制數(shù)與十六進(jìn)制數(shù)的相互轉(zhuǎn)換a)二進(jìn)制轉(zhuǎn)換十六進(jìn)制:規(guī)律是:以小數(shù)點為界限,分別往前往后每四位二進(jìn)制數(shù)一組進(jìn)行分組,(整數(shù)部分不夠的位直接在高位補0,小數(shù)部分不夠的位在往其低位補0),之后把每一組轉(zhuǎn)換成對應(yīng)得到十六進(jìn)制數(shù)碼即可。b)十六進(jìn)制轉(zhuǎn)換二進(jìn)制:規(guī)律是:上述轉(zhuǎn)換的“逆”,即把每位十六進(jìn)制數(shù)碼都轉(zhuǎn)換成對應(yīng)四位二進(jìn)制數(shù),按照十六進(jìn)制數(shù)正常的順序排列即可。c)十進(jìn)制轉(zhuǎn)換十六進(jìn)制:方法:可以先轉(zhuǎn)換成二進(jìn)制數(shù),在轉(zhuǎn)換成十六進(jìn)制數(shù)(較簡單些)。有符號數(shù)表示方法1、機(jī)器數(shù)與真值機(jī)器只認(rèn)識二進(jìn)制數(shù):0、1。這是因為,電路狀態(tài)常有兩個,如通、斷;高電平、低電平;…可用0、1表示。這種0、1、0、1…1在機(jī)器中的表現(xiàn)形式——機(jī)器數(shù)。一般為8位。機(jī)器數(shù)有:無符號數(shù):00000000B、……11111111B即00H~FFH帶符號數(shù):+1010110B、-1101001真值符號位和數(shù)值位:計算機(jī)中通常都是用最高位來表示一個數(shù)的符號。并且分別用“0”和“1”表示正和負(fù)。有符號數(shù)有三種表示方法。原碼、反碼和補碼。a)、原碼(PrimaryCode)正數(shù)的原碼與原來的數(shù)相同。負(fù)數(shù)的原碼符號位“置1”,數(shù)值位不變。舉例(略:+5、-5、+0、-0);原碼數(shù)的范圍:-127~+127b)、反碼(DiminishedRadixComplement)正數(shù)的反碼與原來的數(shù)相同。負(fù)數(shù)的反碼符號位“置1”,數(shù)值位按位取反得到。舉例(略:+5、-5、+0、-0);反碼數(shù)的范圍:-127~+127c)、補碼(ComplementaryCode)正數(shù)的補碼與原來的數(shù)相同。負(fù)數(shù)的補碼由它的絕對值求反加1后得到,符號位“置1”。舉例(略:+5、-5、0);數(shù)的范圍:-128~+1271.2.280C51單片機(jī)內(nèi)部結(jié)構(gòu)及引腳功能本次課要點:A、80C51內(nèi)部結(jié)構(gòu)有幾部分B、80C51引腳功能,主要包含幾個組成部分〖新課內(nèi)容:〗一.80C51內(nèi)部BUS內(nèi)部BUS內(nèi)中斷振蕩器OSC程序存儲器4KBROM數(shù)據(jù)存儲器128BRAM2×16位定時器/計數(shù)器80C51CPU可編程并行口可編程串行口外中斷一個8位的CPU一個片內(nèi)振蕩器及時鐘電路4KBROM(不同型號內(nèi)容不同,看書P4)128B內(nèi)部RAM可尋址64KB的外部ROM和外部RAM的控制電路兩個16位定時器/計數(shù)器(Timer/Counter)21個特殊功能寄存器(SpecialFunctionRegister)4個8位并行(Parallel)I/O口一個串行口(Series)5個中斷源(Interrupt)這些我們稱為單片機(jī)的資源(Souce),單片機(jī)的應(yīng)用就是怎么充分合理地利用這些資源,來解決實際中的問題。二.80C51單片機(jī)的CPUMCS-51的CPU包括兩部分:運算部件和控制器。1、運算部件運算部件組成:包括算術(shù)邏輯部件ALU、布爾處理器、累加器A、寄存器B、暫存器以及程序狀態(tài)字寄存器PSW等。累加器A:是一個8位的累加器(也可以寫為ACC),絕大部分運算和操作都同A有關(guān)。寄存器B:是專為執(zhí)行乘法和除法操作而設(shè)置的,一般情況下也可以作為暫存器使用。2.控制器(Controler)控制器是單片機(jī)的神經(jīng)中樞,以振蕩器的頻率位基準(zhǔn),產(chǎn)生CPU時序,對指令(Command)進(jìn)行譯碼,然后發(fā)出各種控制信號,實現(xiàn)各種操作。三、80C51單片機(jī)的引腳及其功能P2.0P2.0P2口P2.7P0口VSSP3口RSTP1口P0.7EAVCCP0.040393231282180C51、87C5180C3118910171819201.電源(1)VCC(40)——芯片電源,接+5V;(4.5~5.5)(2)VSS(20)——電源地。2.時鐘引腳XTAL1(18)、XTAL2(19)——外接晶體振蕩或外接脈沖。(P42)3.控制線RST(9)——復(fù)位引腳。(Reset),高電平有效。EA——片內(nèi)外ROM選擇EA=1,選擇片內(nèi)ROM;EA=0,選擇片外ROM?!镒⒁狻铮嚎刂菩盘柧€寫法上的差別。有“非”表示低電平起作用,反之是高電平起作用。4.I/O口線P0口:8位雙向I/O口。在訪問外部存儲器時,P0口可用于分時傳送低8位地址總線和8位數(shù)據(jù)總線。能驅(qū)動8個LSTTL門。P1口:8位準(zhǔn)雙向I/O口(“準(zhǔn)雙向”是指該口內(nèi)部有固定的上拉電阻)。能驅(qū)動4個LSTTL門。P2口:8位準(zhǔn)雙向I/O口。在訪問外部存儲器時,P2口可用于高8位地址總線。能驅(qū)動4個LSTTL門。P3口:8位準(zhǔn)雙向I/O口。能驅(qū)動4個LSTTL門。P3口還有第二功能。1.2.3MCS-51單片機(jī)最小應(yīng)用系統(tǒng)--------以AT89C51為例〖課前復(fù)習(xí):〗1、清零、取反指令的功能2、P0~P3口作為一般的輸入\輸出口使用的注意事項本次課要點:學(xué)會畫最小硬件系統(tǒng)2、掌握最小軟件系統(tǒng)〖新課內(nèi)容:〗一、最小硬件系統(tǒng)1、最小硬件系統(tǒng)的組成所謂最小硬件系統(tǒng)是指單片機(jī)能工作所必須具備的硬件條件,它包括四個部分:1)電源芯片接上5V電源,即40腳接5V電源的正,20腳接地。2)時鐘電路18、19腳接晶體振蕩器和電容構(gòu)成時鐘電路,如圖所示。3)程序存儲器選擇EA89C51片內(nèi)有EEPROM,EA接“正”。4)復(fù)位電路8.2KRST8.2KRSTVCC+5V+5V+5V4031AT89C5119181920EA10μF6MHz20P2、介紹幾個概念時鐘周期:系統(tǒng)晶振頻率的倒數(shù)狀態(tài)周期:2倍的時鐘周期★機(jī)器周期:12倍的時鐘周期指令周期:指CPU執(zhí)行一條指令占用的時間指令字節(jié):指令占用存儲空間的長度3、MCS-51復(fù)位的條件及復(fù)位后狀態(tài)復(fù)位條件:在9引腳上加兩個機(jī)器周期以上的高電平復(fù)位后狀態(tài)◆復(fù)位后PC值為0000,程序從頭運行◆大部分的SFR被置為0◆P0~P3口被置為FFH◆SP被置為07H4、如何檢查最小硬件系統(tǒng)◆有無+5V電源◆31引腳是否為+5V◆9引腳正常工作應(yīng)為低電平◆時鐘引腳電壓用數(shù)字表測量18、19引腳電壓約為1.7V~2.9V之間用模擬表測量18引腳電壓約為1.7V~2.9V之間19引腳電壓只有零點幾伏習(xí)題:1、單片機(jī)有哪些主要的內(nèi)部資源?2、繪制出單片機(jī)最小硬件電路(以AT89S51為例)3、單片機(jī)復(fù)位條件?4、理解時鐘頻率、時鐘周期、機(jī)器周期、指令周期和指令字節(jié)的概念。5、說出AT89S51單片機(jī)系統(tǒng)復(fù)位后片內(nèi)各寄存器的狀態(tài)。1.2.4AT89S51單片機(jī)的存儲器配置方式采用哈佛結(jié)構(gòu),程序存儲器和數(shù)據(jù)存儲器是分開的,它們有各自的尋址系統(tǒng)、控制信號和功能,并且有不同的操作指令。程序存儲器主要用來存放程序和表格常數(shù),數(shù)據(jù)存儲器主要用來存放程序運行的數(shù)據(jù)和結(jié)果。AT89S51單片機(jī)的組織結(jié)構(gòu)可以分為三個不同的存儲空間:☆64KB的程序存儲器(ROM),包括片內(nèi)4KBROM和片外60KBROM☆64KB的外部數(shù)據(jù)存儲器(外RAM)☆256B內(nèi)部數(shù)據(jù)存儲器(內(nèi)RAM),分高128B和低128B。這三種不同的存儲器在物理結(jié)構(gòu)上是相互獨立的,但編址有重疊,CPU是怎么處理的?它是通過不同的指令和控制信號來對其實現(xiàn)讀、寫功能操作的。用MOVC指令訪問ROM空間,用MOV指令訪問內(nèi)部RAM,用MOVX指令訪問外部RAM。0000H0000H0FFFH0000H0FFFH1000HFFFFH外部ROM(60KB)內(nèi)部ROM(4KB)EA=1外部ROM(4KB)EA=080H7FHFFH00HFFFFH0000H特殊功能寄存器(21個)內(nèi)部RAM(128)外部RAM(64KB)圖1-3AT89S51存儲空間配置圖表1-1AT89S51單片機(jī)內(nèi)RAM結(jié)構(gòu)表地址區(qū)域功能名稱數(shù)據(jù)操作方式30H~7FH堆棧與數(shù)據(jù)緩沖區(qū)8位整體操作20H~2FH位尋址區(qū)8位整體操作或位操作00H~1FH18H~1FH工作寄存器3區(qū)8位整體操作10H~17H工作寄存器2區(qū)08H~0FH工作寄存器1區(qū)00H~07H工作寄存器0區(qū)下面介紹幾個常見的特殊功能寄存器,其余的在后面相關(guān)項目中再介紹。A.累加器Acc累加器Acc是MCS-51系列單片機(jī)中最為常見的寄存器,許多指令的操作數(shù)取自于Acc許多運算的結(jié)果存放在Acc中。乘除法指令必須通過Acc進(jìn)行,累加器Acc的助記符為A。在匯編語言指令中Acc簡寫為A。B.寄存器B乘除法指令都要用到寄存器B,B也可以作為一般的寄存器使用。C.程序狀態(tài)字寄存器PSWPSW反映的是程序運行的狀態(tài),用于存放相關(guān)標(biāo)志位。對其操作時,既可字節(jié)操作也可位操作。各位的意義如下:(1)Cy-----進(jìn)位標(biāo)志。累加器A在執(zhí)行加減運算時,如果最高位有進(jìn)位或借位,單片機(jī)會自動將Cy置1,否則清0。另外Cy還是位操作累加器,指令助記符為C。(2)AC----輔助進(jìn)位標(biāo)志。累加器A在執(zhí)行加減運算時,如果低半字節(jié)Acc.3向高半字節(jié)Acc.4有進(jìn)位或借位,單片機(jī)會自動將AC置1,否則清0。(3)RS1、RS0-----工作寄存器區(qū)選擇控制位。工作寄存器區(qū)分為4個區(qū),但每次能處于當(dāng)前工作的寄存器區(qū)只能有一個。可以通過設(shè)置RS1、RS0這兩位的值來選擇處于當(dāng)前工作狀態(tài)的工作寄存器區(qū)。RS1、RS0=00——0區(qū)(00H~07H)RS1、RS0=01——1區(qū)(08H~0FH)RS1、RS0=10——2區(qū)(10H~17H)RS1、RS0=11——3區(qū)(18H~1FH)(4)OV-----有符號數(shù)運算時的溢出標(biāo)志(5)P-----奇偶標(biāo)志。表示累加器A中“1”的個數(shù)的奇偶性。如果A中“1”的個數(shù)為奇數(shù),單片機(jī)會自動將P置1,否則清0。(6)F0、F1-----用戶標(biāo)志。與位尋址區(qū)的位地址功能相同,區(qū)別在于位尋址區(qū)內(nèi)的位只有位地址,而F0、F1有3中表示方法:位地址D5H、D1H,位編號PSW.5、PSW.1和位定義名F0、F1。習(xí)題:說出AT89S51單片機(jī)內(nèi)部128RAM的分區(qū)及其作用.如何區(qū)分位地址和字節(jié)地址?實踐操作:任務(wù)要求:在PROTUES軟件中繪制出AT89S51單片機(jī)的最小硬件電路,用P1.0引腳控制一發(fā)光二極管,調(diào)試給出的程序,使該二極管間隔亮滅,并不斷循環(huán)。(列出所需器件清單,課外焊接該電路。項目2單片機(jī)流水燈控制任務(wù)2.1MCS-51的指令格式與常用符號〖課前復(fù)習(xí):〗內(nèi)部128RAM的分區(qū)及其作用如何區(qū)分位地址和字節(jié)地址本次課要點:1、80C51單片機(jī)的指令格式2、內(nèi)部RAM間的數(shù)據(jù)傳送和位操作〖新課內(nèi)容:〗80C51單片機(jī)的指令格式[標(biāo)號:]操作碼[(目的操作數(shù)),(源操作數(shù))][;注釋]⑴標(biāo)號:指令地址的符號表達(dá)形式。①一般用英文字母和數(shù)字組成,但是必須以字母開頭。②系統(tǒng)的保留字不能作標(biāo)號。例如:Acc、PSW,B等等③標(biāo)號必須用冒號“:”與操作碼分隔④標(biāo)號是可以選擇的⑵操作碼:表示指令的操作功能。①操作碼是表示指令功能的助記符,它代表了指令 的操作功能。例如:MOV數(shù)據(jù)傳送指令的操作碼ADD加法運算指令的操作碼②操作碼是指令的必需部分,是指令的核心,不可缺少。⑶操作數(shù):參加操作的數(shù)據(jù)或數(shù)據(jù)地址①操作數(shù)可分為目的操作數(shù)和源操作數(shù)。②操作數(shù)可用二進(jìn)制數(shù)、十進(jìn)制數(shù)或十六進(jìn)制數(shù)表示。③操作數(shù)的個數(shù)可以是0~3個。④第1個操作數(shù)與操作碼之間用空格分隔,⑤操作數(shù)與 操作數(shù)之間用逗號“,”隔開。⑷注釋:指令功能說明。①注釋是可以選擇的,是為便于閱讀,對指令功能作的說明和注解。②注釋必須以“;”開始。二、指令中部分常用的符號Ri:工作寄存器R0和工作寄存器R1,i=0或1Rn:工作寄存器R0~R7,n=0~7@Ri:寄存器R0和R1間接尋址8位的存儲單元。Direct:8位直接地址,內(nèi)部RAM的地址或SFR的地址。#data8:8位的立即數(shù)。數(shù)的范圍為0~255。Bit:位地址。片內(nèi)RAM和SFR中的可尋址位。#data16:16位立即數(shù)addr16:16位目的地址,用于LJMP和LCALL指令。addr11:11位目的地址,用于AJMP和ACALL指令。rel:帶符號的8位偏移地址,用于SJMP和轉(zhuǎn)移指令。addr16、addr11、rel三個符號在具體的指令中都表現(xiàn)為標(biāo)號的形式。DPTR:數(shù)據(jù)指針,特殊功能寄存器。DPTR是DPH、DPL的組合,DPTR存放的是16位數(shù)據(jù),其中的高8位就是DPH中的內(nèi)容,低8位就是DPL中的內(nèi)容。任務(wù)2.1最小軟件系統(tǒng)匯編:把匯編程序翻譯成目標(biāo)程序(機(jī)器語言)的過程叫匯編。分類:手動匯編和機(jī)器匯編MOVA,#30H對應(yīng)的機(jī)器語言為74H30H偽指令:在匯編過程中起控制作用,但自身不產(chǎn)生機(jī)器碼,不屬于MCS-51指令系統(tǒng),而僅僅是為匯編服務(wù)的指令。RG(起始偽指令)(Origination)格式:ORG16位地址功能:規(guī)定它下面的程序的起始地址。也就是在匯編時將它下面的程序翻譯成機(jī)器碼時,這些機(jī)器碼在程序存儲器中存放的起始地址為ORG指令指定的16位地址。注意:◆一個程序中可以有多個ORG偽指令◆ORG后面的16位地址順序是從小到大的順序◆兩條ORG指令之間存放的指令不能超過他們之間的地址范圍END(結(jié)束偽指令)格式:END功能:是匯編語言程序結(jié)束標(biāo)志。在END之后的指令,匯編程序不再翻譯,因此,一個源程序只有一個END指令而且必須有一個,并且放在源程序的最后。注意:◆END必須放在程序的最后◆在程序中只能有一個有效的END3、無條件轉(zhuǎn)移指令LJMPaddr16;長轉(zhuǎn)移指令,可轉(zhuǎn)移到64KB空間內(nèi)的任意位置。AJMPaddr11;短轉(zhuǎn)移指令,轉(zhuǎn)移范圍是與PC值同一2KB,可以向前或向后,超出程序匯編時將出錯。(最好不用)SJMPrel;相對轉(zhuǎn)移指令,轉(zhuǎn)移范圍是PC前后-128B~+127B,也不能超出范圍。SJMP$=H:SJMPH單片機(jī)最小軟件系統(tǒng)單片機(jī)的最小軟件系統(tǒng),也稱為程序的一般結(jié)構(gòu)。下面是滿足最小軟件系統(tǒng)要求的一個典型例子: ORG0000H;匯編程序開頭 LJMPSETUP;跳過中斷入口地址 ......;中斷入口地址區(qū) ORG0030HSETUP: ......;初始化區(qū)MAIN: ......;主程序區(qū) LJMPMAIN;主程序循環(huán)執(zhí)行 ......;子程序和中斷服務(wù)程序區(qū) END;程序結(jié)束匯編語言程序的從結(jié)構(gòu)上分為6個部分:匯編程序開頭、中斷入口地址區(qū)、初始化區(qū)、主程序區(qū)、子程序和中斷服務(wù)程序區(qū)以及程序結(jié)束。在我們編寫程序時,只要將有關(guān)的程序嵌入到相應(yīng)的區(qū)域即可。指令學(xué)習(xí):(1)起始偽指令ORG(Origination)格式:ORG16位地址功能:規(guī)定它下面的程序的起始地址。也就是在匯編時將它下面的程序翻譯成機(jī)器碼時,這些機(jī)器碼在程序存儲器中存放的起始地址為ORG指令指定的16位地址。(2)結(jié)束偽指令END格式:END功能:匯編語言源程序的結(jié)束標(biāo)志。在END后面的指令,匯編程序不再處理。(3)無條件轉(zhuǎn)移指令:LJMPaddr16習(xí)題:1、寫出匯編語言程序的一般結(jié)構(gòu)。任務(wù)2.3內(nèi)部RAM間的數(shù)據(jù)傳送和位操作操作碼:MOV(即Move的縮寫)以累加器A為目的字節(jié)的傳送指令。MOV A,Rn ;MOV A,direct ;MOV A,@Ri ;MOV A,#data ;以Rn為目的字節(jié)的傳送指令MOV Rn,A ;MOV Rn,direct ;MOV Rn,#data ;以直接地址為目的字節(jié)的傳送指令MOV direct,A ;MOV direct,Rn ;MOV direct,#data ;MOV direct1,direct2 ;MOV direct,@Ri ;以寄存器間接地址為目的字節(jié)的傳送指令MOV @Ri,A ;MOV @Ri,direct;(direct:直接的)MOV @Ri,#data ;#data#datadirectACC@RiRnI/O口結(jié)構(gòu)及工作原理〖課前復(fù)習(xí):〗80C51的指令格式、常用符號對內(nèi)部RAM的數(shù)據(jù)傳送指令本次課要點:1、I/O口作為輸入輸出口的注意事項。2、如何區(qū)別bit和direct?〖新課內(nèi)容:〗P0口結(jié)構(gòu)及工作原理VV2內(nèi)部總線寫鎖存器讀鎖存器讀引腳DQP0.X鎖存器CLKQABMUX&P0.X引腳地址/數(shù)據(jù)控制VCCV1P0口有兩種功能,一個是作為通用的I/O口;另一個是作為地址/數(shù)據(jù)總線(Bus),用于擴(kuò)展外部的ROM和RAM,我們以后再研究。(1)P0口用作輸出口:控制線上信號為0,電子開關(guān)與B接通。同時與門輸出為0,V1截止。由于V1截止,輸出級處于開漏狀態(tài),用作輸出口時,需外接上拉電阻。如果沒有上拉電阻,在輸出高電平時,V1、V2都截止,輸出引腳懸空,不能輸出高電平。用作輸入口時,也就是要把引腳上的信號讀進(jìn)來。我們看一下,假設(shè)V2導(dǎo)通,這時不管外電路施加什么電平,都被V2短路,讀進(jìn)來的始終是低電平。因此要想把它作為輸入口,必須保證V2截止,要使V2截止,需先向該端口寫入“1”,這點要特別注意。P0口的每一位可任意作為輸入或輸出。既可以用數(shù)據(jù)傳送指令來整體操作,也可用位操作指令一位一位地操作。帶負(fù)載能力:8個LSTTL電平(0.36毫安/20微安)。操作舉例(略)。V內(nèi)部總線V內(nèi)部總線寫鎖存器讀鎖存器讀引腳DQP1.X鎖存器CLKQP1.X引腳VCCR作為輸出口時,不需外接上拉電阻。作為輸入口時也要先向該端口鎖存器寫入“1”,然后再讀。每位也可分別用作輸入或輸出。帶負(fù)載能力:4個LSTTL門電路。3.P2口結(jié)構(gòu)(同P1口)4.P3口結(jié)構(gòu)(同P1口)小結(jié):1、P0口用作輸出口時,需外接上拉電阻。而P1~P3口不要接上拉電阻2、P0~P3口作為輸入口使用,都要先向該端口鎖存器寫入“1”3、P0~P3口每位也可分別用作輸入或輸出。4、對口的操作,對字節(jié)操作用數(shù)據(jù)傳送指令,對位操作用位操作指令。5、帶負(fù)載能力P0口帶8個LSTTL門電路,而P1~P3口能帶4個LSTTL門電路二、介紹幾個指令清零與取反指令CLRA;對累加器清零CPLA;將累加器中的內(nèi)容按位取反注意:清零和取反指令只能對A操作如果要對內(nèi)部RAM的某個單元清零,只能用MOV30H,#02、位操作指令1)、位傳送指令MOV C,bit ;C即PSW中的CyMOV bit,C ;bit為可尋址位2)、位修正指令CLR C ;CLR bit ;清零CPL C ;CPL bit 取反;SETB C ;SETB bit ;置13)bit的形式bit可以是位編號、位地址、位定義名三種形式中的任何一種三、例題設(shè)內(nèi)部RAM中各單元的內(nèi)容均為FFH,執(zhí)行下列程序后,寫出單元內(nèi)容發(fā)生變化的單元,并寫出具體內(nèi)容。SETBRS0CLRRS1MOVR1,#55HCLRRS0MOVR1,#0AAHMOVA,#40HMOVR0,#30HMOV@R0,AMOVR1,AMOV@R1,#20HMOV20H,#0SETB07HCPL08HCLR70HMOV60H.,#1如果(60H)=總結(jié):如何區(qū)別bit和direct?一般在MOV后面,指的是direct,除了指令中含有C時,則指bit在SETBCLRCPL后都指bitCLRA,CPLA這兩條指令是對8位數(shù)據(jù)的操作任務(wù)2.3循環(huán)彩燈控制一、硬件電路在最小硬件系統(tǒng)基礎(chǔ)上,用P1口作輸出,用低電平驅(qū)動LED發(fā)光管,LED發(fā)光條件是:電壓1.8V左右,電流8~10mA。為滿足要求,電路中串接限流電阻,經(jīng)計算取360Ω。電路如圖所示。360360Ω+5V8.2KRSTVCC+5V+5V+5V403189C51189181920EA10μF6MHz20P二、軟件設(shè)計軟件設(shè)計是在最小軟件系統(tǒng)基礎(chǔ)上,根據(jù)所要求的顯示方式,用位操作指令CLRP1.X/SETBP1.X,對某位口操作,也可用數(shù)據(jù)傳送指令MOVP1,#DATA,對多位口同時操作。如:設(shè)計一個由8個小燈構(gòu)成的循環(huán)彩燈,要求8個小燈依次亮滅,然后重復(fù)循環(huán)程序為:ORG0000HLJMPSETUPORG0030HSETUP: CLRP1.0MOVR2,#80HDEL1:MOVR7MOVR2,#80HDEL1:MOVR7,#0FFHDEL2:DJNZR7,DEL2DJNZR2,DEL1 CLRP1.1SETBP1.1MOVR2,#80HDEL1:MOVR7MOVR2,#80HDEL1:MOVR7,#0FFHDEL2:DJNZR7,DEL2DJNZR2,DEL1SETBP1.2 CLRP1.3SETBP1.3 ……… SETBP1.7LJMPSETUPENDDELAY: MOVR2,#80HDEL1:MOVR3,#0FFHDEL2:DJNZR3,DEL2DJNZR2,DEL1RET三、引出指令1、NOP空操作指令2、循環(huán)轉(zhuǎn)移指令DJNZRn,rel;先執(zhí)行RnRn-1,然后判斷,若Rn=0,則程序順序執(zhí)行,否則就轉(zhuǎn)移,轉(zhuǎn)移到rel處,轉(zhuǎn)移范圍為-128B~+127B。DJNZdirect,rel;同上面類似。用和返回指令LCALLaddr16;長調(diào)用指令,調(diào)用子程序,子程序可在64KB空間內(nèi)任意位置,同LJMP指令。ACALLaddr11;斷調(diào)用指令,調(diào)用子程序,同LJMP指令。RET;調(diào)用返回指令,子程序結(jié)束后,執(zhí)行該指令程序?qū)⒎祷氐秸{(diào)用子程序處繼續(xù)向下執(zhí)行。上面的程序也可寫成:ORG0000HLJMPSETUPORG0030HSETUP: CLRP1.0LCALLDELAYSETBP1.0 CLRP1.1LCALLDELAYSETBP1.1 CLRP1.2SETBP1.2 CLRP1.3SETBP1.3 ……… SETBP1.7LJMPSETUPDELAY: MOVR2,#80HDEL1:MOVR3,#0FFHDEL2:DJNZR3,DEL2DJNZR2,DEL1RETEND注意:書寫子程序時的注意事項書寫子程序一定要有名稱(標(biāo)號)書寫子程序一定要有RET返回指令參數(shù)的傳遞子程序和主程序間的關(guān)系如下圖所示:子程序2子程序2斷點主程序子程序1斷點斷點主程序子程序思考題:在循環(huán)彩燈硬件電路的基礎(chǔ)上,設(shè)計一個循環(huán)彩燈程序,使小燈依次點亮后熄滅,再從頭開始,重復(fù)8次。
任務(wù)2.4指令和程序設(shè)計(一)〖課前復(fù)習(xí):〗1、循環(huán)轉(zhuǎn)移指令的功能2、子程序書寫的注意事項〖新課內(nèi)容:〗一、程序:指令的有序集合要求:1、實現(xiàn)預(yù)定的功能2、所占用的空間字節(jié)最少3、程序執(zhí)行的時間最短二、程序設(shè)計的方法1、分析問題、確定算法2、畫程序流程圖3、設(shè)計源程序三、程序的一般結(jié)構(gòu):ORG0000HLJMPSETUP……;中斷入地址……;ORG0030HSETUP:……;初始化……MAIN:……;主程序……LJMPMAIN……;子程序和中斷服務(wù)程序……END四、程序設(shè)計的方法1、順序程序設(shè)計順序程序是指按順序依次執(zhí)行的程序,把完成一系列操作的指令按操作的順序組成指令序列。這樣的程序很簡單也稱簡單程序或直線程序。如上講循環(huán)彩燈的第一個程序就是順序程序。2、循環(huán)程序設(shè)計循環(huán)程序一般包括以下幾部分:1)循環(huán)初值在進(jìn)入循環(huán)之前,要對循環(huán)中需要使用的寄存器或存儲器賦予規(guī)定的初值,主要是循環(huán)次數(shù)。2)循環(huán)體循環(huán)程序中要反復(fù)執(zhí)行的部分,是循環(huán)結(jié)構(gòu)中的主要部分。3)循環(huán)修改每執(zhí)行一次循環(huán),就要對有關(guān)參數(shù)修改,為進(jìn)入下一次循環(huán)做準(zhǔn)備。4)循環(huán)控制在程序中根據(jù)循環(huán)計數(shù)器的值或其他條件,控制循環(huán)是否應(yīng)該結(jié)束。它有兩種結(jié)構(gòu)形式:置初值循環(huán)控制置初值循環(huán)控制循環(huán)體循環(huán)修改NY退出Y置初值循環(huán)控制循環(huán)修改循環(huán)體N退出例、將0~15共16個立即數(shù)傳送到內(nèi)部RAM30H開始的單元用順序程序設(shè)計源程序為:ORG0000HLJMPSETUPOGR0030HSETUP:MOV30H,#0MOV30H,#1MOV30H,#2MOV30H,#3MOV30H,#4MOV30H,#5……………….………………..MOV30H,#15SJMP$END引出指令1、加1指令I(lǐng)NCA;(A)(A)+1,以下類同。INCRnINCdirectINC@RiINCDPTR例1、設(shè)(R0)=7FH;(7EH)=40H執(zhí)行:INC@R0INCR0INC@R0后,(R0)=7FH;(7EH)=00H;(7FH)=41H.2、減1指令DECA;(A)(A)-1 ,以下類同。DECRnDEC@RiDECdirect例5、設(shè)(R0)=7FH,在內(nèi)RAM中,(7EH)=00H,(7FH)=40H執(zhí)行:DEC@R0DECR0DEC@R0結(jié)果為:(R0)=7EH,(7EH)=0FFH,(7FH)=3FH。用循環(huán)程序設(shè)計源程序為:ORG0000HLJMPSETUPOGR0030HSETUP:MOVR7,#16MOVR0,#30HMOVA,#0AA:MOV@R0,AINCAINCR0DJNZR7,AASJMP$END
任務(wù)2.5指令和程序設(shè)計(二)〖課前復(fù)習(xí):〗1、程序的一般結(jié)構(gòu)2、循序程序設(shè)計的步驟3、DJNZ、INC、DEC指令的功能〖新課內(nèi)容:〗例題:首先分析前面講過的循環(huán)彩燈程序ORG0000HLJMPSETUPORG0030HSETUP: CLRP1.0;MOVP1,#11111110BLCALLDELAYSETBP1.0 CLRP1.1;MOVP1,#11111101BLCALLDELAYSETBP1.1 CLRP1.2;MOVP1,#11111011BSETBP1.2 CLRP1.3SETBP1.3;總結(jié)出這樣的規(guī)律:最低位的0依次左移了一位 ……… SETBP1.7LJMPSETUPDELAY: MOVR2,#80HDEL1:MOVR3,#0FFHDEL2:DJNZR3,DEL2DJNZR2,DEL1RETEND一、引出指令1.循環(huán)移位指令(1)RLA;循環(huán)左移AA7A0(2)RRA;循環(huán)右移AA7A0(3)RLCA;帶進(jìn)位位的循環(huán)左移AA7A0Cy(4)RRCA;帶進(jìn)位位的循環(huán)右移AA7A0Cy注意:左移相當(dāng)于乘以2右移相當(dāng)于除以2下面我們利用上面的循環(huán)移位指令設(shè)計前面講過的循環(huán)彩燈程序。 ORG0000H LJMPSETUP ORG0030HSETUP:MOVA,#0FEHMAIN: MOVP1,A LCALLDELAY RLA SJMPMAINDELAY: MOVR2,#80HDEL1:MOVR3,#0FFHDEL2:DJNZR3,DEL2DJNZR2,DEL1 RET END用循環(huán)移位指令一個循環(huán)彩燈程序,要求:8個小燈依次點亮,然后全部熄滅,然后重復(fù)循環(huán)。程序如下: ORG0000H LJMPSETUP ORG0030HSETUP: MOVA,#0FEHMAIN: MOVP1,A LCALLDELAY CLRC RLCA SJMPMAINDELAY: MOVR2,#80HDEL1:MOVR3,#0FFHDEL2:DJNZR3,DEL2DJNZR2,DEL1 RET可以看出,循環(huán)程序所用指令條數(shù)要少,占內(nèi)部ROM字節(jié)較少,在程序中應(yīng)盡可能編寫循環(huán)程序。循環(huán)程序可以用不同的指令編寫,關(guān)鍵選用合適的控制退出或條件判斷退出。2、比較轉(zhuǎn)移指令CJNEA,direct,rel;(C:Compare,J:Jump,N:No,E:Equle)若A=(direct),則程序順序執(zhí)行,且Cy=0。否則程序轉(zhuǎn)移,轉(zhuǎn)移到標(biāo)號指示的地方。若A>(direct),Cy=0,若A<(direct),Cy=1。CJNEA,#data,relCJNERn,#data,relCJNE@Ri,#data,rel其余三條指令功能與第一條類似。例題:設(shè)內(nèi)部RAM30H~3FH單元中有一組數(shù)據(jù),編程求出數(shù)值等于55H的個數(shù),并把結(jié)果存放在50H單元中二、分支程序設(shè)計在一些情況下,常需要根據(jù)不同的條件處理不同的工作,這種程序結(jié)構(gòu)稱為分支程序結(jié)構(gòu)。例:編制一個循環(huán)彩燈程序,要求根據(jù)R5中內(nèi)容的不同分別執(zhí)行各自的程序,R5=0、1、2。 CJNER5,#0,DIS0 CJNER5,#1,DIS1 CJNER5,#2,DIS2STOP: SJMPSTOPDIS0: …… LJMPSTOPDIS1: …… LJMPSTOPDIS2: …… LJMPSTOP
任務(wù)2.6指令和程序設(shè)計(三)〖課前復(fù)習(xí):〗1、循環(huán)移位指令的功能2、比較轉(zhuǎn)移指令的功能〖新課內(nèi)容:〗提出控制要求:在單片機(jī)的P1.0引腳上接一按鍵,當(dāng)鍵按下時引腳為低電平,未按下為高電平,P2口接有8個發(fā)光二極管,要求編程實現(xiàn)按一次鍵依次點亮一個發(fā)光管,每次只有一個發(fā)光管亮。指令學(xué)習(xí):一、條件轉(zhuǎn)移指令(一)判A轉(zhuǎn)移指令JZrel;(J:JumpZ:Zero)判斷累加器A中的內(nèi)容,看其是否為0,為0就轉(zhuǎn)移,轉(zhuǎn)移到標(biāo)號指示的地方。JNZrel(N:No);與上面的指令功能類似,A中不為0轉(zhuǎn)移。(二)判位(bit)轉(zhuǎn)移指令1.JBbit,rel;對可位尋址的位進(jìn)行判別,該位為1轉(zhuǎn)移,轉(zhuǎn)移到標(biāo)號指示的地方。2.JNBbit,rel;對可位尋址的位進(jìn)行判別,該位為0轉(zhuǎn)移,轉(zhuǎn)移到標(biāo)號指示的地方。JBCbit,rel;對可位尋址的位進(jìn)行判別,該位為1轉(zhuǎn)移,轉(zhuǎn)移到標(biāo)號指示的地方,并且將該位清0。(三)判進(jìn)位位Cy轉(zhuǎn)移指令1.JCrel;對進(jìn)位Cy進(jìn)行判別,C=1轉(zhuǎn)移,轉(zhuǎn)移到標(biāo)號指示的地方。2.JNCrel;與上條指令功能相同,C=0轉(zhuǎn)移。例題:編程求20H單元中含有‘1’的個數(shù),并將結(jié)果存到21H單元中分析問題:20H單元地址07H06H05H04H03H02H01H00H位地址ORG0000H LJMPSETUP ORG0030HSETUP:MOV21H,#0JNB00H,AA1INC21HAA2:JNB01H,AA3INC21H。。。。。。。。。。。 SJMP$ END思考題:利用循環(huán)程序?qū)崿F(xiàn)上個題目的功能。二、程序書寫的兩種形式完整格式:如上面的程序就是完整格式子程序形式:AA:MOV21H,#0JNB00H,AA1INC21HAA2:JNB01H,AA3INC21H。。。。。。。。。。。RET三、堆棧操作指令1、堆棧的概念2、堆棧的原則:“先進(jìn)后出,后進(jìn)先出”3、堆棧指針:SP系統(tǒng)復(fù)位后,SP=07H,并且SP始終指向棧頂?shù)?、堆棧的操作指令PUSHdirect;SP——SP+1,(SP)——(direct)PUSH為壓棧指令,是將指定的直接地址direct中的內(nèi)容壓入堆棧。分兩步進(jìn)行,先將堆棧指針SP的內(nèi)容加1,指向堆棧頂?shù)囊粋€空單元,然后將direct中的內(nèi)容送入該空單元中。POPdirect;(SP)——(direct),SP——SP-1POP為出棧指令,是將當(dāng)前堆棧指針SP所指示的單元內(nèi)容彈出到指定的direct中,然后將SP減1。操作過程與PUSH相反。注意:由于堆棧操作只能以直接尋址的方式來操作,所以不能以累加器A或工作寄存器Rn作操作數(shù),若要把A中的數(shù)送入堆棧,應(yīng)用PUSHACC,這里的ACC表示累加器A的直接地址是E0H。注意:1對累加器A的壓棧PUSHA╳PUSHACC√2、工作寄存器的壓棧PUSHR0╳PUSH00H(0區(qū)工作)√PUSH08H(1區(qū)工作)√3、SP的值一般設(shè)置在數(shù)據(jù)緩沖區(qū)即30H~7FH小結(jié):1、掌握堆棧操作的原則以及堆棧操作指令的功能2、掌握條件轉(zhuǎn)移指令的轉(zhuǎn)移條件
任務(wù)2.7指令和程序設(shè)計(四)〖課前復(fù)習(xí):〗1堆棧操作的原則2、條件轉(zhuǎn)移指令的功能〖新課內(nèi)容:〗一、指令介紹交換指令:1.XCHA,Rn;2.XCHA,direct;3.XCHA,@Ri;4.XCHDA,@Ri;5.SWAPA;A中內(nèi)容的高4位和低4位交換不帶進(jìn)位加法指令:ADDA,Rn;(Add:);(A)(A)+(Rn)以下類同。ADDA,directADDA,#dataADDA,@Ri★加法指令應(yīng)用時,必須把一個加數(shù)放在累加器A中,并且結(jié)果也放到A中帶進(jìn)位加法指令:ADDCA,Rn;(A)(A)+(Rn)+(C),以下類同。ADDCA,directADDCA,#dataADDCA,@Ri例:兩個16位無符號數(shù)相加R0R1+R2R3R6R4R5程序如下:AA:MOVA,R1ADDA,R3MOVR5,AMOVA,R0ADDCA,R2MOVR4,ACLRAADDCA,#0MOVR6,ARET例:已知R0中有一個用原碼表示的數(shù)據(jù),試求其補碼結(jié)果仍然存放在R0中分析問題:給出一個二進(jìn)制數(shù),補碼的求法,要考慮給出的數(shù)據(jù)是正數(shù)還是負(fù)數(shù),正數(shù)的補碼等原碼,負(fù)數(shù)的補碼在反碼的基礎(chǔ)上加1程序如下:AA:MOVA,R0JNBACC.7,BBCPLAADDA,#1SETBACC.7MOVR0,ABB:RET帶進(jìn)位減法指令:1.SUBBA,Rn;(SUB:Subtract);(A)(A)-(Rn)-(C),以下類同。2.SUBBA,direct3.SUBBA,#data4.SUBBA,@Ri★減法運算時,被減數(shù)一定放在累加器A中指令減法指令前,必須對Cy清0,用CLRC注意:INCA指令和ADDA,#1指令DECA指令和SUBBA,#1指令加1減1指令和加減法中的加1和減1指令是有區(qū)別的,主要是加1減1指令不影響標(biāo)志位,特別是不影響進(jìn)位標(biāo)志Cy。而加減法運算中的加1和減1指令影響標(biāo)志位。BCD碼調(diào)整指令DAA對加法運算結(jié)果進(jìn)行BCD碼調(diào)整,主要用于BCD碼加法運算,注意不能對BCD碼減法運算結(jié)果進(jìn)行調(diào)整。注意:DA指令只能跟在加法指令后面使用;調(diào)整前參與運算的兩數(shù)是BCD碼數(shù);DA指令不能與減法指令配對使用,但可以實現(xiàn)對A中壓縮BCD操作。乘法和除法指令乘法指令MULAB;(Multiplie)該條指令的功能是將兩個8位無符號數(shù)相乘,兩個無符號數(shù)分別存放在A和B中,乘積為16位,低8位存放在A中,高8位存放在B中。除法指令DIVAB;(Devided)該條指令的功能是將兩個8位無符號數(shù)相除,被除數(shù)存放在A中,除數(shù)存放在B中,指令執(zhí)行后,商存放A中,余數(shù)存放B中。注意:乘除法指令的執(zhí)行周期為4個機(jī)器周期,參加運算的無符號數(shù)必須存放在A和B中,只有8位的乘除法指令。例:R1/R0R2分析問題:除法指令可以用減法來實現(xiàn)10/310–3=7……….17–3=4…………1和即為商4–3=1…………11<3……………余數(shù)程序如下:AA:MOVR2,#0BB:MOVA,R1CLRCSUBBA,R0;可以放在下面的位置MOVR1,AJCCCINCR2MOVR1,ASJMPBBCC:RET
任務(wù)2.8指令和程序設(shè)計(五)〖課前復(fù)習(xí):〗1、加減法指令的功能及其注意事項2、乘除法指令的功能〖新課內(nèi)容:〗一、指令介紹邏輯“與”運算指令A(yù)NLA,Rn(AndLogic)ANLA,@RiANLA,#dataANLA,directANLdirect,AANLdirect,#data這些指令的功能是將源操作數(shù)和目的操作數(shù)按位相與,結(jié)果送回目的操作數(shù)中。邏輯“或”運算1.ORLA,Rn;(OrLogic)2.ORLA,@Ri3.ORLA,#data4.ORLA,direct5.ORLdirect,A6.ORLdirect,#data這些指令的功能是將源操作數(shù)和目的操作數(shù)按位相或,結(jié)果送回目的操作數(shù)中。邏輯“異或”運算1.XRLA,Rn2.XRLA,@Ri3.XRLA,#data4.XRLA,direct5.XRLdirect,A6.XRLdirect,#data這些指令的功能是將源操作數(shù)和目的操作數(shù)按位相異或,結(jié)果送回目的操作數(shù)中。例:已知一單字節(jié)數(shù)存放在R0中,要求將其轉(zhuǎn)換成十進(jìn)制數(shù)存放在R1R2R3中分析問題:單字節(jié)數(shù)的范圍:0~255例254屬于上面的范圍254/100商2R154/10商4R2余數(shù)5R3程序如下:AA:MOVA,R0MOVB,#100DIVABMOVR1,AMOVA,BMOVB,#10DIVABMOVR2,AMOVR3,BRET例:已知一單字節(jié)數(shù)存放在R0中,要求將其轉(zhuǎn)換成十進(jìn)制數(shù)存放在R1R2中程序如下:AA:MOVA,R0MOVB,#100DIVABMOVR1,AMOVA,BMOVB,#10DIVABSWAPAADDA,BMOVR2,ARET例:已知三位BCD碼表示的十進(jìn)制數(shù)存放在R0R1R2中,要求將其轉(zhuǎn)換成二進(jìn)制數(shù),存放在R2R3中。同學(xué)們考慮這個問題如何解決,如果把上個題目改成已知三位BCD碼表示的十進(jìn)制數(shù)存放在R0R12中,要求將其轉(zhuǎn)換成二進(jìn)制數(shù),存放在R2R3中。問題又如何解決呢?小結(jié):1、掌握與指令的功能及應(yīng)用2、鞏固SWAP指令的應(yīng)用項目3數(shù)碼管顯示廣告牌一、任務(wù)要求利用單片機(jī)控制數(shù)碼管,實現(xiàn)靜態(tài)顯示和動態(tài)掃描顯示。二、任務(wù)資訊1、數(shù)碼管及其使用。2、單片機(jī)并行I/O口的應(yīng)用。3、循環(huán)程序、查表程序和子程序的設(shè)計與調(diào)試。LED數(shù)碼管及其顯示方式一、LED數(shù)碼管外型和引腳abcabcdefgdpcomabcdefgdp共陽型+5Vcom共陰型共陰型LED數(shù)碼管如上圖所示。正面為一個矩形,上面有七個筆畫組成的8和圓點表示的小數(shù)點,共計8個,分別用a、b、c、d、e、f、g、dp代表各個筆畫的名稱,故又稱為8“段”數(shù)碼管,每一個段內(nèi)部都有一個LED發(fā)光管和他們對應(yīng)。上下兩頭各有5個引腳。其中有8個引腳分別和a、b、c、d、e、f、g、dp對應(yīng),兩頭中間引腳內(nèi)部是相連的,接的是8個LED的公共端(Commonality)(即數(shù)碼管的“位”),用COM表示。內(nèi)部結(jié)構(gòu)內(nèi)部結(jié)構(gòu)分為共陽型和共陰型,如上面圖所示。LED數(shù)碼管的編碼(Code)方式從LED的內(nèi)部結(jié)構(gòu)看,要點亮它,跟我們前面講的8個循環(huán)彩燈相似,8個小燈亮的方式不同,在數(shù)碼管上顯示不同的字符。一般用8位二進(jìn)制數(shù)代表每個段。A為低位,Dp為高位,即:D7D6D5D4D3D2D1D0dpgfedcba如要顯示0,就須把對應(yīng)的a、b、c、d、e、f段的LED點亮,如果用正邏輯表示,即1亮0滅,顯示0要求段的數(shù)據(jù)為3FH,同樣顯示其他字符也有對應(yīng)數(shù)據(jù)表示。也就是顯示字符的編碼。下面為數(shù)碼管的正邏輯編碼:0:3FH;1:06H;2:5BH;3:4FH;4:66H;5:6DH;6:7DH7:07H;8:7FH;9:6FH。注意:共陰型數(shù)碼管于正邏輯編碼方式一致,共陽型數(shù)碼管恰好相反。二、LED數(shù)碼管靜態(tài)顯示方式LED數(shù)碼管顯示電路在單片機(jī)系統(tǒng)中分為靜態(tài)(StaticStage)顯示和動態(tài)(DynamicStage)顯示。1.特點:(1)靜態(tài)顯示時數(shù)碼管的段需要一個8位I/O口控制。(2)數(shù)碼管的位:接“電源”或接“地”(3)靜態(tài)顯示方式,編程簡單,但占用的I/O口線較多,dp390dp390Ω+5VP0P2最小系統(tǒng)P1P3a第一位第二位第四位第三位下面是其應(yīng)用的例子:2.硬件電路(共陽型)P1口的數(shù)碼管是完整電路,其余口為示意電路。顯示程序(在四個數(shù)碼管上分別顯示0、1、2、3) ORG0000H LJMPSETUP ORG0030HSETUP: MOVA,#3FH CPLA MOVP1,A MOVA,#06H CPLA MOVP3,A MOVA,#5BH CPLA MOVP0,A MOVA,#4FH CPLA MOVP2,A SJMPSETUP END三、LED數(shù)碼管動態(tài)顯示方式1.特點:(1)將所有數(shù)碼管的所有相同的段連接在一起,8個段共8組,由一個8位的I/O口控制。(2)每一個數(shù)碼管的公共端由一位I/O口控制。通過分時向段送數(shù)據(jù)和位控制信號,使各數(shù)碼管輪流顯示,這種數(shù)碼管顯示方式就稱為動態(tài)掃描(Scan)電路。(3)動態(tài)顯示方式,編程相對復(fù)雜,但占用的I/O口線較少。adpadp最小系統(tǒng)P2············+5V+5V硬件電路(共陽型)段數(shù)據(jù)由P0口輸出,外接上拉電阻,位由P2.0~P2.3輸出,用低電平驅(qū)動三極管,三極管輸出接數(shù)碼管的公共端。三、任務(wù)實施1、用單片機(jī)控制一位數(shù)碼管,依次顯示數(shù)字0~9。(1)設(shè)計出硬件電路(在PROTUES軟件中畫出下面電路)(3)用匯編語言編寫控制程序,并在KEIL軟件中進(jìn)行調(diào)試ORG0000HSTART:MOVR1,#00HNEXT:MOVA,R1MOVDPTR,#TABMOVCA,@A+DPTRMOVP0,ALCALLDELAYINCR1CJNER1,#10,NEXTLJMPSTART;延時1S的延時子程序DELAY:MOVR5,#20D2:MOVR6,#20D1:MOVR7,#248DJNZR7,$DJNZR6,D1DJNZR5,D2RETTAB:DB3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FHEND2、用單片機(jī)控制四位數(shù)碼管,穩(wěn)定顯示數(shù)字“0(1)設(shè)計出硬件電路(在PROTUES軟件中畫出下面電路)(3)用匯編語言編寫控制程序,并在KEIL軟件中進(jìn)行調(diào)試。(數(shù)碼管為共陽型)ORG0000HLJMPSETUPORG0030HSETUP:MOV70H,#0MOV71H,#1MOV72H,#2MOV73H,#3MOVDPTR,#TABMAIN:LCALLDISLJMPMAINDIS:MOVA,70HMOVCA,@A+DPTRMOVP0,ACLRP2.0LCALLDELSETBP2.0MOVA,71HMOVCA,@A+DPTRMOVP0,ACLRP2.1LCALLDELSETBP2.1MOVA,72HMOVCA,@A+DPTRMOVP0,ACLRP2.2LCALLDELSETBP2.2MOVA,73HMOVCA,@A+DPTRMOVP0,ACLRP2.3LCALLDELSETBP2.3RETDEL:MOVR7,#80HDJNZR7,$RETTAB:DB0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90HEND項目4簡易秒表的設(shè)計一、任務(wù)要求本項目制作一個簡易秒表,利用LED數(shù)碼管顯示時間。用兩位數(shù)碼管動態(tài)顯示時間,時間范圍為0-60秒。擴(kuò)展功能:用三個獨立式按鍵實現(xiàn)秒表的啟動、停止和復(fù)位功能。(選做)二、任務(wù)資訊1、單片機(jī)并行I/O口的應(yīng)用。2、數(shù)碼管顯示,鍵盤控制技術(shù)應(yīng)用。3、中斷系統(tǒng)的應(yīng)用。4、定時計數(shù)器的使用。5、綜合應(yīng)用程序的設(shè)計與調(diào)試。MCS-51中斷系統(tǒng)中斷(Interrupt)概述中斷的概念所謂中斷是指CPU正在處理某件事時,外部發(fā)生了某一事件(如定時器溢出),請求(Requle)CPU迅速處理(Process),CPU暫時中斷當(dāng)前的工作,轉(zhuǎn)入處理所發(fā)生的事件,處理完畢后,再回到原來被中斷的地方,繼續(xù)原來的工作,這樣的過程稱為中斷。實現(xiàn)這種功能的部件稱為中斷系統(tǒng),產(chǎn)生中斷的請求源稱為中斷源。2.中斷的調(diào)用過程現(xiàn)行程序現(xiàn)行程序中斷服務(wù)程序現(xiàn)行程序中斷服務(wù)程序現(xiàn)行程序現(xiàn)行程序現(xiàn)行程序二、與中斷系統(tǒng)有關(guān)的SFR定時/計數(shù)器控制寄存器TCON(88H)IE1IT1IE0IT08BH8AH89H88HTCON(TimeControl)的字節(jié)地址為88H,表明該寄存器的每一位可位尋址。其中:IT0:外部中斷0的觸發(fā)方式選擇位,當(dāng)IT0=0時為電平觸發(fā)(LeverTriggering),IT0=1時為邊沿觸發(fā)(EdgeTriggering)。IE0:為外部中斷0的標(biāo)志位。IT1:同IT0類似。IE1:同IE0類似。CPU是怎么知道中斷請求的尼?CPU會在每個機(jī)器周期的S5P2采樣外部中斷引腳,根據(jù)以下兩種情況置中斷標(biāo)志:當(dāng)IT0=0時,CPU查到外引腳為低電平,置“1”中斷標(biāo)志,外引腳為高電平時清“0”中斷標(biāo)志。當(dāng)IT0=1時,CPU是根據(jù)前后兩次檢查外引腳的情況判斷是否有中斷請求,當(dāng)前一次為高,后一次為低,置“1”中斷標(biāo)志。其他情況不置中斷標(biāo)志。CPU響應(yīng)(Respond)中斷,轉(zhuǎn)向執(zhí)行中斷服務(wù)程序時會自動由硬件清“0”中斷允許控制寄存器IE(A8H)IE的地址末位為8,說明它也可位尋址。EAESET1EX1ET0EX0AFHACHABHAAHA9HA8HEA:所有中斷總的控制位。(E:EnableA:All)ES:串行口中斷允許位。(E:EnableS:Series)ET1:定時/計數(shù)器1中斷允許位。EX1:外部中斷1中斷允許位。ET0:定時/計數(shù)器0中斷允許位。EX0:外部中斷0中斷允許位。中斷優(yōu)先級控制寄存器IP(I:Interrupt,P:Priority)(B8H)也可位尋址。PSPT1PX1PT0PX0BCHBBHBAHB9HB8H通過對相應(yīng)位設(shè)置可以改變該中斷的優(yōu)先級。MCS-51中斷系統(tǒng)只有兩級優(yōu)先級,在同優(yōu)先級內(nèi)中斷的優(yōu)先順序為:外部中斷0、T0、外部中斷1、T1、串行口。低級中斷可以被高級中斷所打斷。MCS-51中斷嵌套如下圖所示:高級中斷程序低級中斷程序主程序高級中斷程序低級中斷程序主程序三、中斷的處理過程中斷的處理過程包括:中斷請求、中斷響應(yīng)、中斷服務(wù)和中斷返回。1、中斷請求當(dāng)某個中斷源要求CPU服務(wù)時,必須發(fā)出中斷請求信號。內(nèi)部中斷源和外部中斷源請求的方式不同。若是外部中斷源,需要將請求信號加到該中斷的外部引腳上,CPU會在執(zhí)行指令的每個機(jī)器周期內(nèi)檢查外部中斷引腳,有請求信號時置“1”該中斷標(biāo)志位。分為兩種情況。具體上面已詳細(xì)講過。若是內(nèi)部中斷源,CPU內(nèi)部的硬件電路會自動置位該中斷標(biāo)志位,具體內(nèi)容我們學(xué)習(xí)定時器和串行口時再講。2、中斷響應(yīng)有了中斷請求,CPU也不一定會響應(yīng)該中斷,要響應(yīng)中斷還必須滿足一定的條件。中斷響應(yīng)的條件如下:該中斷已“開中斷”。此時CPU沒有響應(yīng)同級或更高級中斷。當(dāng)前正處在所執(zhí)行指令的最后一個機(jī)器周期。正在執(zhí)行的指令不是RETI或是訪問IE、IP的指令。滿足上述條件CPU就會響應(yīng)該中斷,響應(yīng)中斷,在執(zhí)行中斷服務(wù)程序前還要執(zhí)行以下幾項操作:保護(hù)斷點(Breakpoint)地址,將斷點地址壓入堆棧。撤消(Cancel)該中斷源的中斷請求標(biāo)志(串行口除外)。關(guān)閉(Close)同級中斷。將該中斷源的入口地址送入PC。執(zhí)行以上幾項操作后就進(jìn)入執(zhí)行中斷服務(wù)程序。3、中斷服務(wù)保護(hù)現(xiàn)場(把斷點地址信息壓入堆棧保護(hù))中斷服務(wù)程序主體恢復(fù)現(xiàn)場4、中斷返回中斷服務(wù)內(nèi)容完成,現(xiàn)場恢復(fù),就可以回到原來被打斷的地方繼續(xù)運行。這個過程通過執(zhí)行RETI指令自動完成,主要做下面兩項工作。恢復(fù)斷點地址。將響應(yīng)中斷時壓入堆棧的斷點地址彈出,送入PC。開放同級中斷四、外部中斷的應(yīng)用外部中斷應(yīng)用需要注意以下幾個問題:1、硬件上要把中斷請求信號加到中斷引腳上。2、軟件上做三項工作提供中斷入口地址中斷的初始化(方式選擇、開中斷)編寫具體的中斷服務(wù)程序。下面以一個具體的事例說明外部中斷的應(yīng)用。我們以前做過的循環(huán)彩燈,現(xiàn)在要求通過按一個按鈕,每按一次彩燈移一位。SS10K1K+5V360Ω最小系統(tǒng)P3.2+5V上圖為電路圖。按鈕信號加到中斷0的引腳P3.2,當(dāng)S不按下時,P3.2引腳為高電平,按下為低電平,在按鍵的過程中P3.2引腳產(chǎn)生中斷請求信號。中斷觸發(fā)方式用邊沿觸發(fā),程序如下: ORG0000H LJMPSETUP ORG0003H LJMPINT0P ORG0030HSETUP:MOVA,#0FEH SETBIT0 SETBEX0 SETBEAMAIN:SJMPMAININT0P:MOVP1,A RLA RETI END定時/計數(shù)器概述〖課前復(fù)習(xí):〗1、外部中斷的應(yīng)用步驟〖新課內(nèi)容:〗定時/計數(shù)器概述80C51有兩個16位的定時/計數(shù)器,T0和T1。本質(zhì)上講都是計數(shù)器。對外部事件脈沖計數(shù)就作為計數(shù)器使用對內(nèi)部的機(jī)器周期計數(shù)就作為定時器使用。(對外部脈沖計數(shù)時,信號脈沖應(yīng)加到相應(yīng)的外引腳上T0(P3.4),T1(P3.5))他們都是加法計數(shù)器,計滿后就會溢出(Overflow),溢出時產(chǎn)生中斷標(biāo)志。二、與定時/計數(shù)器有關(guān)的SFR1.定時/計數(shù)器工作方式控制寄存器TMOD(T:Timer,M:Mode)(89H)GATEC/TM1M0GATEC/TM1M0高4位控制T1低4位控制T0TMOD不可位尋址,高4位和低4位分別控制T1和T0。(1)M1M0——工作方式選擇位。M1M0方式功能00方式013位的計數(shù)器01方式116位的計數(shù)器10方式28位的計數(shù)器,初值自動重裝11方式3兩個8位的計數(shù)器,僅適用T0(2)C/T——計數(shù)/定時方式選擇位。C/T=1,為計數(shù)工作方式,對外部事件脈沖計數(shù),作為計數(shù)器用(負(fù)跳變有效)。C/T=0,為定時工作方式,對內(nèi)部機(jī)器脈沖計數(shù),作定時器用。(3)GATE——門控位。一般取GATE=0,在后面的定時器工作方式結(jié)構(gòu)中分析原因。TCON:定時/計數(shù)器控制寄存器(88H)TF1TR1TF0TR0IE1IT1IE0IT08FH8EH8DH8CH8BH8AH89H88HTCON可位尋址。低4位我們在中斷部分已講過,不再重復(fù)。高4位的功能與定時器有關(guān),含義如下:TF0:定時/計數(shù)器T0溢出標(biāo)志。(T:Timer,F:Flag)TR0:定時/計數(shù)器T0運行控制位。(T:Timer,R:Run)TR0=1,T0運行TR0=0,T0停止TF1:功能與TF0相同。TR1:功能與TR0相同。3.計數(shù)寄存器TH0、TL0是T0的兩個8位計數(shù)器,TH1、TL1是T1的兩個8位計數(shù)器,并且高8位數(shù)存放在TH中,低8位數(shù)存放在TL中。三、定時/計數(shù)器的工作方式1.方式0(自學(xué))控制1控制1OSC÷12+TL0TH0(8)(8)TF0T0TR0INT0GATEC/T0中斷當(dāng)M1M0=01時,定時/計數(shù)器工作在方式1,邏輯結(jié)構(gòu)如上圖所示。內(nèi)部為16位計數(shù)器,有TL0作低8位和TH0作8位,16位計滿溢出,溢出置位TF0。最大計數(shù)值為216=65536。原理分析總結(jié):GATE=0,TR0=1,控制開關(guān)閉合,開始計數(shù)。GATE=1,同時TR=1INT0=1時,才開始運行??偵戏治觯贸鋈ATE=03.方式2自動重裝自動重裝控制1OSC÷12+TL0(8)TF0T0TR0INT0GATEC/T0中斷TH0(8) 當(dāng)M1M0=10時,定時/計數(shù)器工作在方式2,邏輯結(jié)構(gòu)如上圖所示。定時/計數(shù)器工作為8位,能自動恢復(fù)定時/計數(shù)器初值。即用TL0計數(shù),計滿溢出時自動將TH0中的值送入TL0,自動恢復(fù)初值。計數(shù)的最大值為256。初值的計算方法例用定時器T0產(chǎn)生1ms的定時,系統(tǒng)的fosc=12MHZ分析:機(jī)器周期=1us要產(chǎn)生1ms的定時,要數(shù)1ms/1us=1000個機(jī)器周期的脈沖,那么數(shù)機(jī)器周期的方法有兩種方法10001000065536初值(1)從0開始計數(shù),計到1000即可,但是總要去看什么時候到1000?(2)從某個平臺(初值)開始計數(shù),計滿剛好溢出,產(chǎn)生中斷標(biāo)志,請求中斷具體計算:65536-1ms/1us=65536-1000=64536轉(zhuǎn)換后存到計數(shù)寄存器中即可。四、定時/計數(shù)器的應(yīng)用步驟1、初始化選擇工作模式MOVTMOD,……..計數(shù)器付初值MOVTH0,……..MOVTL0,………..啟動計數(shù)器SETBTR0開中斷SETBET0SETBEA2、提供中斷入口地址3、編寫中斷服務(wù)程序。(1)保護(hù)現(xiàn)場、恢復(fù)現(xiàn)場(2)重新賦初值(方式2除外)例:設(shè)計一程序,在P1.0引腳上輸出周期為2ms方波。fOSC=6MHz.分析:要在P1.0引腳上輸出方波,只要在P1.0引腳上交替輸出高電平和低電平即可,用定時/計數(shù)器產(chǎn)生1ms定時,定時到改變輸出信號。計算1ms定時的計數(shù)初值,1ms需要數(shù)500機(jī)器周期。初值=65536-500=6503665036/256得整數(shù)部分為254,余數(shù)為12。程序如下: ORG0000H LJMPSETUP ORG000BH ② LJMPINET0P ORG0030HSETUP: MOVTMOD,#01 MOVTH0,#254 ① MOVTL0,#12 SETBTR0 SETBET0 SETBEAMAIN: SJMP$INET0P: CLRTR0 MOVTH0,#254 MOVTL0,#12 ③ SETBTR0 CPLP1.0 RETI END從方式0和方式1的應(yīng)用看,方式1比方式0有優(yōu)點,計數(shù)范圍大,初值計算不須換算,使用方便,建議采用。例:設(shè)計一程序,在P1.0引腳上輸出400us方波。fOSC=6MHz.用方式2實現(xiàn)分析:由于400us需要計數(shù)200個機(jī)器脈沖數(shù),而8位計數(shù)器就能計數(shù)256,因此用方式2可以實現(xiàn)。
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 新員工入職產(chǎn)品手冊
- 世界地圖集各樣民族故事讀后感
- 企業(yè)風(fēng)險評估報告表
- 企業(yè)員工績效獎勵激勵制度實施協(xié)議
- 汽車銷售排行榜
- 市場營銷活動效果評估與優(yōu)化實戰(zhàn)指南
- 環(huán)衛(wèi)公司勞動合同書
- 高分子化學(xué)與材料合成考試要點解析
- 中小學(xué)生國學(xué)經(jīng)典故事解讀
- 酒店業(yè)投資經(jīng)營與股權(quán)轉(zhuǎn)讓協(xié)議
- 科技小院在鑄牢中華民族共同體意識中的作用及路徑
- 課題申報參考:生成式人工智能對大學(xué)生思想認(rèn)知的沖擊與應(yīng)對研究
- 2025年小學(xué)課間操量化檢查制度(2篇)
- 2022國家供暖規(guī)定法規(guī)
- 【歷史】三國兩晉南北朝時期的科技與文化(課件) 2024-2025學(xué)年七年級歷史上(部編版2024)
- 2025年園林綠化工(高級)考試題庫及答案
- 2024春四年級上下冊音樂測試專項測試題及答案
- 多發(fā)傷骨折護(hù)理查房
- 中建二測考試題庫及答案
- 華東師范大學(xué)《外國人文經(jīng)典(下)》2021-2022學(xué)年第一學(xué)期期末試卷
- 基礎(chǔ)護(hù)理及病房管理
評論
0/150
提交評論