




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
項(xiàng)目一、認(rèn)識(shí)單片機(jī)
項(xiàng)目一、認(rèn)識(shí)單片機(jī)----任務(wù)1.單片機(jī)最小系統(tǒng)
一、微型計(jì)算機(jī)系統(tǒng)的組成由硬件系統(tǒng)和軟件系統(tǒng)兩大部分成二、微型計(jì)算機(jī)的概念1、微處理器(CPU):(1)運(yùn)算器(ALU):數(shù)據(jù)的算術(shù)和邏輯運(yùn)算(2)控制器(CU):使微型計(jì)算機(jī)各組成部分按命令以一定的節(jié)拍進(jìn)行工作。2、微型計(jì)算機(jī)組成:微處理器(運(yùn)算器、控制器)、存儲(chǔ)器、輸入設(shè)備、輸出設(shè)備。
圖1-1微型計(jì)算機(jī)組成
3、微型計(jì)算機(jī)系統(tǒng):
微型計(jì)算機(jī)加上系統(tǒng)軟件和必要的外設(shè)就構(gòu)成了微型計(jì)算機(jī)系統(tǒng)。CPU、微型計(jì)算機(jī)、微型計(jì)算機(jī)系統(tǒng)三者關(guān)系:
輸入輸出接口內(nèi)部存儲(chǔ)器系統(tǒng)軟件外設(shè)CPU微型計(jì)算機(jī)微型計(jì)算機(jī)系統(tǒng)4、單片微型計(jì)算機(jī)(SCM)它將微處理器(運(yùn)算器、控制器)、存儲(chǔ)器、I/O(Input/Output)接口和中斷系統(tǒng)集成在同一塊芯片上,具有完整功能的微型計(jì)算機(jī),這塊芯片就是其硬件。三、單片機(jī)硬件組成1、微處理器
2、存儲(chǔ)器(1)根據(jù)存儲(chǔ)器與微處理的關(guān)系分:內(nèi)部存儲(chǔ)器——用來存儲(chǔ)當(dāng)前要運(yùn)行的程序和運(yùn)算數(shù)據(jù),容量雖小,存取速度較快。外部存儲(chǔ)器——用來存放大量的當(dāng)前暫時(shí)不直接參與運(yùn)行的程序和運(yùn)算的數(shù)據(jù),在需要時(shí)與內(nèi)部存儲(chǔ)器進(jìn)行信息的成批傳送、容量大,但存取速度較慢。(2)根據(jù)存儲(chǔ)器的讀寫功能分:隨機(jī)存儲(chǔ)器(RAM)—可以隨時(shí)寫入或讀出信息。只讀存儲(chǔ)器(ROM)—通過特定的方式寫入,寫入的信息只能讀出而不能隨意更改。3、輸入輸出接口:主要功能:實(shí)現(xiàn)外設(shè)與微機(jī)的數(shù)據(jù)傳輸、電平轉(zhuǎn)換。4、三總線:(1)數(shù)據(jù)總線(DB)—用來實(shí)現(xiàn)CPU、存儲(chǔ)器、I/O口之間的數(shù)據(jù)雙向傳送,數(shù)據(jù)為8位。(2)地址總線(AB)—由CPU發(fā)出的存儲(chǔ)器或I/O的地址,以選擇相應(yīng)的存儲(chǔ)單元和I/O接口。(3)控制總線(CB)—它給出微機(jī)中各個(gè)部分協(xié)調(diào)工作的定時(shí)信號(hào)和控制信號(hào),保證正確執(zhí)行程序指令時(shí)所需要的各種操作不至于發(fā)生沖突??刂瓶偩€的寬度(根數(shù))因機(jī)型而異。
圖1-3三總線與CPU、存儲(chǔ)器、I/O口之間之間連接關(guān)系
四、單片機(jī)最小系統(tǒng)(一)單片機(jī)應(yīng)用系統(tǒng)及組成單片機(jī)應(yīng)用系統(tǒng)是以單片機(jī)為核心,配以輸入、輸出、顯示、控制等外圍電路和軟件,能實(shí)現(xiàn)一種或多種功能的實(shí)用系統(tǒng)。
(二)單片機(jī)的引腳介紹11、電源連接:?jiǎn)纹瑱C(jī)使用的是+5V電源,其中電源正極接單片機(jī)40引腳(VCC),電源負(fù)極接20引腳(GND)。2、振蒎電路(XTAL1~XTAL2)連接:第19~18引腳。C1和C2取20PF左右3、控制總線:RST:第9引腳。—復(fù)位信號(hào)EA/Vpp:第31腳,外部尋址使能/編程電壓。EA為高電平,從內(nèi)部程序寄存器開始訪問;EA為低電平時(shí),則跳過內(nèi)部程序存儲(chǔ)器,從外部程序存儲(chǔ)器開始訪問ALE/PROG:第30引腳?!刂锋i存允許信號(hào)第一功能:訪問外部存儲(chǔ)器時(shí):ALE用來鎖存擴(kuò)展地址的低8位(P0口)的地址信號(hào)。當(dāng)不訪問外部存儲(chǔ)器時(shí):ALE將輸出1/6的振蕩頻率,可用來對(duì)外部提供定時(shí)和時(shí)鐘信號(hào)。第二功能:?jiǎn)纹瑱C(jī)編程時(shí),此腳接編程脈沖。PSEN:第29引腳?!獠砍绦虼鎯?chǔ)器讀選通信號(hào)。當(dāng)訪問外部存儲(chǔ)器時(shí),此腳將定時(shí)輸出負(fù)脈沖作為讀取外部存儲(chǔ)器的選題信號(hào)。4、并行I/O口(1)P0口:第32~39引腳。1)作為I/O口。2)作為單片機(jī)8位準(zhǔn)雙向數(shù)據(jù)總線。作為低8位地址總線,低8位地址的選通由ALE控制線決定。(3)P2口:第21~28引腳。1)作為I/O口。2)是當(dāng)系統(tǒng)外擴(kuò)存儲(chǔ)器時(shí),P2口輸出高8位的地址A7~A15,與P0口第二功能輸出的低8位地址相配合。(4)P3口:第10~17引腳。1)作為I/O口。2)作控制和特殊功能口使用。見表1-1P3口各位的第二功能表1-1P3口各位的第二功能(三)MCS-51單片機(jī)的內(nèi)存結(jié)構(gòu)
第2組通用寄存器區(qū)第3組通用寄存器區(qū)第1組通用寄存器區(qū)第0組通用寄存器區(qū)位尋址區(qū)(為地址00H~7FH)用戶RAM區(qū)R0、R1、R2、R3、R4、R5、R6、R71FH/20H17H/18H0FH/10H07H/08H00H數(shù)據(jù)緩沖、堆棧、工作單元既可位尋址,又可字節(jié)尋找1)
通用寄存器區(qū)。四組通用寄存器,每組8個(gè)寄存器單元,每組都以R0~R7為寄存器單元編號(hào)。
2)位尋址區(qū)。既可位尋址,又可字節(jié)尋找。3)用戶RAM。其單元地址30H~7FH,一般常將堆棧數(shù)據(jù)放在用戶RAM區(qū)。(2)內(nèi)部數(shù)據(jù)存儲(chǔ)器高128單元8051共有22個(gè)特殊功能寄存器
B、ACC、PSW、IP、P0、P1、P2、P3、IE、SUBF、SCON、TH1、TL1、TH0、TL0、TMOD、TCON、PCON、DPH、DPL、SP、(PC)1)程序計(jì)數(shù)器PCPC是一個(gè)16位的計(jì)數(shù)器,PC沒有地址,所以是不可尋址的。2)累加器ACC8位寄存器用的最多的專用寄存器:既可以存放操作數(shù),也可以用來存放運(yùn)算的中間結(jié)果。3)B寄存器8位寄存器主要用于乘除運(yùn)算,乘法運(yùn)算時(shí),B是乘數(shù)。除法運(yùn)算時(shí),B是除數(shù),余數(shù)放于B中。4)程序狀態(tài)字PSW程序狀態(tài)字是一個(gè)8位寄存器,用于寄存程序運(yùn)行的狀態(tài)信息。
表2-5狀態(tài)寄存器PSW各位的意義位序PSW.7PSW.6PSW.5PSW.4PSW.3PSW.2PSW.1PSW.0位標(biāo)志CYACF0RS1RS0OV∕PCY(PSW.7)---進(jìn)位標(biāo)志位CY(PSW.6)---輔助進(jìn)位標(biāo)志位CY(PSW.5)---用戶標(biāo)志位OV(PSW.2)---溢出標(biāo)志位P(PSW.0)---奇偶標(biāo)志位奇數(shù)個(gè)“1”時(shí),P=1,偶數(shù)個(gè)“1”時(shí),P=0
5)數(shù)據(jù)指針(DPTR)按16位寄存器使用:DPTR也可以按兩個(gè)8位寄存器分開使用:DPH和DPL。
寄存器位地址/位定義地址BF7HF6HF5HF4HF3HF2HF1HF0HF0H
ACCE7HE6HE5HE4HE3HE2HE1HE0HE0H
PSWD7HD6HD5HD4HD3HD2HD1HD0HD0HCYACF0RS1RS0OV/PIPBFHBEHBDHBCHBBHBAHB9HB8HB8H
P3B7HB6HB5HB4HB3HB2HB1HB0HB0HP3.7P3.6P3.5P3.4P3.3P3.2P3.1P3.0IE
A8H
P2A7HA6HA5HA4HA3HA2HA1HA0HA0HP2.7P2.6P2.5P2.4P2.3P2.2P2.1P2.0SUBF
99HSCON
98H90H97H96H95H94H93H92H91H90H90HP1.7P1.6P1.5P1.4P1.3P1.2P1.1P1.0TH1
8DHTH0
8CHTL1
8BHTL0
8AHTMODGATEC/TM1M0GATEC/TM1M089HTCON8FH8EH8DH8CH8BH8AH89H88H88HTF1TR1TF0TR0IE1IT1IE0IT0PCONSMOD///GF1GF0PDIDL87HDPH
83HDPL
82HSP
81HP087H86H85H84H83H82H81H80H80HP0.7P0.6P0.5P0.4P0.3P0.2P0.1P0.0項(xiàng)目一、認(rèn)識(shí)單片機(jī)----任務(wù)2.單片機(jī)開發(fā)軟件
KeilC
硬件電路連接根據(jù)要求擬定總體設(shè)計(jì)方案(包括任務(wù)書、劃分硬件和軟件的任務(wù)分配等)硬件電路設(shè)計(jì)繪制程序總體框圖、模塊流程圖編寫主程序和各模塊程序使用KeilC軟件調(diào)試主程序和各模塊程序聯(lián)機(jī)在線仿真調(diào)試,修改硬件電路和程序使用PROTEUS軟件,執(zhí)行系統(tǒng)模擬調(diào)試,修改硬件電路和程序連接電腦和編程器,運(yùn)行編程器RF1800軟件,執(zhí)行程序燒寫(固化)脫機(jī),現(xiàn)場(chǎng)運(yùn)行,完成單片機(jī)開發(fā)硬件電路調(diào)試和修改一一、啟動(dòng)KeilμVision21、雙擊,KeilμVision2
2、新建一個(gè)項(xiàng)目文件
二、建立一個(gè)匯編程序文件
但如果是采用的C語言進(jìn)行編程,則后綴名為C,然后單擊保存3、添加文件到當(dāng)前項(xiàng)目
三、編譯文件
圖1-18編譯文件
圖1-19編譯成功信息
生成HEX文件圖1-20目標(biāo)選項(xiàng)工具欄
圖1-21目標(biāo)選項(xiàng)對(duì)話框
圖1-22匯編文件生成HEX文件
四、仿真調(diào)試1、進(jìn)入仿真環(huán)境2、熟悉存儲(chǔ)器結(jié)構(gòu)
(1)內(nèi)部數(shù)據(jù)存儲(chǔ)器圖1-26存儲(chǔ)器窗口圖1-27存儲(chǔ)器內(nèi)部數(shù)據(jù)存儲(chǔ)器空間各單元中的內(nèi)容(2)外部數(shù)據(jù)存儲(chǔ)器圖1-28外部數(shù)據(jù)存儲(chǔ)器區(qū)空間各單元中的內(nèi)容(3)程序存儲(chǔ)器區(qū)
圖1-29程序存儲(chǔ)器空間各單元中的內(nèi)容
(4)工作寄存器和專用寄存器區(qū)
圖1-30工作寄存器和專用寄存器區(qū)
(5)并行輸入/輸出口
圖1-31并行輸入/輸出接口顯示
3、檢查存儲(chǔ)器狀態(tài)
(1)單步運(yùn)行單擊單步運(yùn)行按鈕,或者單擊“Debug”下拉菜單中的“Step”。單步運(yùn)行中兩種方式和的區(qū)別:前者單步運(yùn)行進(jìn)入子程序內(nèi)部后者在調(diào)用子程序時(shí),把子程序當(dāng)成一條指令運(yùn)行,它們?cè)谡{(diào)試時(shí)不碰到子程序時(shí)是一樣的。(2)全速運(yùn)行
全速運(yùn)行可點(diǎn)擊工具欄中的圖標(biāo),如圖1-33所示,點(diǎn)擊全速運(yùn)行意味著程序連續(xù)運(yùn)行而不被打斷。圖1-33全速運(yùn)行(3)斷點(diǎn)設(shè)置
方法是在這指令前雙擊鼠標(biāo)左鍵,此時(shí)在該指令前出現(xiàn)紅色的方塊,此時(shí)全速運(yùn)行程序的話,程序則會(huì)在紅色方塊時(shí)停下,如要取消斷點(diǎn)可在同樣的位置雙擊鼠標(biāo)左鍵。如圖1-33所示。圖1-33斷點(diǎn)設(shè)置(4)復(fù)位設(shè)置
有時(shí)程序經(jīng)修改,需要從頭運(yùn)行,可點(diǎn)擊,目的是讓程序從頭開始運(yùn)行,PC指針從0開始。
五、統(tǒng)調(diào)并將程序燒錄至單片機(jī)芯片中(1)將由KeilC調(diào)試生成的*.hex/文件,下載到用Proteus軟件繪制的硬件仿真圖的CPU后臺(tái),進(jìn)行軟硬件的綜合仿真調(diào)試,期間不斷修改軟件(也有些情況需要修改一下硬件),最后實(shí)現(xiàn)調(diào)試成功。
(2)調(diào)試成功后,將由KeilC調(diào)試生成的*.hex/文件燒錄至單片機(jī)芯片,采用RF1800軟件進(jìn)行程序燒錄,具體燒錄方法參見附錄3中的RF系列編程器簡(jiǎn)介。項(xiàng)目一、認(rèn)識(shí)單片機(jī)----任務(wù)3.單片機(jī)仿真軟件Proteus
一、雙擊運(yùn)行桌面Proteus仿真軟件
圖1-35Proteus界面各工具欄(一)模型選擇工具欄(ModeSelectorToolbar):
1、主要模型(MainModes):(1)選擇元件(components)(默認(rèn)選擇的)(2)放置連接點(diǎn)(3)放置標(biāo)簽(用總線時(shí)會(huì)用到)(4)放置文本(5)用于繪制總線(6)用于放置子電路(7)用于即時(shí)編輯元件參數(shù)(先單擊該圖標(biāo)再單擊要修改的元件)
從左邊開始2、配件(Gadgets):(1)終端接口(terminals):有VCC、地、輸出、輸入等接口(2)器件引腳:用于繪制各種引腳(3)仿真圖表(graph):用于各種分析,如NoiseAnalysis(4)錄音機(jī)(5)信號(hào)發(fā)生器(generators)(6)電壓探針:使用仿真圖表時(shí)要用到(7)電流探針:使用仿真圖表時(shí)要用到(8)虛擬儀表:有示波器等(二)仿真控制按鈕:(1)運(yùn)行(2)單步運(yùn)行(3)暫停(4)停止二、提取元器件
單擊左鍵放置元器件到原理圖中右擊對(duì)象選中變紅可移動(dòng)單擊左鍵選擇元件旋轉(zhuǎn)方向單擊單擊MicroprocessorICS元件庫(kù)選擇雙擊AT89C52元件圖確定后關(guān)閉已知元件名檢索三、放置元器件
單擊左鍵放置元器件到原理圖中右擊對(duì)象選中變紅可移動(dòng)單擊左鍵選擇元件旋轉(zhuǎn)方向四、繪制電路原理圖
(一)元器件連線(二)整體移動(dòng)部分電路,操作方法:先用右鍵拖選,再單擊中的,這時(shí)這部分電路會(huì)隨鼠標(biāo)移動(dòng),在目標(biāo)位置單擊左鍵,這部分電路將被放到該處。繪制的電原理圖如圖1-38所示。五、程序注入和調(diào)試
(一)程序注入(二)程序的調(diào)試項(xiàng)目二、單片機(jī)硬件及指令系統(tǒng)應(yīng)用項(xiàng)目二、單片機(jī)硬件及指令系統(tǒng)應(yīng)用—
任務(wù)1.二極管點(diǎn)亮能力目標(biāo)1.能用Proteus構(gòu)建單片機(jī)最小系統(tǒng)2.能運(yùn)用并行I/O接口3.能學(xué)會(huì)程序編寫的基本方法并用KeilC進(jìn)行調(diào)試4.能進(jìn)行燈亮控制電路綜合調(diào)試學(xué)習(xí)內(nèi)容1.了解指令的概念2.掌握尋找方式3.掌握傳送、位操作等指令4.了解并行I/O接口一、任務(wù)要求用單片機(jī)來實(shí)現(xiàn)對(duì)一個(gè)發(fā)光二極管實(shí)現(xiàn)點(diǎn)亮的功能。二、任務(wù)分析1.一個(gè)普通二極管被點(diǎn)亮的條件R1在此電路中的選擇范圍為330Ω~1KΩ
2.用單片機(jī)的I/O口的其中一位來控制二極管的點(diǎn)亮問題給P1.0送一低電平,則二極管就可以被點(diǎn)亮,送一高電平,則二極管就熄滅。三、學(xué)習(xí)知識(shí)
(一)了解指令的概念
1、指令的表示法:由操作碼和操作數(shù)兩大部分組成MCS-51指令格式:[標(biāo)號(hào):]操作助記符[操作數(shù)1][,操作數(shù)2][,操作數(shù)3]其中操作碼助記符一般由2~5個(gè)英文字母組成。51系列單片機(jī)共有111條指令。
2、指令的分類:按指令在存儲(chǔ)器中所占用的存儲(chǔ)單元分:?jiǎn)巫止?jié)NOP
雙字節(jié)ADDA,#05H
三字節(jié)LJMP8000H按指令功能分:數(shù)據(jù)傳送類MOVA,#04算術(shù)運(yùn)算類ADDA,#05H邏輯運(yùn)算類ANLA,#05H控制類LJMP8000H位操作類SETB90H3、指令中操作數(shù)的描述Rn——
工作寄存器R0~R7。Ri——
間接尋址寄存器R0、R1。Direct——
直接地址,包括內(nèi)部128BRAM單元地址、21個(gè)SFR地址。#data——8位常數(shù)。#data16——16位常數(shù)。addr16——16位目標(biāo)地址。addr11——11位目標(biāo)地址。rel——8位帶符號(hào)的偏移地址。DPTR——16位外部數(shù)據(jù)指針寄存器。bit——
可直接位尋址的位。A——
累加器。B——
寄存器B。C——
進(jìn)、借位標(biāo)志位,或位累加器。@——間接寄存器或基址寄存器的前綴。/——指定位求反。(x)——x中的內(nèi)容。((x))——x中的地址中的內(nèi)容?!纭?dāng)前指令存放的地址。AB——累加器A和B寄存器組成的寄存器對(duì),常出現(xiàn)在乘除法指令中。
(二)掌握尋找方式1、立即數(shù)尋址
MOVA,#40H
2、直接尋址
MOVA,40H
3、寄存器尋址
MOVA,R2
4、寄存器間接尋址
MOVA,@R0
(1)采用R0或R1作為寄存器間接尋址,可尋址的片內(nèi)片外的RAM的低256字節(jié)的存儲(chǔ)空間。(2)采用DPTR作寄存器間接尋址,可尋址的片外的數(shù)據(jù)存儲(chǔ)器的整個(gè)64KB的空間。
5、變址尋址操作數(shù)地址=變地址+基地址
如MOVCA,@A+DPTR
例:累加器A的內(nèi)容為20H,DPTR的值為2000H,程序存儲(chǔ)器2020H單元內(nèi)容為47H,則執(zhí)行該指令后累加器A的值為47H。
MOVCA,@A+DPTR6、相對(duì)尋址
如JC60H;設(shè)(PC)=2000H為基址,相對(duì)偏移量為60H;
則當(dāng)C=1時(shí),轉(zhuǎn)移的目的地址=2000H+2+60H
7、位尋址位尋址是指指令的操作數(shù)為8位二進(jìn)制數(shù)的某一位,指令中給出的是操作數(shù)的位地址??捎糜谖粚ぶ返膮^(qū)域是片內(nèi)RAM20H~2FH單元和部分特殊功能寄存器。(1)可直接使用位地址。(2)對(duì)特殊寄存器也可進(jìn)行位尋址。
(三)掌握傳送、位操作等指令1、片內(nèi)數(shù)據(jù)傳送指令單片機(jī)在邏輯上分為三個(gè)空間,分別是程序空間、片內(nèi)數(shù)據(jù)存儲(chǔ)器空間、片外數(shù)據(jù)存儲(chǔ)器空間。
片內(nèi)外程序存儲(chǔ)器ROMEPROMMOVC特殊功能寄存器片內(nèi)RAM128字節(jié)MOVPUSHPOPXCHXCHDMOVX片外數(shù)據(jù)存儲(chǔ)器RAM(1)以A為目標(biāo)地址的傳送指令指令指令代碼操作MOVA,Rn11101rrrA←(Rn)MOVA,direct11100101directA←(direct)MOVA,@Ri1110011iA←((Ri))MOVA,#data1101000A←data(2)以直接地址為目標(biāo)地址的傳送指令指令指令代碼操作MOVdirect,A11110101directdirect←(A)MOVdirect,Rn10001rrrdirectdirect←(Rn)MOVdirect,@Ri1000111directdirect←((Ri))MOVdirect,#data01110101directdatadirect←dataMOVdirect1,direct210000101direct2,direct1direct1←(direct2)(3)以Rn為目標(biāo)地址的傳送指令指令指令代碼操作MOVRn,A11111rrrRn←(A)MOVRn,#data01111rrrRn←dataMOVRn,direct10101rrrRn←(direct)(4)以間接地址為目標(biāo)地址的傳送指令指令指令代碼操作MOV@Ri,A1111011i((Ri))←(A)MOV@Ri,#data0111011i((Ri))←dataMOV@Ri,direct1010011i((Ri))←(direct)(5)十六位數(shù)傳送(以DPTR為目標(biāo)地址)傳送指令指令指令代碼操作MOVDPTR,#data1610010000dataH8dataL8(DPTR)←data162、累加器A與片外RAM之間傳送指令MOVX(4條)MOVXA,@DPTR;A←(DPTR)MOVX@DPTR,A;(DPTR)←AMOVXA,@Ri;A←(Ri)MOVX@Ri,A;(Ri)←A
1、3兩條指令完成了將外部數(shù)據(jù)讀入單片機(jī),此時(shí)單片機(jī)的RD為低電平2、4兩條指令完成了將單片機(jī)數(shù)據(jù)寫入外部設(shè)備,此時(shí)單片機(jī)的WR為低電平3、程序存儲(chǔ)器向累加器A傳送指令MOVC(2條)MOVCA,@A+PCMOVCA,@A+DPTR這種指令可用來實(shí)現(xiàn)查表程序,不同之處在于:第一條指令只能在256位中查表,第二條指令可在64KB范圍中查表。例:試編寫一程序,實(shí)現(xiàn)將片外RAM的0FAH單元中的內(nèi)容傳送到外RAM的04FFH單元中。分析:根據(jù)圖2-6可以看到,外部存儲(chǔ)單元之間是不能相互傳遞的,所以只有將外部數(shù)據(jù)通過傳向片內(nèi),再將片內(nèi)的數(shù)據(jù)傳向片外來進(jìn)行操作。具體在操作過程中要考慮如下事宜:①定義起始地址、目標(biāo)地址。②源操作數(shù)→A。③A→目標(biāo)操作方式。ORG1000HMOVR0,#0FAH;定義源操作數(shù)地址MOVDPTR,#04FFH;定義目標(biāo)地址MOVXA,@R0;源操作數(shù)先送至AMOVX@DPTR,A;A→目標(biāo)地址END4、位操作指令(1)位傳送指令(2條)MOVC,bitMOVbit,C
(2)位修正指令(6條)
CLRCCLRbitCPLCCPLbitSETBCSETBbit四、任務(wù)實(shí)施(一)用Proteus構(gòu)建單片機(jī)最小系統(tǒng)硬件
圖2-7單片機(jī)控制的二極管點(diǎn)亮電路(二)編寫程序并進(jìn)行調(diào)試在任務(wù)分析中得知,給P1.0賦個(gè)低電平,發(fā)光二極管就被點(diǎn)亮。程序如下:
ORG0000H;從程序空間地址0000H開始L:MOVP1,#0FEH;點(diǎn)亮二極管
SJMPL;在此處踏步等待
END
;結(jié)束(三)進(jìn)行二極管點(diǎn)亮電路仿真調(diào)試
圖2-8單片機(jī)控制的二極管點(diǎn)亮仿真電路
五、總結(jié)與提高完成了二極管點(diǎn)亮的任務(wù),大家考慮一下:1、能否用兩個(gè)按鈕來控制二極管的點(diǎn)亮與熄滅,一個(gè)按鈕定義為點(diǎn)亮功能,另一個(gè)按鈕定義為熄滅。2、能否采用一個(gè)按鈕來實(shí)現(xiàn)二極管的點(diǎn)亮與熄滅,按一下按鈕,二極管被點(diǎn)亮,再按一下后,熄滅,再按下點(diǎn)亮,再按下熄滅…。
能力目標(biāo)1.能編寫和用KeilC調(diào)試簡(jiǎn)單的延時(shí)子程序2.能用KeilC進(jìn)行單步,連續(xù)調(diào)試3.能進(jìn)行單燈閃爍電路綜合調(diào)試學(xué)習(xí)內(nèi)容1.學(xué)習(xí)轉(zhuǎn)移指令的運(yùn)用2.掌握子程序的編寫方法項(xiàng)目二、單片機(jī)硬件及指令系統(tǒng)應(yīng)用—任務(wù)2.單燈閃爍一、任務(wù)要求要求二極管亮滅閃爍的時(shí)間為200ms,控制端口仍然采用P1.0口。二、任務(wù)分析在任務(wù)一中我們已成功將二極管點(diǎn)亮,本任務(wù)與任務(wù)一所不同的是要由P1.0產(chǎn)生的時(shí)序信號(hào)如圖2-9所示。200
ms圖2-9單燈閃爍控制時(shí)序
三、學(xué)習(xí)知識(shí)(一)主程序和子程序的概念
所謂主程序就是根據(jù)設(shè)計(jì)者的要求完成主要功能的程序。子程序的概念:主程序中反復(fù)用到的一些重復(fù)的功能模塊程序,如果都放在主程序中,會(huì)讓主程序顯得冗長(zhǎng),所以常將這種需要頻繁使用的基本操作設(shè)計(jì)成相對(duì)獨(dú)立的程序段。1、子程序的調(diào)用與返回子程序的調(diào)用:短調(diào)用指令A(yù)CALLaddr11,長(zhǎng)調(diào)用指令LCALLaddr16,不同的是前者跳轉(zhuǎn)的范圍為2K后者跳轉(zhuǎn)的范圍為64K。返回指令:RET從子程序返回到主程序,RETI從中斷服務(wù)程序返回到主程序
2、子程序設(shè)計(jì)(1)每個(gè)子程序都有一個(gè)唯一的入口(唯一的名稱),并以標(biāo)號(hào)作為標(biāo)識(shí),以便主程序的正確調(diào)用,子程序通常以RET指令作為結(jié)束。(2)為了使子程序具有通用性,子程序的操作對(duì)象通常采用寄存器或寄存器間址等尋址方式。(3)為了使子程序不論存放在存儲(chǔ)器的任何區(qū)域都能被正確執(zhí)行,在子程序中如有轉(zhuǎn)移指令,應(yīng)使用相對(duì)轉(zhuǎn)移指令而不能用絕對(duì)轉(zhuǎn)移指令。(4)進(jìn)入子程序時(shí),應(yīng)對(duì)那些主程序中使用并在子程序中繼續(xù)需要使用的寄存器的內(nèi)容進(jìn)行保護(hù)(即保護(hù)主程序現(xiàn)場(chǎng)),在返回主程序時(shí)應(yīng)恢復(fù)它們的原來的狀態(tài)。子程序設(shè)計(jì)的基本步驟如下:(1)確定子程序的名稱(入口標(biāo)號(hào))。(2)確定子程序的入口參數(shù)及出口參數(shù)。(3)確定所使用的寄存器和存儲(chǔ)單元機(jī)器使用目的。(4)確定子程序的算法,編寫源程序。例、設(shè)內(nèi)部RAM20H、21H單元中有兩個(gè)數(shù)a和b,編程求c=a2+b2,并把c送入內(nèi)存單元22H中。該程序由兩部分組成:主程序和子程序。主程序通過累加器A傳送入口參數(shù)a和b,子程序用于求平方并將結(jié)果通過累加器A傳送給主程序,主程序再求兩平方和。
主程序ORG0100H
MOVA,20H;a→AACALLSQR;求a2MOVR0,A;a2→R0MOVA,21H;b→AACALLSQR;求b2ADDA,R0;a2+b2→AMOV22H,A;存入22H單元END
以下為子程序ORG1000H
SQR:ADDA,#01H;
MOVCA,@A+PC
RET
TAB:DB00H,01H,04H,09H,16H,
DB25H,36H,49H,64H,81H(二)循環(huán)轉(zhuǎn)移指令DJNZRn,rel;(Rn)←(Rn)—1若(Rn)≠0,則PC+2+rel,跳轉(zhuǎn)至目標(biāo)地址若(Rn)=0,PC+2
跳轉(zhuǎn)到本指令的下一條指令去執(zhí)行DJNZdirect,rel;(direct)←(direct)—1若(direct)≠0,則PC+2+rel,跳轉(zhuǎn)至目標(biāo)地址若(direct)=0,PC+2
跳轉(zhuǎn)到本指令的下一條指令去執(zhí)行DJNZ指令主要用來實(shí)現(xiàn)計(jì)數(shù)功能,一旦計(jì)數(shù)完畢,立即退出循環(huán)體,否則繼續(xù)在循環(huán)體中循環(huán)。例:將8031內(nèi)部的RAM40H~4FH單元置為#00H。解:
ORG0000h
MOVR0,#40H;置首址
MOVR2,#10H;置長(zhǎng)度LOOP:MOV@R0,A
INCR0;修改指針
DJNZR2,LOOP;判斷長(zhǎng)度
END
(三)延時(shí)子程序的設(shè)計(jì)1、機(jī)器周期當(dāng)振蕩脈沖頻率為12MHZ,一個(gè)機(jī)器周期為1us。當(dāng)振蕩脈沖頻率為6MHZ,一個(gè)機(jī)器周期為2us。2、指令周期執(zhí)行一條指令所需的時(shí)間叫指令周期,一般指令需1、2、4個(gè)機(jī)器周期。3、單循環(huán)程序運(yùn)用圖2-10延時(shí)子程序(5.135ms)
考慮在此單循環(huán)程序外再嵌套一層循環(huán),見下方第2~7部分,以內(nèi)部(3~6行)產(chǎn)生延時(shí)時(shí)間為5ms為重復(fù)操作對(duì)象,重復(fù)操作的次數(shù)由外循環(huán)來進(jìn)行參數(shù)設(shè)置,由外部循環(huán)中R7設(shè)定為20,這樣重復(fù)20次1ms的操作后延時(shí)約為100ms,考慮到晶振會(huì)帶來點(diǎn)誤差。圖2-11延時(shí)子程序(102ms)
四、任務(wù)實(shí)施(一)硬件電路同任務(wù)一。(二)100ms延時(shí)子程序的調(diào)試。這已在延時(shí)子程序的設(shè)計(jì)中完成。(三)編寫完整的主程序和子程序。
ORG0000H
L1:MOVP1,#0FEH;點(diǎn)亮二極管
LCALLDELAY2;延時(shí)200ms
MOVP1,#0FFH;關(guān)閉二極管
LCALLDELAY2;延時(shí)200ms
LJMPL1;返回到首址
ORG0100H
DELAY2:MOVR7,#20;延時(shí)200ms子程序D1:MOVR6,#00H
D2:NOP
NOP
DJNZR6,D2
DJNZR7,D1
RET
;返回
END
(四)進(jìn)行單燈閃爍綜合調(diào)試。將上述生成的單燈閃爍.hex文件加載到用Proteus繪制的硬件電路CPU后臺(tái),點(diǎn)擊運(yùn)行,可以觀察到二極管以200ms閃爍的結(jié)果圖2-12單燈閃爍電路仿真
五、總結(jié)與提高1、純粹的硬件電路設(shè)計(jì):硬件定時(shí)不占CPU時(shí)間,但需通過改變電路的元件參數(shù)來調(diào)節(jié)定時(shí)時(shí)間,在使用上不方便。2、延時(shí)子程序:像本次任務(wù)中,CPU大量的時(shí)間停留在延時(shí)程序中增加了開銷,所以軟件定時(shí)時(shí)間不宜過長(zhǎng)。3、可編程定時(shí)器:通過對(duì)系統(tǒng)時(shí)鐘脈沖的計(jì)數(shù)來實(shí)現(xiàn),計(jì)數(shù)值通過改變計(jì)數(shù)值程序設(shè)定??梢圆徽加肅PU的開銷。
項(xiàng)目二、單片機(jī)硬件及指令系統(tǒng)應(yīng)用—
任務(wù)3.跑馬燈
能力目標(biāo)1.能通過程序的編寫使燈從上依次向下輪流點(diǎn)亮,或從下往上依次輪流點(diǎn)亮。2.能用KeilC進(jìn)行單步,連續(xù)調(diào)試3.能進(jìn)行跑馬燈電路綜合調(diào)試學(xué)習(xí)內(nèi)容1.學(xué)習(xí)向左或向右轉(zhuǎn)指令的運(yùn)用2.狀態(tài)計(jì)數(shù)器的設(shè)計(jì)3.程序流程圖的畫法一、任務(wù)要求P1口的8位分別接著二極管,通過編程依次實(shí)現(xiàn)P1口8個(gè)二極管由低位到高位依次點(diǎn)亮和熄滅,依次點(diǎn)亮的時(shí)間為100ms。二、任務(wù)分析通過任務(wù)要求分析,需要在P1口產(chǎn)生如下時(shí)序:見圖2-13所示。
100ms700ms
P1.023456P1.1P1.2P1.3P1.4P1.5P1.6P1.7圖2-13跑馬燈要求P1口產(chǎn)生的時(shí)序
通過任務(wù)分析,要解決如下問題:(1)100ms的延時(shí)子程序,前面任務(wù)二中已會(huì)運(yùn)用,更可以直接拿來運(yùn)用。(2)狀態(tài)轉(zhuǎn)移的實(shí)現(xiàn)。(3)一個(gè)時(shí)序周期中8個(gè)狀態(tài)的記憶問題。三、學(xué)習(xí)知識(shí)(一)狀態(tài)轉(zhuǎn)移的實(shí)現(xiàn)
1、RLA;roundlefta助記例:(A)=81H,RLA
后A7移至A0的后邊,其它位向左移1位,執(zhí)行結(jié)果(A)=03H。將累加器A的內(nèi)容左移1位,位A7循環(huán)移入A0,不影響其它的標(biāo)志位。2、RLCA和RLA指令一樣都使A中內(nèi)容逐位左移一位,但RLCA將使CY連同A中的內(nèi)容一起左移循環(huán),A7進(jìn)入CY,CY進(jìn)入A0。
例:(A)=81H,CY=0執(zhí)行RLCA后,(A)=02H,CY=1
3、RRA;roundrightARRA指令的異同點(diǎn)類似于RLA,僅是A中數(shù)據(jù)位移方向向右。例:(A)=81HRRA執(zhí)行結(jié)果(A)=0C0H
4、RRCA指令的異同點(diǎn)類似于RLCA僅是A中數(shù)據(jù)位移方向向右。例:(A)=81H,CY=0執(zhí)行RRCA(A)=40H,CY=1
(二)一個(gè)時(shí)序周期中8個(gè)狀態(tài)的記憶問題
在本任務(wù)中我們可以將Rn設(shè)為08H,然后進(jìn)行一次狀態(tài)轉(zhuǎn)移,Rn就減1,直至減到Rn為0(三)跑馬燈程序周而復(fù)始的實(shí)現(xiàn)學(xué)習(xí)指令:無條件轉(zhuǎn)移指令(4條)1、AJMPaddr11低11位這條指令的實(shí)現(xiàn)過程:①首先將當(dāng)前PC指針加2。②然后用addr11位的地址替換PC指針的低11位,形成新的PC指針而轉(zhuǎn)移到新的地址。③跳轉(zhuǎn)的范圍為2K。
例:ZHUAN:AJMPaddr11設(shè)addr11=001,0000,0011B標(biāo)號(hào)ZHUAN的值為16位地址1230H①PC+21230H+02H=1232H=0001,0010,0011,0010B②替換低11位新的PC值為0001,0001,0000,0011B=1103H
2、長(zhǎng)轉(zhuǎn)移指令(長(zhǎng)跳轉(zhuǎn)指令)LJMPaddr16執(zhí)行完該條指令時(shí),無條件轉(zhuǎn)移到指令所提供的16位地址去,所以轉(zhuǎn)移地址可在64K程序空間內(nèi)跳轉(zhuǎn)。例:LJMP9000H執(zhí)行完該條指令后,將使程序轉(zhuǎn)移到9000H單元繼續(xù)執(zhí)行。3、相對(duì)轉(zhuǎn)移指令——相對(duì)尋址SJMPrel
rel——取值范圍-128~+127(向前向后)采用的是跳轉(zhuǎn)兩量的補(bǔ)碼(向下為正,向上為負(fù)——求補(bǔ))最終跳轉(zhuǎn)的目的地為PC+2+rel4、間接轉(zhuǎn)移指令JMP@A+DPTR該指令是無條件的間接轉(zhuǎn)移(散轉(zhuǎn))指令,一般用于程序的多種出口的實(shí)現(xiàn)。
例:根據(jù)累加器A的數(shù)值設(shè)計(jì)散轉(zhuǎn)表程序
MOVA,#dataMOVDPTR,#TABLEADDA,#dataJMP@A+DPTRTABLE:AJMPPORT0(PC=TABLE)AJMPPORT1(PC=TABLE1)AJMPPORT2(PC=TABLE2)
條件0data0=0(A)=0PORT0(PC指針)出口0條件1data1=1(A)=1PORT1(PC指針)出口1條件2data2=2(A)=2PORT2(PC指針)出口2┈┈┈┈┈┈(PC指針)┈┈條件Ndatan=n(A)=nPORTN(PC指針)出口N
例:設(shè)A中為鍵值,試編寫按鍵值處理相應(yīng)事件的程序段。解:MOVDPTR,#KYEGMOVB,#03HMULABJMP@A+DPTR┈┈KYEG:LJMPKEYG0
LJMPKEYG1
比較LJMP、AJMP、SJMP、JMP轉(zhuǎn)移的范圍LJMP0~64KAJMP2KSJMP-128~+127JMP0~256(四)流程圖的繪制在編寫流程圖時(shí),會(huì)采用如圖2-15所示的框圖說明程序的執(zhí)行情況。
圖標(biāo)程序的執(zhí)行情況表示程序的開始和結(jié)束
表示順序執(zhí)行
表示分支(根據(jù)循環(huán)變量的測(cè)試進(jìn)行分支)四、任務(wù)實(shí)施
圖2-16跑馬燈的硬件電路設(shè)計(jì)
2、程序流程圖如圖2-17所示。
(R1)-1=0?0FEH→(P1)調(diào)用DELAY2子程序A→(P1)(P1)→ARLA開始NY3、程序的編制如下:
ORG0000H
L3:MOVR1,#08H;狀態(tài)數(shù)設(shè)置
MOVP1,#0FEH;跑馬燈初始狀態(tài)L2:MOVA,P1
LCALLDELAY2;延時(shí)
RLA
MOVP1,A
DJNZR1,L2;判斷狀態(tài)是否結(jié)束
LJMPL3
;跑馬燈周而復(fù)始工作
ORG0100H
DELAY2:MOVR7,#20;跑馬燈延時(shí)子程序設(shè)計(jì)D1:MOVR6,#00H
D2:NOP
NOP
DJNZR6,D2
DJNZR7,D1
RET
END
4、跑馬燈電路用Proteus仿真調(diào)試結(jié)果如圖所示。圖中選擇了D1、D2、D8、被點(diǎn)亮的狀態(tài)。五、總結(jié)與提高1.程序的優(yōu)化問題在本程序中,如果不考慮一個(gè)時(shí)序周期中8個(gè)狀態(tài)的記憶問題,程序同樣能實(shí)現(xiàn),原因是當(dāng)用RLA進(jìn)入到第八個(gè)狀態(tài)時(shí),(A)中數(shù)值又回到0FEH,自然完成到一個(gè)周期的初始狀態(tài),這樣程序第2和第8行可省去,第9行程序改為L(zhǎng)JMPL2,讀者可以自己進(jìn)行比較,體會(huì)個(gè)中原因。2.設(shè)計(jì)由燈的P1.0至P1.5六個(gè)二極管從上到下循環(huán)點(diǎn)亮。3.設(shè)計(jì)成由D1~D8~D7~D1順序亮的跑馬燈。4.設(shè)計(jì)成先從D1亮至D7一個(gè)周期,再?gòu)腄7亮至D1一個(gè)周期,然后周而復(fù)始。
項(xiàng)目三、定時(shí)計(jì)數(shù)器和中斷系統(tǒng)應(yīng)用項(xiàng)目三、定時(shí)/計(jì)數(shù)器和中斷系統(tǒng)應(yīng)用---任務(wù)1.秒脈沖發(fā)生器
能力目標(biāo)1.能正確運(yùn)用定時(shí)/計(jì)數(shù)器產(chǎn)生秒信號(hào)2.秒脈沖發(fā)生器程序的編寫3.學(xué)會(huì)中斷控制系統(tǒng)的應(yīng)用4.秒脈沖發(fā)生器程序的仿真調(diào)試方法學(xué)習(xí)內(nèi)容1.掌握定時(shí)/計(jì)數(shù)器的組成及功能2.掌握單片機(jī)內(nèi)部結(jié)構(gòu)資源:TH0、TL0、TH1、TL1、TMOD、TCON3.掌握中斷控制系統(tǒng)的概念及定時(shí)功能4.理解預(yù)置數(shù)的用法和溢出的概念一一、任務(wù)要求在項(xiàng)目二的任務(wù)2中曾經(jīng)采用單純的軟件來實(shí)現(xiàn)延時(shí)或定時(shí)很耗費(fèi)單片機(jī)的資源,采用可編程定時(shí)/計(jì)數(shù)器,可以解決上述問題。用可編程定時(shí)/計(jì)數(shù)器設(shè)計(jì)一個(gè)秒脈沖發(fā)生器,通過P1.0端口輸出驅(qū)動(dòng)二極管每隔1s亮一次來顯示秒脈沖發(fā)生器效果。定時(shí)1s用定時(shí)器中斷來實(shí)現(xiàn)。二、任務(wù)分析首先得用可編程定時(shí)/計(jì)數(shù)器設(shè)計(jì)一個(gè)0.5s脈沖發(fā)生器,每隔0.5s將P1.0端口取反,即可在P1.0端口輸出1Hz方波,P1.0硬件接法可參考項(xiàng)目二中任務(wù)2的接法。三、學(xué)習(xí)知識(shí)(一)定時(shí)/計(jì)數(shù)器的結(jié)構(gòu)1、定時(shí)/計(jì)數(shù)器的結(jié)構(gòu)
(1)定時(shí)/計(jì)數(shù)器的結(jié)構(gòu)51子系列單片機(jī)內(nèi)有兩個(gè)十六位加1定時(shí)/計(jì)數(shù)器T0T1
計(jì)數(shù)值高八位計(jì)數(shù)值低八位TH1計(jì)數(shù)值高八位TL1計(jì)數(shù)值低八位TMODTCON工作方式定時(shí)/計(jì)數(shù)控制控制控制TH0TL02、定時(shí)/計(jì)數(shù)器功能(1)計(jì)數(shù)功能對(duì)外部輸入脈沖計(jì)數(shù)。定時(shí)/計(jì)數(shù)器0計(jì)數(shù)信號(hào)由芯片的T0(P3.4)端引入。定時(shí)/計(jì)數(shù)器1計(jì)數(shù)信號(hào)由芯片的T0(P3.5)端引入。外部輸入脈沖頻率不能高于單片機(jī)晶體振蕩頻率的1/24,單片機(jī)機(jī)器周期變化的頻率為單片機(jī)晶體振蕩頻率的1/12,因?yàn)閱纹瑱C(jī)在相鄰兩個(gè)機(jī)器周期中采樣到端口上有負(fù)跳變時(shí),才計(jì)作輸入一個(gè)脈沖。(2)定時(shí)功能對(duì)內(nèi)部機(jī)器周期脈沖計(jì)數(shù)。定時(shí)時(shí)間=計(jì)數(shù)脈沖數(shù)×機(jī)器周期時(shí)間由于機(jī)器周期時(shí)間取決于單片機(jī)晶振
(二)中斷概念與定時(shí)中斷
1、中斷定義
單片機(jī)主要用于實(shí)時(shí)控制,當(dāng)對(duì)控制對(duì)象進(jìn)行正??刂茣r(shí),如果外部突然有特殊情況發(fā)生,這個(gè)向CPU發(fā)出請(qǐng)求的過程叫中斷請(qǐng)求,則CPU必須立即暫停原來正常的控制程序,并轉(zhuǎn)向執(zhí)行應(yīng)急處理的服務(wù)程序,這個(gè)轉(zhuǎn)去處理應(yīng)急任務(wù)的過程叫中斷響應(yīng),處理應(yīng)急的過程叫中斷服務(wù),處理完畢,再恢復(fù)到原來正??刂瞥绦虻臅和L幚^續(xù)執(zhí)行,這個(gè)返回過程叫中斷返回,這樣的過程稱為中斷系統(tǒng)。表3-1日常生活中的中斷與單片機(jī)中斷比較日常生活中的中斷與單片機(jī)中斷比較中斷的比較:某同學(xué)單片機(jī)過程說明正在看書執(zhí)行主程序
有人找出去中斷信號(hào)中斷請(qǐng)求暫停看書暫停執(zhí)行主程序中斷響應(yīng)書中作記號(hào)當(dāng)前PC入棧保護(hù)斷點(diǎn)出去做事執(zhí)行中斷程序中斷服務(wù)回來繼續(xù)看返回主程序中斷返回
2、
中斷服務(wù)子程序返回指令中斷響應(yīng)是單片機(jī)響應(yīng)隨機(jī)的突發(fā)要求,進(jìn)行相應(yīng)處理,等應(yīng)急處理的服務(wù)程序完畢,要進(jìn)行中斷返回,為區(qū)別子程序返回,中斷服務(wù)子程序返回指令用“RETI”
3、
中斷源能夠引發(fā)CPU中斷的事件源稱為中斷源。MCS-51系列單片機(jī)有定時(shí)中斷(定時(shí)/計(jì)數(shù)器0和定時(shí)/計(jì)數(shù)器1)、外中斷(外中斷0和外中斷1)和串行中斷3類。4、定時(shí)中斷當(dāng)它們計(jì)數(shù)到預(yù)定的次數(shù)或預(yù)定的時(shí)間時(shí),通過單片機(jī)內(nèi)部硬件電路將定時(shí)中斷源的中斷請(qǐng)求標(biāo)志置于“1”,向CPU提出中斷請(qǐng)求,讓CPU及時(shí)作出處理。(三)定時(shí)/計(jì)數(shù)器控制1、
工作方式控制寄存器TMOD(89H)特殊功能寄存器TMOD用于控制T0和T1的工作方式,低4位用于控制T0,高4位用于控制T1,TMOD
M0
M1C/
GATE
M0
M1C/GATET1T0GATE——
門控位。
GATE=0啟動(dòng)不受/INT0或/INT1的控制;
GATE=1啟動(dòng)受/INT0或/INT1的控制。C/T——
外部計(jì)數(shù)器/定時(shí)器方式選擇位
C//T=0定時(shí)方式;
C//T=1計(jì)數(shù)方式。M1M0——
工作模式選擇位(編程可決定四種工作方式)。TMOD工作方式控制位:M1M0工作方式計(jì)數(shù)器功能00方式013位計(jì)數(shù)器01方式116位計(jì)數(shù)器10方式2自動(dòng)重裝初值的8位計(jì)數(shù)器11方式3定時(shí)器0:分成兩個(gè)8位計(jì)數(shù)器定時(shí)器1:波特率發(fā)生器2、定時(shí)控制寄存器TCON(88H)
TCON的作用是控制定時(shí)器的啟、停,標(biāo)志定時(shí)器的溢出和中斷情況,定時(shí)器控制字TCON格式TF1TR1TF0TR0IE1IT1IE0IT0TCON8FH
8EH
8DH
8CH
8BH
8AH
89H
88HTR0定時(shí)/計(jì)數(shù)器1運(yùn)行控制位。軟件置位。TR1定時(shí)/計(jì)數(shù)器1運(yùn)行控制位。(用法與TR0類似)3、定時(shí)器/計(jì)數(shù)器的4種工作方式(1)方式0計(jì)數(shù)寄存器TLi低5位+THi8位(T1、T0的等效邏輯結(jié)構(gòu))
控制BAC/T=0振蕩器1/12&≥1TiTRiGATEINTiC/T=1TLi(5位)THi(8位)TFi0~40~7中斷波形等間隔,次數(shù)已定,時(shí)間確定即對(duì)機(jī)器周期進(jìn)行計(jì)數(shù)。左圖定時(shí)時(shí)間為N*TN個(gè)方波
T每個(gè)下降沿計(jì)數(shù)一次確認(rèn)一次負(fù)跳變需兩個(gè)機(jī)器周期,所以,計(jì)數(shù)頻率最高為fosc/24。
C//T=0——定時(shí);C//T=1——
對(duì)外計(jì)數(shù)。定時(shí):fosc/12=1/(12/fosc)=1/T
計(jì)數(shù):脈沖不等間隔。(2)工作方式1與方式0相似。與方式0的區(qū)別:計(jì)數(shù)位數(shù)不同。計(jì)數(shù)寄存器:THi(高8位)+TLi(低8位)TFi中斷TLi(8位)THi(8位)0~70~7控制BAC/T=0振蕩器1/12&≥1TiTRiGATEINTiC/T=1(3)方式2與方式0、1的區(qū)別:1)計(jì)數(shù)位數(shù)不同;2)初值自動(dòng)重裝。TFi中斷TLi(8位)THi(8位)控制BAC/T=0振蕩器1/12&≥1TiTRiGATEINTiC/T=1(4)方式3T0定時(shí)/計(jì)數(shù),而T1停止計(jì)數(shù),但可作波特率發(fā)生器。T0分成兩獨(dú)立定時(shí)/計(jì)數(shù)器TL0和TH0。TL0使用C//T、GATE、TR0、/INT0、TF0定時(shí)/計(jì)數(shù),TH0使用TR1、TF1因此,只能用于定時(shí)TF0中斷控制BAC/T=0振蕩器1/12&≥1T0TR0GATEINT0C/T=1TL0(8位)振蕩器1/12TH0TF1中斷(a)TL0作8位定時(shí)/計(jì)數(shù)器(b)TH0作8位定時(shí)器TR14、中斷允許控制寄存器IE
表3-3中斷允許控制寄存器IEIEEA—ET2ESET1EX1ET0EX0位地址AFH—ADHACHABHAAHA9HA8H(1)EA(IE.7):總允許控制位,若EA=0,禁止AT89C51所有中斷源的中斷請(qǐng)求;若EA=1,則總控制被開放,但每個(gè)中斷源是允許還是被禁止CPU響應(yīng),還受控于中斷源的各自中斷允許控制位的狀態(tài)。
(2)ET2(IE.5):定時(shí)器T2溢出中斷允許控制位,位地址是ADH。(3)ES(IE.4):串行口中斷允許控制位,位地址是ACH。(4)ET1(IE.3):定時(shí)器T1的溢出中斷允許控制位,位地址為ABH。
(5)EX1(IE.2):外部中斷的中斷請(qǐng)求允許控制位,位地址是AAH。(6)ET0(IE.1):定時(shí)器T0的溢出中斷允許控制位,位地址是A9H。
(7)EX0(IE.0):外部中斷的中斷請(qǐng)求允許控制位,位地址是A8H。以上各位置為“1”時(shí),允許中斷;清為“0”時(shí),禁止中斷。注意要設(shè)定某中斷源允許中斷時(shí),除將對(duì)應(yīng)的中斷源允許控制位置成“1”外,還有將總控制位EA置成為“1”。
5、相關(guān)指令
(1)位指令的應(yīng)用
SETBEA;開啟總中斷允許
SETBET0;開啟定時(shí)器0中斷允許
SETBTR0;啟動(dòng)定時(shí)/計(jì)數(shù)器0
CLREA;禁止總中斷允許
CLRET0;禁止定時(shí)器0中斷允許
CLRTR0;禁止定時(shí)/計(jì)數(shù)器0
(2)位控制轉(zhuǎn)移指令
JBCbit,rel;若(bit)=1時(shí),則轉(zhuǎn)移到標(biāo)號(hào)對(duì)應(yīng)的地址,并且同時(shí)bit←0。例如:JBCTF0,NEXT;若定時(shí)器0數(shù)據(jù)溢出時(shí),即TF0=1時(shí),則轉(zhuǎn)移到標(biāo)號(hào)NEXT對(duì)應(yīng)的地址,并且同時(shí)清定時(shí)溢出標(biāo)志TF0←0,這樣下次就可以重新定時(shí)/計(jì)數(shù)。
(3)比較轉(zhuǎn)移指令CJNEA,#data,rel;
(A)≠data,PC+3+rel跳轉(zhuǎn)到目標(biāo)地址,
(A)=data,PC+3順序向下執(zhí)行。
CJNEA,direct,rel;CJNERn,#data,rel;CJNE@Ri,#data,rel;
CJNE系列指令可產(chǎn)生三分支程序:YA=B嗎?A﹥B嗎?入口出口NCY=0CY=1YN
(5)判CY轉(zhuǎn)移指令JCrel;若(CY)=1,(PC)←(PC)+2+rel
若(CY)=0,(PC)←(PC)+2順序JNCrel;若(CY)=0,(PC)←(PC)+2+rel
若(CY)=1,(PC)←(PC)+2順序上述操作不影響操作位。
例:編程通過P1.0線連續(xù)輸出256個(gè)寬度為5個(gè)機(jī)器周期長(zhǎng)的方波。解:MOVR0,#00H;置R0的值為256LOOP:CLRP1.0;P1.0=0
CPLP1.0;P1.0=1
NOPNOPDJNZR0,LOOP例:用軟件實(shí)現(xiàn)如圖3-8所示P1.0~P1.3間的邏輯運(yùn)算。
解:MOVC,P1.1ORLC,P1.2ANLC,P1.0MOVP1.3,C
圖3-8邏輯運(yùn)算圖
(四)中斷入口地址表3-4中斷入口地址地址說明0003H~000AH外部中斷0中斷地址區(qū)000BH~0012H定時(shí)/計(jì)數(shù)0中斷地址區(qū)0013H~001AH外部中斷1中斷地址區(qū)001BH~0022H定時(shí)/計(jì)數(shù)1中斷地址區(qū)0023H~002AH串行中斷地址區(qū)(五)定時(shí)器/計(jì)數(shù)器的設(shè)計(jì)步驟初始化的內(nèi)容如下:1、設(shè)置TMOD寄存器參數(shù)2、計(jì)算計(jì)數(shù)初值計(jì)算出計(jì)數(shù)初始值并寫入TH0、TL0、TH1、TL1中。計(jì)數(shù)器的初始值和實(shí)際計(jì)數(shù)值并不相同,兩者的換算關(guān)系如下:設(shè)實(shí)際計(jì)數(shù)值為C,計(jì)數(shù)最大值為M,計(jì)數(shù)初始值為X,則X=M-C。其中計(jì)數(shù)最大值在不同工作方式下的值不同,具體如下:(1)工作方式0:M=213=8192。(2)工作方式1:M=216=65536。(3)工作方式2:M=28=256。(4)工作方式3:M=28=256。計(jì)數(shù)初值都是X=M-C(十六進(jìn)制數(shù))。定時(shí)器模式下對(duì)應(yīng)的定時(shí)時(shí)間為:T=C·T機(jī)=(M-X)T機(jī)式中,T機(jī)為單片機(jī)的機(jī)器周期(T機(jī)為晶振時(shí)鐘周期的12倍)。將計(jì)數(shù)所得的X值轉(zhuǎn)換成相應(yīng)的16進(jìn)制數(shù),分別放入相應(yīng)的TH0、TL0或TH1、TL1中。
3、定時(shí)中斷選擇給定時(shí)器控制寄存器TCON送命令字,控制定時(shí)/計(jì)數(shù)器的啟動(dòng)和停止。(1)應(yīng)用定時(shí)中斷編程時(shí),需要開啟相應(yīng)的定時(shí)中斷控制位,否則將其設(shè)為禁止。(2)若定時(shí)/計(jì)數(shù)器僅使用一次,則要在服務(wù)程序中把工作啟動(dòng)/停止控制位TR清為“0”,關(guān)閉定時(shí)/計(jì)數(shù)器,若連續(xù)使用時(shí),則不要改變TR位。(3)當(dāng)不使用定時(shí)中斷時(shí),即用查詢溢出標(biāo)志編程,無論定時(shí)/計(jì)數(shù)僅用一次還是連續(xù)使用,每次都要用指令將對(duì)應(yīng)的溢出標(biāo)志位清“0”。而采用中斷編程時(shí),一旦中斷響應(yīng),由硬件自動(dòng)將對(duì)應(yīng)的溢出標(biāo)志撤銷。例:產(chǎn)生周期為1ms的定時(shí)方波選擇T1方式0用于定時(shí),在P1.1輸出周期為1ms的方波,晶振fosc=6MHZ。根據(jù)題意,只要使P1.1每隔500us取反一次即可得到1ms方波,因而T1的定時(shí)時(shí)間為500us,因定時(shí)時(shí)間不長(zhǎng),取方式0即可,則M1M0=00;因是定時(shí)器方式,所以C/=0;在此用軟件啟動(dòng)T1,所以GATE=0.T0不用,方式字可任意設(shè)置,只要不使其進(jìn)入方式3即可,一般取0,故TMOD=00H。系統(tǒng)復(fù)位后TMOD為0,可不對(duì)TMOD重新清“0”。下面計(jì)算500us定時(shí)T1初始值:機(jī)器周期T=12/fosc=12/6MHZ=2us設(shè)初始值為X,則(213-X)×2×10-6s=500×10-6sX=7942=111110000110B=1F06H因?yàn)樵谧?3位計(jì)數(shù)器同時(shí),TL1的高3位未用,應(yīng)填寫0,TH1占高8位,所以X的實(shí)際填寫值應(yīng)為X=11111000000110B=F806H,結(jié)果TH1=F8H,TL1=06H。四、任務(wù)實(shí)施1、硬件設(shè)計(jì)硬件設(shè)計(jì)可采用項(xiàng)目一中任務(wù)2的硬件原理圖。2、軟件設(shè)計(jì)(1)要二極管產(chǎn)生每一秒亮一次,則P1.0得每0.5s取反一次,所以定時(shí)器的定時(shí)時(shí)間為0.5s。(2)設(shè)定工作方式寄存器TMOD。
表3-5工作方式寄存器TMOD設(shè)置
GATEC//TM1M2GATEC//TM1M200010000(3)計(jì)算計(jì)數(shù)初值。選用晶振為6MHZ,則機(jī)器周期T=12/fosc=12/6MHZ=2us,設(shè)初始值為X,則定時(shí)時(shí)間為(216-X)×2×10-6s,當(dāng)X=0,在晶振為6MHZ的情況下,采用定時(shí)/計(jì)數(shù)器1工作方式1下,最長(zhǎng)的定時(shí)時(shí)間為216×2×10-6s=131ms,而125ms×4=500ms=0.5s,可選定時(shí)0.5s的流程圖如圖3-9所示,對(duì)定時(shí)器125ms中斷4次,就是0.5s。(216-X)×2×10-6s=125ms,X=3036=(BDC)16,所以TH1=0BH,TL1=0DCH定時(shí)125ms4次到否否0.5s圖3-9定時(shí)0.5s示意圖
開始置定時(shí)器1工作方式1置定時(shí)常數(shù)置中斷記錄初值R2←0開中斷允許、定時(shí)器R2≥5?R2←00HR2≠4?R2←00HP1.0取反是是否圖3-10主程序流程圖
中斷返回定時(shí)中斷恢復(fù)計(jì)數(shù)初值中斷次數(shù)加1圖3-11定時(shí)中斷服務(wù)程序流程圖(5)程序設(shè)計(jì)
ORG0000H
AJMPMAIN
ORG001BH;定時(shí)/計(jì)數(shù)器1中斷入口地址
AJMPRT1
ORG0030H
MAIN:MOVTMOD,#10H;設(shè)定時(shí)/計(jì)數(shù)器1定時(shí)功能,工作方式1
MOVTH1,#0BH;設(shè)置計(jì)數(shù)初值高8位
MOVTL1,#0DCH;設(shè)置計(jì)數(shù)初值低8位
MOVR2,#00H;設(shè)置記錄中斷次數(shù)初值
SETBEA;開啟總中斷允許
SETBET1;開啟定時(shí)/計(jì)數(shù)器1中斷允許
SETBTR1;啟動(dòng)定時(shí)/計(jì)數(shù)器1MAIN1:CJNER2,#04H,RT11;判別滿0.5s否
MOVR2,#00H;滿,則將中斷計(jì)數(shù)次數(shù)恢復(fù)初值RT11:JCMAIN1;若(R2)<5,則繼續(xù)判0.5s到否
MOVR2,#00H;若(R2)≧5,則將中斷計(jì)數(shù)次數(shù)恢復(fù)0
CPLP1.0
SJMPMAIN1
RT1:MOVTH1,#0BH;定時(shí)/計(jì)數(shù)器1中斷服務(wù)子程序,重新裝數(shù)
MOVTL1,#0DCH
INCR2;中斷次數(shù)加1
RETI
;中斷返回
END
3、軟件調(diào)試與仿真
用PROTEUS進(jìn)行仿真調(diào)試當(dāng)來一個(gè)外中斷,指示燈發(fā)生變化。五、總結(jié)與提高1、中斷優(yōu)點(diǎn)和功能:2、程序的結(jié)構(gòu):3、定時(shí)器/計(jì)數(shù)器的運(yùn)用:項(xiàng)目三、定時(shí)/計(jì)數(shù)器和中斷系統(tǒng)應(yīng)用---任務(wù)2.脈沖計(jì)數(shù)測(cè)量
能力目標(biāo)1.正確運(yùn)用定時(shí)/計(jì)數(shù)器進(jìn)行計(jì)數(shù)2.把握主程序、子程序、中斷程序之間的關(guān)系,各入口和出口參數(shù)的協(xié)調(diào)3.硬件資源、軟件資源的合理分配4.脈沖計(jì)數(shù)測(cè)量電路仿真調(diào)試學(xué)習(xí)內(nèi)容1.定時(shí)/計(jì)數(shù)器計(jì)數(shù)功能的運(yùn)用2.單片機(jī)脈沖計(jì)數(shù)測(cè)量控制系統(tǒng)的組成3.相關(guān)指令的學(xué)習(xí)4.掌握外部中斷系統(tǒng)的應(yīng)用一、任務(wù)要求由MCS-51單片機(jī)組成最小應(yīng)用系統(tǒng),對(duì)外部脈沖信號(hào)進(jìn)行計(jì)數(shù)測(cè)量,通過8個(gè)發(fā)光二極管(LED)顯示外部脈沖的個(gè)數(shù)。二、任務(wù)分析1.構(gòu)建一個(gè)單片機(jī)的最小系統(tǒng)。2.采用MCS-51單片機(jī)外部中斷0來實(shí)現(xiàn)對(duì)外部中斷的測(cè)量,即每輸入一個(gè)外部脈沖,引起外部中斷一次。3.單片機(jī)將測(cè)量的脈沖個(gè)數(shù)由P1端口輸出,驅(qū)動(dòng)LED發(fā)光二極管顯示。
三、學(xué)習(xí)知識(shí)(一)外部中斷1、信號(hào)引入腳外中斷0:(中斷請(qǐng)求信號(hào)從P3.2端口引入)外中斷1:(中斷請(qǐng)求信號(hào)從P3.3口引入)2、信號(hào)方式和中斷請(qǐng)求標(biāo)志(1)信號(hào)方式電平方式——低電平有效脈沖方式——負(fù)跳變有效(2)定時(shí)器控制寄存器與中斷請(qǐng)求標(biāo)志位序號(hào)D7D6D5D4D3D2D1D0位符號(hào)TF1TR1TF0TR0IE1IT1IE0IT0IE0和IE1——外中斷0和1的中斷請(qǐng)求標(biāo)志位IE0(IE1)=1時(shí),表示有外部中斷請(qǐng)求,IE0(IE1)=0時(shí),表示無請(qǐng)求。IT0和IT1——外中斷0和1請(qǐng)求信號(hào)方式控制位IT0(IT1)=1時(shí),即后沿負(fù)跳變有效IT0(IT1)=0時(shí),低電平有效(三)中斷優(yōu)先級(jí)
1、中斷優(yōu)先級(jí)的概念
當(dāng)多個(gè)中斷源同時(shí)向CPU發(fā)出中斷請(qǐng)求時(shí),CPU應(yīng)按情況的緊急程度,按優(yōu)先次序來處理,最緊急的中斷源請(qǐng)求優(yōu)先處理,這就是中斷優(yōu)先級(jí)控。
2、中斷優(yōu)先級(jí)控制寄存器(IP)位序號(hào)D7D6D5D4D3D2D1D0位符號(hào)———PSPT1PX1PT0PX0(1)PS:串行中斷優(yōu)先級(jí)設(shè)定位。(2)PT1和PT0:定時(shí)中斷1和0優(yōu)先級(jí)設(shè)定位。(3)PX1和PX0:外部中斷1和0優(yōu)先級(jí)設(shè)定位。各位置為“1”時(shí),對(duì)應(yīng)中斷源設(shè)定成高優(yōu)先級(jí);清為“0”時(shí),對(duì)應(yīng)中斷源設(shè)定成低優(yōu)先級(jí)。
3、中斷優(yōu)先級(jí)控制規(guī)則(1)高優(yōu)先級(jí)中斷源的請(qǐng)求可以打斷低優(yōu)先中斷源的中斷服務(wù),形成中斷嵌套,但低優(yōu)先級(jí)中斷源請(qǐng)求不能打斷高優(yōu)先級(jí)的中斷服務(wù)。(2)當(dāng)一個(gè)中斷源的請(qǐng)求已被響應(yīng),與其同優(yōu)先級(jí)的中斷源的請(qǐng)求不能打斷它的中斷服務(wù)。(3)同級(jí)優(yōu)先級(jí)中斷源的中斷請(qǐng)求被響應(yīng)的優(yōu)先次序:外中斷0→定時(shí)中斷0→外中斷1→定時(shí)中斷1→串行中斷
4、中斷處理過程(1)中斷響應(yīng)(2)中斷處理1)完成當(dāng)前指令的操作。2)保護(hù)斷點(diǎn)地址,將PC內(nèi)容壓入堆棧。3)屏蔽同級(jí)的中斷請(qǐng)求。4)將中斷源入口地址(固定的)送入PC寄存器,自動(dòng)轉(zhuǎn)入相應(yīng)中斷程序入口地址。5)執(zhí)行中斷服務(wù)程序。6)當(dāng)執(zhí)行到RETI指令時(shí)即結(jié)束中斷,從堆棧中自動(dòng)彈出斷點(diǎn)地址到PC寄存器,返回到先前斷點(diǎn)處繼續(xù)執(zhí)行原程序。(3)中斷返回(4)中斷請(qǐng)求的撤消CPU一旦響應(yīng)某中斷請(qǐng)求后,在該中斷程序結(jié)束前(RETI),必須把它的相應(yīng)的中斷標(biāo)志復(fù)位,否則CPU在返回主程序后將再次響應(yīng)同一中斷請(qǐng)求。硬件復(fù)位:一般的中斷請(qǐng)求都可以通過硬件清除,自動(dòng)撤除,無需采用其他措施。軟件復(fù)位:CLRTI;CLRRI(5)中斷響應(yīng)時(shí)間中斷響應(yīng)時(shí)間是指CPU從查詢中斷請(qǐng)求標(biāo)志到轉(zhuǎn)入中斷服務(wù)程序入口地址所需要的時(shí)間。四、任務(wù)實(shí)施1、硬件設(shè)計(jì)2、軟件設(shè)計(jì)
開始設(shè)置中斷控制寄存器等待中斷開啟中斷允許設(shè)置初始狀態(tài)外中斷0保護(hù)現(xiàn)場(chǎng)測(cè)量脈沖數(shù)加1脈沖數(shù)送顯示恢復(fù)現(xiàn)場(chǎng)中斷返回圖3-20主程序流程圖圖3-21中斷服務(wù)流程圖4、程序設(shè)計(jì)
ORG0000H
AJMPMAIN
ORG0003H;外中斷0入口地址
AJMPRXO
ORG0030H
MAIN:CLRA
MOV30H,A
MOVP1,#0FFH;發(fā)光二極管都不亮
MOVTCON,#01H;外部中斷0下降沿觸發(fā)
MOVIE,#81H;打開外部中斷允許位(EX0)及總中斷允許位(EA)
SJMP$;等待中斷
RXO:PUSHPSW;保護(hù)現(xiàn)場(chǎng)
INC30H;脈沖計(jì)數(shù)
MOVA,30H
CPLA;取反
MOVP1,A;脈沖計(jì)數(shù)值由P1端口送發(fā)光二極管顯示
POPPSW;恢復(fù)現(xiàn)場(chǎng)
RETI
;中斷返回
END
5、仿真調(diào)試
計(jì)第一個(gè)脈沖時(shí)狀態(tài)計(jì)第二個(gè)脈沖時(shí)狀態(tài)計(jì)第三個(gè)脈沖時(shí)狀態(tài)
五、總結(jié)與提高1、有關(guān)中斷方式:中斷信號(hào)的形式是低電平還是沿觸發(fā)2、有關(guān)中斷優(yōu)先級(jí):根據(jù)輕重緩急來定義好各個(gè)中斷的優(yōu)先級(jí)
項(xiàng)目三、定時(shí)/計(jì)數(shù)器和中斷系統(tǒng)應(yīng)用---任務(wù)3.轉(zhuǎn)速計(jì)數(shù)器能力目標(biāo)1.能理解單片機(jī)的中斷原理及其中斷過程,掌握外中斷的程序設(shè)計(jì)步驟。2.簡(jiǎn)單了解霍爾傳感器的原理和應(yīng)用,會(huì)使用霍爾傳感器進(jìn)行轉(zhuǎn)速測(cè)量電路設(shè)計(jì)。3.掌握數(shù)碼管顯示的方法。學(xué)習(xí)內(nèi)容1.學(xué)習(xí)霍爾傳感器的簡(jiǎn)單工作原理,學(xué)習(xí)用外中斷邊沿方式實(shí)現(xiàn)轉(zhuǎn)速測(cè)量的程序設(shè)計(jì)與仿真;2.偽指令的使用方法。3.學(xué)習(xí)數(shù)碼管的類型,用數(shù)碼管顯示數(shù)據(jù)的方法。
一、任務(wù)要求利用AT89C51單片機(jī)來制作一個(gè)轉(zhuǎn)速計(jì)數(shù)器。在AT89C51單片機(jī)的P3.2管腳通過開關(guān)接一個(gè)霍爾傳感器轉(zhuǎn)速輸入信號(hào),用單片機(jī)的P1.0~P1.7接一個(gè)共陽數(shù)碼管,作為00~60計(jì)數(shù)的個(gè)位數(shù)顯示,用單片機(jī)的P2.0~P2.7接一個(gè)共陽數(shù)碼管,作為00~60計(jì)數(shù)的十位數(shù)顯示;當(dāng)計(jì)數(shù)到60時(shí),停止計(jì)數(shù),按復(fù)位鍵后重復(fù)運(yùn)行。
二、任務(wù)分析1、要了解霍爾傳感器輸出的信號(hào)形式,以方便在仿真時(shí)選用合適的信號(hào)進(jìn)行仿真。2、
由于對(duì)轉(zhuǎn)速的測(cè)量要具有實(shí)時(shí)性,所以考慮在P3.2口采用外中斷0方式輸入,這樣在主程序中要考慮總中斷EA、外中斷0EX0的打開,以及對(duì)外中斷0的檢測(cè)是下降沿方式還是低電平方式。3、
計(jì)數(shù)值與數(shù)碼管之間的對(duì)應(yīng)關(guān)系可以采用查表的方式來對(duì)應(yīng)。所謂轉(zhuǎn)速是指單位時(shí)間1S內(nèi)轉(zhuǎn)過的圈數(shù),所以真正的轉(zhuǎn)速計(jì)數(shù)器必須加1S的時(shí)間背景來測(cè)定轉(zhuǎn)速的計(jì)數(shù)值。三、學(xué)習(xí)知識(shí)(一)了解霍爾傳感器測(cè)速的簡(jiǎn)單原理
(二)數(shù)碼管的有關(guān)知識(shí)1、數(shù)碼管的種類a)共陰極;b)共陽極;c)管腳配置
2、數(shù)碼管的段碼
顯示字符共陰極字碼段共陽極字碼段顯示字符共陰極字碼段共陽極字碼段03FHC0H96FH90H106HF9HA77H88H25BHA4HB7CH83H34FHB0HC39HC6H466H99HD5EHA1H56DH92HE79H86H67DH82HF71H8EH707HF8HP73H8CH87FH80H熄滅00HFFH(1)靜態(tài)顯示(2)動(dòng)態(tài)顯示(三)相關(guān)指令學(xué)習(xí)1、二——十進(jìn)制調(diào)整指令DAA該指令是對(duì)累加器參與BCD碼運(yùn)算所獲得的8位結(jié)果(在累加器中)進(jìn)行十進(jìn)制修正,使得累加器中的內(nèi)容調(diào)整為BCD碼。DAA進(jìn)行二——十進(jìn)制修正的具體過程如下:當(dāng)A的低4位大于9或AC=1,則低4位加6。當(dāng)A的高4位大于9或CY=1,則高4位加6。
2、數(shù)據(jù)交換指令字節(jié)交換:指令:XCHA,Rn
XCHA,directXCHA,@Ri例:(A)=03H,(40H)=30HXCHA,40H執(zhí)行后(A)=30H,(40H)=03H
半字節(jié)交換:指令:XCHDA,@Ri例:(A)=80H,(R1)=32H,(32H)=77H執(zhí)行XCHDA,@R1后(A)=87H,(32H)=7
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年福建省南平閩延電力建設(shè)有限公司建陽分公司招聘2人考前自測(cè)高頻考點(diǎn)模擬試題及答案詳解(奪冠系列)
- 2025廣西河池市鳳山縣農(nóng)業(yè)農(nóng)村局招募水稻等產(chǎn)業(yè)特聘農(nóng)民技術(shù)員2人考前自測(cè)高頻考點(diǎn)模擬試題及答案詳解(網(wǎng)校專用)
- 2025湖北宜昌市點(diǎn)軍區(qū)招聘社區(qū)專職人員(網(wǎng)格員)6人考前自測(cè)高頻考點(diǎn)模擬試題附答案詳解(突破訓(xùn)練)
- 2025北京協(xié)和醫(yī)院麻醉科合同制科研助理招聘考前自測(cè)高頻考點(diǎn)模擬試題及參考答案詳解1套
- 2025年甘肅省衛(wèi)生健康委系統(tǒng)招聘工作人員網(wǎng)上繳費(fèi)考前自測(cè)高頻考點(diǎn)模擬試題及參考答案詳解
- 2025年河北石家莊市藁城區(qū)衛(wèi)生健康局公開招聘工作人員1名考前自測(cè)高頻考點(diǎn)模擬試題附答案詳解(模擬題)
- 2025年公主嶺市法院系統(tǒng)招聘真題
- 2025年西安明珠電力安裝工程有限公司招聘(2人)模擬試卷附答案詳解(完整版)
- 2025內(nèi)蒙古自治區(qū)農(nóng)牧業(yè)科學(xué)院納入總量管理控制數(shù)招聘模擬試卷及答案詳解(新)
- 2025福建廈門市集美區(qū)幸福幼兒園招聘1人考前自測(cè)高頻考點(diǎn)模擬試題及1套完整答案詳解
- 【課件】數(shù)學(xué)建?;顒?dòng):決定蘋果的最佳出售時(shí)間點(diǎn)課件-2025-2026學(xué)年高一上學(xué)期數(shù)學(xué)人教B版(2019)必修第一冊(cè)
- 施工隊(duì)進(jìn)場(chǎng)安全教育培訓(xùn)
- 母嬰分離護(hù)理常規(guī)
- 污泥池清理管理制度
- 秩序員休假管理制度
- 保護(hù)環(huán)境的課件
- 2025年中國(guó)張?jiān).a(chǎn)區(qū)葡萄酒特色與品牌國(guó)際化發(fā)展報(bào)告
- 圖深度強(qiáng)化學(xué)習(xí)在配電網(wǎng)故障恢復(fù)中的應(yīng)用研究
- (2017)海南省房屋建筑與裝飾裝修工程綜合定額交底資料
- 2024-2025學(xué)年下學(xué)期高一英語人教版同步經(jīng)典題精練之語法填空
- 《社會(huì)科學(xué)研究方法》課件
評(píng)論
0/150
提交評(píng)論