版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
單片機(jī)技術(shù)與實(shí)現(xiàn)
項(xiàng)目四數(shù)碼管顯示器的實(shí)現(xiàn)項(xiàng)目四數(shù)碼管顯示器的實(shí)現(xiàn)任務(wù)一
數(shù)碼管顯示器與鍵盤控制電路的制作任務(wù)二
1位、2位數(shù)碼管顯示的實(shí)現(xiàn)任務(wù)三
4人搶答器的設(shè)計(jì)拓展知識
LED動(dòng)態(tài)顯示方式數(shù)碼管用于單片機(jī)數(shù)碼管顯示是單片機(jī)系統(tǒng)重要的信息顯示方式,常與按鍵一起組成“人機(jī)對話”,學(xué)習(xí)數(shù)碼管顯示及按鍵的編程實(shí)現(xiàn)方法是單片機(jī)開發(fā)重要的基本功。認(rèn)識數(shù)碼管數(shù)碼管是單片機(jī)應(yīng)用系統(tǒng)中最常用的顯示器件之一,為人機(jī)對話提供了一個(gè)直觀的顯示窗口,通過數(shù)碼管顯示數(shù)字0~9及字母A~F。數(shù)碼管的規(guī)格大小不同,顏色以紅色、綠色、黃色、藍(lán)色居多。數(shù)碼管的結(jié)構(gòu)右圖為數(shù)碼管的筆畫示意圖,其內(nèi)部由8個(gè)發(fā)光二極管組成,故又稱為八段LED數(shù)碼管。發(fā)光二級管的連接方式不同,數(shù)碼管可分為共陰極數(shù)碼管和共陽極數(shù)碼管兩種。共陰極接法共陽極接法數(shù)碼管的顯示原理七段數(shù)碼顯示器內(nèi)部由8只LED組成,其中7只LED組成顯示數(shù)字的七段數(shù)碼;1只顯示小數(shù)點(diǎn)。當(dāng)需要顯示0~9其中1個(gè)數(shù)字時(shí),把對應(yīng)這個(gè)數(shù)字的LED段點(diǎn)亮。共陽數(shù)碼管數(shù)字編碼共陰數(shù)碼管數(shù)字編碼?獨(dú)立式按鍵與矩陣式鍵盤按鍵是完成單片機(jī)系統(tǒng)人機(jī)對話的重要手段,如計(jì)算機(jī)鍵盤,手機(jī)撥號鍵及其他電子設(shè)備的控制按鈕各種電子設(shè)備的鍵盤獨(dú)立式鍵盤原理在獨(dú)立式鍵盤電路中,K1~K8獨(dú)立按鍵的1腳全部連接到地(低電平)、2腳分別連接到集成電阻的1~8腳,集成電阻的9~19腳全部連接到電源+5V電壓(高電平)。在沒有按鍵接通時(shí),集成電阻的1~8腳全部為電源+5V電壓(高電平),當(dāng)某一只按鍵接通時(shí),與該按鍵相連的電阻腳被連接到地(低電平)。因此,可以利用集成電阻的1~8腳電壓變化狀態(tài)(高低電平變化狀態(tài))來判斷是哪一只按鍵被按下接通。獨(dú)立式按鍵電路的結(jié)構(gòu)按鍵去抖的方法:利用延時(shí)時(shí)間,一般設(shè)定10~20ms的延時(shí)程序。按鍵抖動(dòng):單片機(jī)系統(tǒng)中的按鍵一般是機(jī)械觸點(diǎn),當(dāng)按鍵從閉合到斷開或從斷開到閉合的過程中,會(huì)有抖動(dòng),也即有一個(gè)似通非通的不確定狀態(tài)。矩陣式鍵盤識別原理:把第一列按鍵2腳連接到地(低電平),當(dāng)按下1號鍵時(shí),在第一行按鍵1腳被連接到地(低電平)。由于第二、三列按鍵2腳沒有接地(低電平),因此,判斷識別出是1號鍵被按下。其它鍵號的判斷識別以此類推。矩陣式鍵盤接口電路舉例說明如下:設(shè)“1”號鍵被按下,分以下三步操作。①使P1.4~P1.7輸出低電平,P1.0~P1.3為輸入,讀取P1.0—P1.3值為0111B。②使P1.0~P1.3輸出低電平,P1.4~P1.7為輸入,讀取P1.4—P1.7值為0111B。③合并上述兩個(gè)鍵值,得11101110B,即EEH,此即為“1”號鍵的鍵值。矩陣式鍵盤電路的行列編碼未使用第三列第二列第一列第四行第三行第二行第一行1號鍵111011104號鍵111011017號鍵11101011*號鍵111001112號鍵110111105號鍵110111018號鍵110110110號鍵110101113號鍵101111106號鍵101111019號鍵10111011#號鍵10110111任務(wù)一電路?匯編語言指令(一)數(shù)據(jù)傳送指令1、direct寄存器里面的數(shù)據(jù)傳送(復(fù)制)到累加器A
指令書寫格式:MOVA,direct
指令執(zhí)行時(shí)間:1μs(12MHz時(shí)鐘)例1MOV30H,#0C0H
;先在30H寄存器存入數(shù)據(jù)C0H。MOVA,30H
;把30H寄存器里面的數(shù)據(jù)傳送(復(fù)制)到累加器A,累加器A里面的數(shù)據(jù)=C0H。
例2MOVP1,#0EEH;先在P1口存入數(shù)據(jù)EEH。MOVA,P1
;把P1口的數(shù)據(jù)傳送(復(fù)制)到累加器A,累加器A里面的數(shù)據(jù)=EEH2、direct單元的數(shù)據(jù)傳送(復(fù)制)到另一個(gè)direct單元
指令書寫格式:MOVdirect,direct
指令執(zhí)行時(shí)間:2μs(12MHz時(shí)鐘)例3 MOV30H,31H;把31H單元的數(shù)據(jù)傳送(復(fù)制)到30H單元,當(dāng)31H單元里面的數(shù)據(jù)=EEH時(shí),30H單元里面的數(shù)據(jù)=EEH。指令還有以下幾種書寫形式:MOVP0,31H;數(shù)據(jù)輸出指令(可以產(chǎn)生隨機(jī)輸出數(shù)據(jù))
MOV30H,P0;數(shù)據(jù)輸入指令
MOVP0,P1;端口對端口的數(shù)據(jù)傳送(復(fù)制)指令匯編語言指令3、direct寄存器里面的數(shù)據(jù)傳送(復(fù)制)到Rn寄存器
指令書寫格式:MOVRn,direct
指令執(zhí)行時(shí)間:2μs(12MHz時(shí)鐘)例4
MOVR0,30H;把30H寄存器的數(shù)據(jù)傳送(復(fù)制)到R0寄存器,當(dāng)30H寄存器的數(shù)據(jù)=01H時(shí),R0寄存器的數(shù)據(jù)=01H。例5
MOVR0,P1;把P1口寄存器的數(shù)據(jù)傳送(復(fù)制)到R0寄存器,當(dāng)P1口的數(shù)據(jù)=30H時(shí),R0寄存器的數(shù)據(jù)=30H。匯編語言指令4、@Ri間接尋址寄存器所指定的direct寄存器里面的數(shù)據(jù)傳送(復(fù)制)到累加器A
指令書寫格式:MOVA,@Ri
指令執(zhí)行時(shí)間:2μs(12MHz時(shí)鐘)例6MOV30H,#05H;先在30H寄存器存入數(shù)據(jù)05HMOVR1,#30H;然后把寄存器的地址號30H存入R1寄存器MOVA,@R1;當(dāng)@R1指定了30H寄存器,那么30H寄存器里面的數(shù)據(jù)傳送(復(fù)制)到累加器A,累加器A的數(shù)據(jù)=05H。匯編語言指令5、16位立即數(shù)據(jù)傳送(復(fù)制)到DPTR寄存器
指令書寫格式:MOVDPTR,#data16
指令執(zhí)行時(shí)間:2μs(12MHz時(shí)鐘)例7 MOVDPTR,#5FFH;把16位立即數(shù)據(jù)5FFH傳送(復(fù)制)到DPTR寄存器,DPTR寄存器里面的數(shù)據(jù)=5FFH。注:DPTR寄存器是16位二進(jìn)制數(shù)據(jù)寄存器,由于89C51單片機(jī)不能處理16位二進(jìn)制數(shù)據(jù),因此,使用了兩個(gè)8位寄存器合并為一個(gè)16位二進(jìn)制數(shù)據(jù)寄存器,兩個(gè)8位寄存器分別是DPH寄存器和DPL寄存器。在程序中可以對DPTR寄存器的數(shù)據(jù)進(jìn)行處理,也可以把它分為DPH和DPL兩個(gè)寄存器單獨(dú)處理。在例4-2-7中,DPTR寄存器里面的數(shù)據(jù)為5FFH,數(shù)據(jù)的高8位數(shù)05H存在DPH寄存器里面、數(shù)據(jù)的低8位數(shù)FFH存在DPL寄存器里面。◆(DPH)←#data(高8位:第8位~第15位存入DPH寄存器)◆(DPL)←#data(低8位:第0位~第7位存入DPL寄存器)匯編語言指令6、累加器A里面的數(shù)據(jù)與DPTR寄存器里面的數(shù)據(jù)相加之和,作為地址號碼進(jìn)行間接尋址,把數(shù)據(jù)表的數(shù)據(jù)傳送(復(fù)制)到累加器A,也稱為查表指令。指令書寫格式:MOVCA,@A+DPTR指令執(zhí)行時(shí)間:2μs(12MHz時(shí)鐘)指令占用地址:3字節(jié)例8MOV
DPTR,#300H;先把數(shù)據(jù)表起始地址存入DPTR寄存器MOV
A,#01H
;然后把數(shù)據(jù)在數(shù)據(jù)表中的地址存入累加器AMOVCA,@A+DPTR
;數(shù)據(jù)在數(shù)據(jù)表中的地址號01H“加”數(shù)據(jù)表起始地址號300H等于301H,然后,讀取數(shù)據(jù)表中301H地址的數(shù)據(jù)存入累加器A。匯編語言指令(二)算術(shù)運(yùn)算指令1、direct寄存器里面的數(shù)據(jù)減1指令書寫格式:DEC
30H指令執(zhí)行時(shí)間:2μs(12MHz時(shí)鐘)2、累加器A里面的數(shù)據(jù)加1指令書寫格式:INC
A指令執(zhí)行時(shí)間:2μs(12MHz時(shí)鐘)例9MOV
A,#00H;先把數(shù)據(jù)00H存入累加器A。INC
A
;累加器A里面的數(shù)據(jù)加=00H+01H=01H。匯編語言指令(三)DB偽指令DB偽指令——用來按順序定義數(shù)據(jù)表中數(shù)據(jù)的地址號。如:建立一個(gè)共陽極數(shù)碼顯示器0~9數(shù)字的二進(jìn)制段編碼表:例10
TAB: DB 0C0H,0F9H,0A4H,0B0H,99H DB 92H,82H,0F8H,80H,90H,88H1位數(shù)碼管顯示的實(shí)現(xiàn)根據(jù)數(shù)碼管的內(nèi)部結(jié)構(gòu)及顯示原理,結(jié)合項(xiàng)目三中LED閃光燈的控制原理,只要在單片機(jī)的P0端口輸出0~9中任意一個(gè)數(shù)字的編碼,并反復(fù)執(zhí)行操作,則數(shù)碼管即可顯示任意一位數(shù)字。1、設(shè)計(jì)程序流程圖2位數(shù)碼管顯示的實(shí)現(xiàn)在1位數(shù)碼管顯示器實(shí)驗(yàn)中,若再并聯(lián)一位數(shù)碼管,由于單片機(jī)P0口輸出的數(shù)字編碼是一樣的,所以我們發(fā)現(xiàn)兩位數(shù)碼管顯示的數(shù)字是一樣的,因此,為了讓顯示器的個(gè)位數(shù)和十位數(shù)能夠獨(dú)立顯示各自的數(shù)字,必須在顯示器顯示個(gè)位數(shù)時(shí)關(guān)閉十位數(shù)顯示,顯示器顯示十位數(shù)時(shí)關(guān)閉個(gè)位數(shù)顯示,我們把這個(gè)過程稱為掃描。要使顯示器的個(gè)位數(shù)和十位數(shù)能夠獨(dú)立的顯示各自的數(shù)字,就必須單獨(dú)的控制它們的位引腳,在對顯示器的個(gè)位數(shù)和十位數(shù)進(jìn)行掃描時(shí),由于單片機(jī)的掃描速度較快,我們無法看清楚顯示器顯示的數(shù)字,因此,每掃描1位顯示器時(shí),必須延時(shí)大約1000μs的時(shí)間。反復(fù)執(zhí)行掃描操作,即可使兩位數(shù)碼管同時(shí)顯示不同的數(shù)字。設(shè)計(jì)程序流程圖所謂中斷,就是打斷正在進(jìn)行的工作,轉(zhuǎn)而去做另外一件事,然后回來繼續(xù)完成原來做的事情。如學(xué)生在家做作業(yè),此時(shí)聽到電話鈴聲響起,學(xué)生暫停做作業(yè)去接電話,接完電話后繼續(xù)做作業(yè),這個(gè)過程就是中斷以及中斷處理的過程。做作業(yè)斷點(diǎn)繼續(xù)做作業(yè)主要任務(wù)接電話與來電話的人交談執(zhí)行主程序斷點(diǎn)繼續(xù)執(zhí)行主程序主程序中斷服務(wù)程序執(zhí)行中斷服務(wù)程序中斷請求電話鈴響中斷響應(yīng)中斷返回中斷過程示意中斷系統(tǒng)(1)中斷在單片機(jī)執(zhí)行程序的過程中,由于突然發(fā)生某個(gè)事件,需要單片機(jī)暫時(shí)終止正在運(yùn)行的程序,轉(zhuǎn)移去及時(shí)處理該事件的問題,完成任務(wù)后,再返回到程序終止處(稱為:斷點(diǎn))繼續(xù)運(yùn)行程序。(2)中斷源能引起中斷的信號源,可分為外部中斷源和內(nèi)部中斷源。①外部中斷0(P3.2腳):輸入“低電平”或“脈沖下降沿”引起中斷(進(jìn)入中斷的地址號為0003H)。②外部中斷1(P3.3腳):輸入“低電平”或“脈沖下降沿”引起中斷(進(jìn)入中斷的地址號為0013H)。單片機(jī)中斷的幾個(gè)概念③定時(shí)/計(jì)數(shù)器T0(P3.4腳):內(nèi)部計(jì)數(shù)寄存器的值等于“0”引起中斷(進(jìn)入中斷的地址號為000BH)。④定時(shí)/計(jì)數(shù)器T1(P3.5腳),內(nèi)部計(jì)數(shù)寄存器的值等于“0”引起中斷(進(jìn)入中斷的地址號為001BH)。⑤串行通信口中斷(進(jìn)入中斷的地址號為0023H)?!艚邮諗?shù)據(jù)RXD(P3.0腳):寄存器SCON的RI位的值等于“1”引起中斷(模式0:每接收完成1組8位二進(jìn)制數(shù)中斷1次)。◆發(fā)送數(shù)據(jù)TXD(P3.1腳):寄存器SCON的TI位的值等于“1”引起中斷(模式0:每發(fā)送完成1組8位二進(jìn)制數(shù)中斷1次)。中斷源默認(rèn)級別入口地址外部中斷0最高0003H定時(shí)/計(jì)數(shù)器T0第2000BH外部中斷1第30013H定時(shí)/計(jì)數(shù)器T1第4001BH串行口中斷第50023H(3)中斷服務(wù)程序產(chǎn)生中斷時(shí),對所發(fā)生的事件進(jìn)行處理的程序。關(guān)中斷保護(hù)現(xiàn)場中斷服務(wù)關(guān)中斷恢復(fù)現(xiàn)場開中斷中斷返回開中斷斷點(diǎn)地址由堆棧彈入PC硬件自動(dòng)完成保護(hù)現(xiàn)場和恢復(fù)現(xiàn)場的過程中不允許中斷,以免現(xiàn)場遭到破壞。保護(hù)和恢復(fù)現(xiàn)場之后的開中斷是為了允許有更高級會(huì)的中斷打斷此中斷服務(wù)程序。中斷的完整過程中斷控制系統(tǒng)中斷控制是指單片機(jī)提供給程序員使用的控制中斷的手段或方法。由編程人員對特殊功能寄存器TCON、SCON、IE、IP進(jìn)行設(shè)定和管理,以便單片機(jī)實(shí)現(xiàn)人們需要的各種中斷控制功能。(1)中斷控制寄存器TCON的設(shè)置位數(shù)第7位第6位第5位第4位第3位第2位第1位第0位地址名TF1TR1TF0TR0IE1IT1IE0IT0地址號8FH8EH8DH8CH8BH8AH89H88HIE0:外部中斷0請求標(biāo)志位。IE1:外部中斷1請求標(biāo)志位。IT0:外部中斷第0號的觸發(fā)中斷信號選擇位,有兩種觸發(fā)中斷的信號。◆設(shè)置:IT0=0時(shí),單片機(jī)的P3.2腳出現(xiàn)低電平立即發(fā)生中斷;IT0=1時(shí),單片機(jī)的P3.2腳出現(xiàn)1個(gè)脈沖跳變信號(高變低的下降沿)立即發(fā)生中斷。IT1:外部中斷第1號的觸發(fā)中斷信號選擇位,有兩種觸發(fā)中斷的信號。位數(shù)第7位第6位第5位第4位第3位第2位第1位第0位地址名TF1TR1TF0TR0IE1IT1IE0IT0地址號8FH8EH8DH8CH8BH8AH89H88HTF0:使用T0定時(shí)器/計(jì)數(shù)器時(shí),寄存器發(fā)生溢出的標(biāo)志位(TF0=1表示寄存器已存滿數(shù)據(jù)發(fā)生溢出,同時(shí)提出中斷申請,執(zhí)行中斷服務(wù)程序。TF1:使用T1定時(shí)器/計(jì)數(shù)器時(shí),寄存器發(fā)生溢出的標(biāo)志位(TF1=1表示寄存器已存滿數(shù)據(jù)發(fā)生溢出,同時(shí)提出中斷申請,執(zhí)行中斷服務(wù)程序?!?6位寄存器的溢出值=65536(發(fā)生溢出)◆13位寄存器的溢出值=8192(發(fā)生溢出)◆8位寄存器的溢出值=256(發(fā)生溢出)TR0:T0定時(shí)器/計(jì)數(shù)器的啟動(dòng)或停止控制位◆TR0=1啟動(dòng)T0定時(shí)器/計(jì)數(shù)器工作;TR0=0停止T0定時(shí)器/計(jì)數(shù)器工作。TR1:T1定時(shí)器/計(jì)數(shù)器的啟動(dòng)或停止控制位◆TR1=1啟動(dòng)定時(shí)器/計(jì)數(shù)器T0工作;TR1=0停止T1定時(shí)器/計(jì)數(shù)器工作。①PS:串行口中斷口優(yōu)先級控制位,PS=1,串行口中斷聲明為高優(yōu)先級中斷,PS=0,串行口定義為低優(yōu)先級中斷。②PT1:定時(shí)器1優(yōu)先級控制位。PT1=1,聲明定時(shí)器1為高優(yōu)先級中斷,PT1=0定義定時(shí)器1為低優(yōu)先級中斷。③PX1:外中斷1優(yōu)先級控制位。PT1=1,聲明外部中斷1為高優(yōu)先級中斷,PX1=0定義外部中斷1為低優(yōu)先級中斷。④PT0:定時(shí)器0優(yōu)先級控制位。PT1=1,聲明定時(shí)器0為高優(yōu)先級中斷,PT1=0定義定時(shí)器0為低優(yōu)先級中斷。⑤PX0:外中斷0優(yōu)先級控制位。PT1=1,聲明外部中斷0為高優(yōu)先級中斷,PX1=0定義外部中斷0為低優(yōu)先級中斷。位數(shù)第7位第6位第5位第4位第3位第2位第1位第0位地址名
PSPT1PX1PT0PX0地址號
BCHBBHBAHB9HB8H(3)中斷源優(yōu)先級控制寄存器IP的設(shè)置51單片機(jī)中斷系統(tǒng)結(jié)構(gòu)EA在實(shí)時(shí)控制系統(tǒng)中,經(jīng)常需要有實(shí)時(shí)時(shí)鐘以實(shí)現(xiàn)定時(shí)、延時(shí)控制,也常需要有計(jì)數(shù)功能以實(shí)現(xiàn)對外界脈沖(事件)進(jìn)行計(jì)數(shù)。定時(shí)/計(jì)數(shù)器是面向控制領(lǐng)域的單片機(jī)系統(tǒng)的一項(xiàng)極為重要的功能。AT89C51單片機(jī)有兩個(gè)16位的定時(shí)器/計(jì)數(shù)器T0和T1,它們的內(nèi)部結(jié)構(gòu)是完全相同的,T0和T1分別使用兩個(gè)獨(dú)立的16位寄存器進(jìn)行計(jì)數(shù)。(1)T0的16位寄存器:由TH0(高8位)和TL0(低8位)兩個(gè)8位的特殊功能寄存器組成。(2)T1的16位寄存器:由TH1(高8位)和TL1(低8位)兩個(gè)8位的特殊功能寄存器組成。(一)定時(shí)器/計(jì)數(shù)器的結(jié)構(gòu)二、定時(shí)器/計(jì)數(shù)器(1)設(shè)置工作方式寄存器TMOD位數(shù)第7位第6位第5位第4位第3位第2位第1位第0位地址名GATEC/TM1M0GATEC/TM1M0
用高4位來設(shè)置T1的工作方式用低4位來設(shè)置T0的工作方式①GATE:設(shè)置定時(shí)/計(jì)數(shù)器是直接啟動(dòng)還是間接啟動(dòng)。◆設(shè)置GATE=0直接啟動(dòng)定時(shí)器。TR1=1啟動(dòng)T1定時(shí)器;TR1=0停止T1定時(shí)器TR0=1啟動(dòng)T0定時(shí)器;TR0=0停止T0定時(shí)器◆設(shè)置GATE=1通過外部中斷源(P3.2腳)或(P3.3腳)為高電平時(shí),間接啟動(dòng)定時(shí)器(只有當(dāng)INT0=1和TR0=1才能啟動(dòng)T0定時(shí)器、只有當(dāng)INT1=1和TR1=1才能啟動(dòng)T1定時(shí)器)。②C/T:設(shè)置選擇使用定時(shí)器還是計(jì)數(shù)器?!粼O(shè)置C/T=0選擇使用定時(shí)器◆設(shè)置C/T=1選擇使用計(jì)數(shù)器(二)定時(shí)器/計(jì)數(shù)器的參數(shù)設(shè)置③M1、M0:選擇工作方式。定時(shí)器/計(jì)數(shù)器有4種工作方式,分別稱為:方式0、方式1、方式2、方式3。M1M0工作方式定時(shí)器/計(jì)數(shù)器功能說明位數(shù)值00方式0使用13位寄存器213=819201方式1使用16位寄存器216=6553610方式2使用8位寄存器28=25611方式3T0的16位寄存器分成兩個(gè)獨(dú)立的8位寄存器使用28=256方式0和方式1的區(qū)別僅在于計(jì)數(shù)器的位數(shù)不同,方式0為13位,而方式1則為16位。工作方式0和工作方式1的最大特點(diǎn)就是計(jì)數(shù)溢出后,計(jì)數(shù)器為全0,因而循環(huán)定時(shí)或循環(huán)計(jì)數(shù)應(yīng)用時(shí)就存在反復(fù)設(shè)置初值的問題,這給程序設(shè)計(jì)帶來許多不便,同時(shí)也會(huì)影響計(jì)時(shí)精度。工作方式2就針對這個(gè)問題而設(shè)置,它具有自動(dòng)重裝載功能,即自動(dòng)加載計(jì)數(shù)初值。在這種工作方式中,16位計(jì)數(shù)器分為兩部分,即以TL0為計(jì)數(shù)器,以TH0作為預(yù)置寄存器,初始化時(shí)把計(jì)數(shù)初值分別加載至TL0和TH0中,當(dāng)計(jì)數(shù)溢出時(shí),不再象方式0和方式1那樣需要“人工干預(yù)”,由軟件重新賦值,而是由預(yù)置寄存器TH以硬件方法自動(dòng)給計(jì)數(shù)器TL0重新加載。在工作方式3模式下,定時(shí)/計(jì)數(shù)器0被拆成兩個(gè)獨(dú)立的8位計(jì)數(shù)器TL0和TH0。其中TL0既可以作計(jì)數(shù)器使用,也可以作為定時(shí)器使用。TH0只能作為簡單的定時(shí)器使用。由于TL0既能作定時(shí)器也能作計(jì)數(shù)器使用,而TH0只能作定時(shí)器使用而不能作計(jì)數(shù)器使用,因此在方式3模式下,定時(shí)/計(jì)數(shù)器0可以構(gòu)成二個(gè)定時(shí)器或者一個(gè)定時(shí)器和一個(gè)計(jì)數(shù)器。(三)定時(shí)器/計(jì)數(shù)器初始值的計(jì)算方法(1)定時(shí)功能的初值計(jì)算選擇定時(shí)功能時(shí),由內(nèi)部供給計(jì)數(shù)脈沖,是對機(jī)器周期進(jìn)行計(jì)數(shù)。假設(shè)用t表示定時(shí)時(shí)間,對應(yīng)的初始值用χ表示,所用計(jì)數(shù)器位數(shù)為n,設(shè)系統(tǒng)時(shí)鐘頻率為fosc,則它們滿足下列關(guān)系式:(2n-χ)×12/fosc=tχ=2n-fosc/12×t(2)計(jì)數(shù)功能的初值計(jì)算選擇計(jì)數(shù)功能時(shí),計(jì)數(shù)脈沖由外部T0或T1端引入,是對外部(事件)脈沖進(jìn)行計(jì)數(shù),因此計(jì)數(shù)值根據(jù)要求確定。N是所用計(jì)數(shù)器的位數(shù),它由TMOD中M1和M0兩位設(shè)置確定。其計(jì)數(shù)初值:χ=2n-計(jì)數(shù)值(四)定時(shí)器/計(jì)數(shù)器的賦值方法(1)工作方式0的賦值方法指令:MOV TH0,#(8192-計(jì)數(shù)值)/32指令:MOV TL0,#(8192-計(jì)數(shù)值)MOD32(2)工作方式1的賦值方法指令:MOV TH0,#(65536-需要定時(shí)的時(shí)間)/256指令:MOV TL0,#(65536-需要定時(shí)的時(shí)間)/256(3)工作方式2的賦值方法指令:MOV TH0,#(256-需要定時(shí)的時(shí)間)指令:MOV TL0,#(256-需要定時(shí)的時(shí)間)(4)工作方式3的賦值方法只有定時(shí)器/計(jì)數(shù)器T0可以工作在方式3,寄存器TH0只能用來作定時(shí)器(不能作計(jì)數(shù)器)因此,T0可以構(gòu)成兩個(gè)定時(shí)器或者一個(gè)定時(shí)器和一個(gè)計(jì)數(shù)器。賦值方法與工作在方式2相同,溢出值=256。匯編語言指令功能(一)堆棧寄存器在程序執(zhí)行過程中,如果程序發(fā)生中斷,必須使用堆棧寄存器來保護(hù)正在處理的數(shù)據(jù),然后,才能去執(zhí)行中斷后的功能程序。(1)設(shè)置堆棧寄存器如果需要使用16個(gè)堆棧寄存器,可以在初始化程序中把堆棧寄存器起始地址號設(shè)置為6FH(70H~7FH共16個(gè)地址)。堆棧寄存器起始地址號設(shè)置指令: MOVSP,#6FH(2)在進(jìn)入中斷服務(wù)程序后,首先使用壓棧指令來保護(hù)正在處理的數(shù)據(jù),然后,才能執(zhí)行中斷功能程序。在退出中斷服務(wù)程序前,使用彈棧指令來恢復(fù)數(shù)據(jù),這個(gè)過程稱為:保護(hù)現(xiàn)場和恢復(fù)現(xiàn)場。數(shù)據(jù)壓棧指令:PUSHdirect;direct可以是累加器A,PSW等。數(shù)據(jù)彈棧指令:POP direct中斷子程序返回指令:RETI(3)壓棧和彈棧必須按照“先入后出”的原則。數(shù)據(jù)壓棧和彈棧指令必須成對出現(xiàn)。位操作指令(1)位控制轉(zhuǎn)移指令①寄存器位地址bit里面的數(shù)據(jù)等于“1”時(shí),按照指令中給定的目的地址號轉(zhuǎn)移;位地址bit里面的數(shù)據(jù)等于“0”時(shí),順序往下執(zhí)行指令。指令書寫格式:JBbit,rel(rel需要轉(zhuǎn)移到達(dá)的目的地址號)指令執(zhí)行時(shí)間:2μs(12MHz時(shí)鐘)例2 JBP1.0,A1B1;判斷P1口第0位的數(shù)據(jù)是否等“1”,等于“1”時(shí),按照給定的目的地址號A1B1轉(zhuǎn)移,等于“0”時(shí),順序往下執(zhí)行指令。②寄存器的位地址bit里面的數(shù)據(jù)等于“0”時(shí),按照指令中給定的目的地址號轉(zhuǎn)移;位地址bit里面的數(shù)據(jù)等于“1”時(shí),順序往下執(zhí)行指令。指令書寫格式:JNBbit,rel(rel需要轉(zhuǎn)移到達(dá)的目的地址號)指令執(zhí)行時(shí)間:2μs(12MHz時(shí)鐘)例3 JNBP1.0,A1B1;判斷P1口第0位的數(shù)據(jù)是否等于“0”,等于“0”時(shí),按照給定的目的地址號A1B1轉(zhuǎn)移,等于“1”時(shí),順序往下執(zhí)行指令。例4獨(dú)立式按鍵掃描子程序:E1A1: JB P1.0,E1A2 ;判斷是否"0號鍵" MOV 30H,#0 ;按鍵緩沖寄存器存入“0” JNB P1.0,$ ;判斷是否放開按鍵
LCALL A1B0 ;調(diào)用顯示子程序E1A2: JB P1.1,E1A3 ;判斷是否"1號鍵" MOV 30H,#1 ;按鍵緩沖寄存器存入“1” JNB P1.1,$ ;判斷是否放開按鍵
LCALL A1B0 ;調(diào)用顯示子程序E1A3: RET(2)位置位指令①寄存器位地址的數(shù)據(jù)置“1”指令書寫格式:SETB bit(bit是位地址號)指令執(zhí)行時(shí)間:1μs(12MHz時(shí)鐘)例5 SETB 00H;位尋址20H寄存器的第0位數(shù)據(jù)置“1”,如果原來的數(shù)據(jù)=0,執(zhí)行指令后數(shù)據(jù)=1。②寄存器位地址的數(shù)據(jù)清“0”指令書寫格式:CLR bit(bit是位地址號)指令執(zhí)行時(shí)間:1μs(12MHz時(shí)鐘)例6 CLR P2.0;P2口的P2.0位的數(shù)據(jù)數(shù)據(jù)清“0”,如果原來的數(shù)據(jù)=1,執(zhí)行指令后數(shù)據(jù)=0。有條件的控制轉(zhuǎn)移指令(1)累加器A里面的數(shù)據(jù)與立即數(shù)據(jù)進(jìn)行比較,數(shù)據(jù)不相等時(shí)按照給定的目的地址號轉(zhuǎn)移;數(shù)據(jù)相等時(shí)繼續(xù)往下執(zhí)行指令。指令書寫格式:CJNEA,#data,rel(rel━是需要轉(zhuǎn)移到達(dá)的目的地號)指令執(zhí)行時(shí)間:2μs(12MHz時(shí)鐘)◆A里面的數(shù)據(jù)≠#data發(fā)生轉(zhuǎn)移◆A里面的數(shù)據(jù)=#data順序執(zhí)行程序例7 MOV A,#0 ;先把數(shù)據(jù)“0”存入累加器A A1A1: INC A ;累加器A里面的數(shù)據(jù)加1 CJNE A,#9,A1A1;累加器A里面的數(shù)據(jù)與數(shù)據(jù)“9”進(jìn)行比較,當(dāng)兩個(gè)數(shù)據(jù)不相等時(shí),指令會(huì)按照給定的目的地址號A1A1轉(zhuǎn)移;當(dāng)兩個(gè)數(shù)據(jù)相等時(shí),程序繼續(xù)往下執(zhí)行指令。(2)@Ri間接尋址寄存器所指定的direct寄存器里面的數(shù)據(jù)與立即數(shù)據(jù)進(jìn)行比較,數(shù)據(jù)不相等時(shí)按照給定的目的地址號轉(zhuǎn)移,數(shù)據(jù)相等時(shí)繼續(xù)往下執(zhí)行其它指令。指令書寫格式:CJNE@Ri,#data,rel(rel━需要轉(zhuǎn)移到達(dá)的目的地號)指令執(zhí)行時(shí)間:2μs(12MHz時(shí)鐘)◆@Ri指定的direct寄存器里面的數(shù)據(jù)≠#data發(fā)生轉(zhuǎn)移◆@Ri指定的direct寄存器里面的數(shù)據(jù)=#data順序執(zhí)行程序例8 MOV 30H,#0 ;先把數(shù)據(jù)“0”存入30H寄存器 A1A1: INC 30H ;30H寄存器里面的數(shù)據(jù)加1 MOV R1,#30H ;指定30H寄存器 MOV @R1,#9,A1A1;@R1指定的30H寄存器里面的數(shù)據(jù)與數(shù)據(jù)“9”進(jìn)行比較,當(dāng)兩個(gè)數(shù)據(jù)不相等時(shí),按照給定的目的地址號A1A1轉(zhuǎn)移;當(dāng)兩個(gè)數(shù)據(jù)相等時(shí),程序繼續(xù)往下執(zhí)行指令。(四)算術(shù)運(yùn)算指令(1)累加器A里面的數(shù)據(jù)除以B寄存器里面的數(shù)據(jù)指令書寫格式:DIV AB指令執(zhí)行時(shí)間:4μs(12MHz時(shí)鐘)◆A←(A)÷(B)商數(shù)存入累加器A◆B←(A)÷(B)余數(shù)存入B寄存器(2)累加器A里面的數(shù)據(jù)“乘以”B寄存器里面的數(shù)據(jù)指令書寫格式:MUL AB指令執(zhí)行時(shí)間:8μs(6MHz時(shí)鐘)注:指令規(guī)定,只有累加器A數(shù)據(jù)和B寄存器才能進(jìn)行乘法運(yùn)算,因此,在做乘法運(yùn)算時(shí),必須把需要運(yùn)算的數(shù)據(jù)存入累加器A和B寄存器才能進(jìn)行乘法運(yùn)算。運(yùn)算結(jié)果為16位二進(jìn)制數(shù)存回累加器A和B寄存器:◆(A)←(A)×(B)乘積的低8位二進(jìn)制數(shù)存入累加器A◆(B)←(A)×(B)乘積的高8
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年食堂承包經(jīng)營員工勞動(dòng)權(quán)益保障協(xié)議3篇
- 2025年食堂蔬菜糧油智能化管理系統(tǒng)合作協(xié)議3篇
- 2025年度個(gè)人房產(chǎn)托管服務(wù)合同范本4篇
- 2025版高科技園區(qū)門衛(wèi)值班人員崗位聘用合同協(xié)議4篇
- 2025年度個(gè)人虛擬現(xiàn)實(shí)體驗(yàn)服務(wù)合同范本4篇
- 物業(yè)服務(wù)公司2025年度合同管理制度解讀6篇
- 個(gè)體損害和解合同格式(2024年版)版B版
- 2025年度生態(tài)園林蟲害生物防治技術(shù)合同范本3篇
- 2025年度數(shù)碼產(chǎn)品代銷合同范本
- 2025年食堂食堂食材采購及加工配送協(xié)議3篇
- 割接方案的要點(diǎn)、難點(diǎn)及采取的相應(yīng)措施
- 2025年副護(hù)士長競聘演講稿(3篇)
- 2024年08月北京中信銀行北京分行社會(huì)招考(826)筆試歷年參考題庫附帶答案詳解
- 原發(fā)性腎病綜合征護(hù)理
- 2024年高考英語復(fù)習(xí)(新高考專用)完形填空之詞匯復(fù)現(xiàn)
- 【京東物流配送模式探析及發(fā)展對策探究開題報(bào)告文獻(xiàn)綜述4100字】
- 施工現(xiàn)場工程令
- 藥物經(jīng)濟(jì)學(xué)評價(jià)模型構(gòu)建
- Daniel-Defoe-Robinson-Crusoe-笛福和魯濱遜漂流記全英文PPT
- 第一章威爾遜公共行政管理理論
- 外科護(hù)理(高職護(hù)理專業(yè))PPT完整全套教學(xué)課件
評論
0/150
提交評論