




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
《單片機(jī)原理及應(yīng)用》實(shí)驗(yàn)講義PAGE50單片機(jī)原理及應(yīng)用實(shí)驗(yàn)講義目錄第一章 鍵盤(pán)監(jiān)控使用簡(jiǎn)介 1第二章 MCS-51系列單片機(jī)實(shí)驗(yàn) 16實(shí)驗(yàn)一單片機(jī)實(shí)驗(yàn)箱的操作使用 16實(shí)驗(yàn)二拆字實(shí)驗(yàn) 18實(shí)驗(yàn)三拼字實(shí)驗(yàn) 20實(shí)驗(yàn)四P1口實(shí)驗(yàn)(一) 24實(shí)驗(yàn)五P1口實(shí)驗(yàn)(二) 26實(shí)驗(yàn)六按鍵實(shí)驗(yàn) 28實(shí)驗(yàn)七鍵控流水燈 30實(shí)驗(yàn)八外部中斷實(shí)驗(yàn) 32實(shí)驗(yàn)九定時(shí)器實(shí)驗(yàn) 34實(shí)驗(yàn)十簡(jiǎn)單I/O口擴(kuò)展實(shí)驗(yàn) 37實(shí)驗(yàn)十一A/D轉(zhuǎn)換實(shí)驗(yàn) 39實(shí)驗(yàn)十二D/A轉(zhuǎn)換實(shí)驗(yàn) 42附錄:實(shí)驗(yàn)報(bào)告的基本要求與書(shū)寫(xiě)格式 45參考文獻(xiàn) 46鍵盤(pán)監(jiān)控使用簡(jiǎn)介鍵盤(pán)簡(jiǎn)介 5103S實(shí)驗(yàn)系統(tǒng)自帶有一個(gè)4×8鍵盤(pán),見(jiàn)圖1—1,其外形為注塑仿PC機(jī)鍵,鍵功能豐富;顯示部分有6個(gè)LED顯示,可使用戶在脫離PC機(jī)的時(shí)候調(diào)試相當(dāng)方便。鍵盤(pán)示意圖7/R78/R89/R9A/ACCTV/MEEG/DLPRTEX/FV4/R45/R56/R6B/BRG/FSRW/ISCOMPSCAL1/R12/R23/R3C/PSWF1/LSEV/UNMOVESTEP0/R0F/PCHE/PCLD/SPF2/NXEC/EPDARMON圖1—1鍵盤(pán)示意圖鍵盤(pán)功能簡(jiǎn)介在32個(gè)按鍵中,左邊16個(gè)為數(shù)字鍵0~F,用于輸入地址,數(shù)據(jù)或機(jī)器碼。當(dāng)前工作寄存器及PC值DPTR等也用數(shù)字表示,其名在數(shù)字鍵右下角,詳見(jiàn)下表:名稱(chēng)R0R1R2R3R4R5R6R7DPLDPHABPSWSPPCLPCH代號(hào)0123456789ABCDEF(2)右邊十六個(gè)功能鍵,這16個(gè)功能鍵作用分別是:TV/ME進(jìn)入CRT顯示狀態(tài)/程序存儲(chǔ)器讀寫(xiě)RG/FS 片內(nèi)RAM、寄存器(讀寫(xiě))/偏移量計(jì)算F1/LS 第一標(biāo)志位/讀上一個(gè)字節(jié)F2/NX 第二標(biāo)志位/讀下一個(gè)字節(jié)EG/DLEPROM寫(xiě)入鍵/刪除第一個(gè)字節(jié)RW/IS 外部數(shù)據(jù)存儲(chǔ)器讀寫(xiě)/插入一個(gè)字節(jié)EV/UN 固化區(qū)內(nèi)容移入目標(biāo)RAM/保留EC/EP EPROM查空/EPROM內(nèi)容與RAM內(nèi)容比較PRT TV狀態(tài)下打印COMP 程序/數(shù)據(jù)塊比較MOVE 程序/數(shù)據(jù)塊移動(dòng)DAR TV狀態(tài)下反匯編EX/FV 全速運(yùn)行/全速斷點(diǎn)STEP 單步MON 返回監(jiān)控SCAL EPROM低速寫(xiě)入/斷點(diǎn)執(zhí)行RESET 系統(tǒng)硬件復(fù)位鍵盤(pán)監(jiān)控程序簡(jiǎn)介鍵盤(pán)監(jiān)控工作狀態(tài)用戶可以通過(guò)32個(gè)鍵向本系統(tǒng)發(fā)出各種操作命令,大多數(shù)鍵有2個(gè)以上功能,而沒(méi)有上下檔鍵,實(shí)驗(yàn)系統(tǒng)到底進(jìn)行什么操作,不僅與按什么鍵有關(guān),也與當(dāng)前實(shí)驗(yàn)系統(tǒng)所處的工作狀態(tài)有關(guān)?!肮ぷ鳡顟B(tài)”在操作中是一個(gè)重要的概念,下面作有關(guān)介紹。待命狀態(tài)0在本狀態(tài)時(shí),顯示器的最左端顯示一個(gè)閃動(dòng)的“P.”提示符,表示實(shí)驗(yàn)系統(tǒng)處于初始化狀態(tài),等待用戶操作:在實(shí)驗(yàn)系統(tǒng)接通電源后,自動(dòng)復(fù)位時(shí)處于待命狀態(tài)0;按RESET復(fù)位鍵后,使本機(jī)處于待命狀態(tài)0;在大多數(shù)情況下,按MON鍵,也可以使本機(jī)進(jìn)入待命狀態(tài)0。待命狀態(tài)0時(shí),可以進(jìn)行的操作有:按任一數(shù)字鍵,進(jìn)入待命狀態(tài)1,顯示該鍵入數(shù);按F1標(biāo)志鍵,進(jìn)入仿真2(即仿EPROM),PC值指向外部程序空間,LED顯示閃動(dòng)的“H……”;按F2標(biāo)志鍵,進(jìn)入仿真1(即仿RAM),PC值指向內(nèi)部用戶程序空間,LED顯示閃動(dòng)的“P……”;按EC鍵,檢查EPROM內(nèi)容是否是全FFH;按EX鍵,從0000H開(kāi)始執(zhí)行用戶程序;按STEP鍵,從0000H開(kāi)始單步執(zhí)行用戶程序;按TV鍵,進(jìn)入TV屏幕態(tài),顯示器全暗。待命狀態(tài)1在本狀態(tài)下,顯示器顯示一到四位數(shù),數(shù)字之間沒(méi)有間隔。若顯示四位數(shù)字,則第一位會(huì)不斷閃動(dòng),在待命狀態(tài)0按數(shù)字鍵,本機(jī)便進(jìn)入待命狀態(tài)1。在待命狀態(tài)1時(shí),可進(jìn)入的操作有:按ME鍵,進(jìn)入存儲(chǔ)器的讀寫(xiě)狀態(tài);按RG鍵,進(jìn)入寄存器讀寫(xiě)、特殊功能寄存器檢查、8032內(nèi)部RAM區(qū)讀寫(xiě)狀態(tài);按F1鍵,進(jìn)入標(biāo)志態(tài),出現(xiàn)閃動(dòng)的“「”表示首址;按F2鍵,進(jìn)入標(biāo)志態(tài),出現(xiàn)閃動(dòng)的“」”表示末址;按RW鍵,進(jìn)入外部數(shù)據(jù)存儲(chǔ)器/口讀寫(xiě)操作、片內(nèi)RAM80H~FFH讀寫(xiě)狀態(tài);按EX鍵,從顯示地址開(kāi)始連續(xù)執(zhí)行用戶程序;按STEP鍵,從顯示地址開(kāi)始單步執(zhí)行用戶程序;按MON鍵,返回待命狀態(tài)0。存儲(chǔ)器讀寫(xiě)狀態(tài)在狀態(tài)1時(shí)按ME鍵,或當(dāng)執(zhí)行用戶程序時(shí)遇到斷點(diǎn)、單步執(zhí)行、EPROM編程寫(xiě)入出錯(cuò)等都會(huì)使實(shí)驗(yàn)系統(tǒng)進(jìn)入該狀態(tài),本狀態(tài)可進(jìn)入如下操作:按FS鍵,進(jìn)入相對(duì)偏移量計(jì)算;按DL鍵,進(jìn)行刪除操作,按鍵一次刪除一字節(jié);按IS鍵,進(jìn)行插入操作,按鍵一次插入一字節(jié);按LS鍵,進(jìn)入上一字節(jié)讀寫(xiě)操作;按NX鍵,進(jìn)入下一字節(jié)讀寫(xiě)操作;按STEP鍵,以當(dāng)前顯示器內(nèi)容作為地址,按鍵一次執(zhí)行一條指令,即單步執(zhí)行用戶程序;按EX鍵,以當(dāng)前顯示器內(nèi)容作為起始地址,連續(xù)執(zhí)行用戶程序(若退出,應(yīng)按RESET復(fù)位按鈕);按MON鍵,返回待命狀態(tài)0(按EX鍵后,該命令無(wú)效)。寄存器讀寫(xiě)狀態(tài)即在待命狀態(tài)1,按RG鍵,可進(jìn)入如下操作:鍵入1位地址,進(jìn)入當(dāng)前工作寄存器讀寫(xiě)/檢查狀態(tài):顯示代號(hào)0~7,讀寫(xiě)當(dāng)前工作寄存器R0~R7;顯示代號(hào)8或9,檢查數(shù)據(jù)指針DPTR,8顯示DPL,9顯示DPH;顯示代號(hào)A,檢查累加器A的內(nèi)容;顯示代號(hào)B,檢查B寄存器的內(nèi)容;顯示代號(hào)C,檢查程序狀態(tài)字PSW的內(nèi)容;顯示代號(hào)D,檢查堆棧指針SP的內(nèi)容,開(kāi)機(jī)復(fù)位后SP為07H;顯示代號(hào)E或F,檢查當(dāng)前PC值,E顯示PCL,F(xiàn)顯示PCH;鍵入2位地址,進(jìn)入以下操作:片內(nèi)RAM區(qū)的檢查、修改;特殊功能寄存器的檢查、修改;按LS鍵,讀寫(xiě)上一字節(jié)內(nèi)容;按NX鍵,讀寫(xiě)下一字節(jié)內(nèi)容;按MON鍵,返回待命狀態(tài)0。外部數(shù)據(jù)存儲(chǔ)器讀寫(xiě)狀態(tài)即在待命狀態(tài)1,按RW鍵,可進(jìn)入如下操作:鍵入2位地址,讀寫(xiě)8032片內(nèi)RAM80H~FFH內(nèi)容;鍵入4位地址,外部數(shù)據(jù)存儲(chǔ)器讀寫(xiě),I/O讀寫(xiě);按LS鍵,讀寫(xiě)上一字節(jié)內(nèi)容;按NX鍵,讀寫(xiě)下一字節(jié)內(nèi)容;按MON,返回待命狀態(tài)0。標(biāo)志態(tài)——F(i)態(tài)在待命狀態(tài)1,即按數(shù)字鍵后,再按F1鍵,本機(jī)便進(jìn)入標(biāo)志態(tài),標(biāo)志態(tài)功能特別強(qiáng)。F1鍵功能:裝入源程序首址,即把當(dāng)前顯示器內(nèi)容作為源程序首址,并顯示閃動(dòng)“「”標(biāo)志符。F2鍵功能:裝入源程序末址,即把當(dāng)前顯示器內(nèi)容作為源程序末址,并顯示閃動(dòng)的“」”標(biāo)志符。在“」”狀態(tài)下,再鍵入的數(shù),便是目標(biāo)首址;F標(biāo)志態(tài)可進(jìn)入的操作:按MOVE鍵,進(jìn)入程序/數(shù)據(jù)塊移動(dòng),其傳送方向由初態(tài)決定。在“P……”,實(shí)驗(yàn)系統(tǒng)內(nèi)部000H~FEFFH空間內(nèi)部相互傳送。在“P……”態(tài),實(shí)驗(yàn)系統(tǒng)內(nèi)部數(shù)據(jù)/程序塊傳向外部用戶數(shù)據(jù)存儲(chǔ)空間。按COMP鍵,進(jìn)入程序比較,操作步驟如下:源首址,F(xiàn)1,源末址,F(xiàn)2目標(biāo)首址,COMP按EG鍵,進(jìn)入EPROM高速固化,操作步驟如下:源首址,F(xiàn)1,源末址,F(xiàn)2目標(biāo)首址,EG按EV鍵,把固化區(qū)程序搬到程序區(qū),其目標(biāo)有兩個(gè):在“P.”態(tài),固化內(nèi)容傳向本系統(tǒng)內(nèi)0000~FEFFH;在“P……”態(tài),固化區(qū)內(nèi)容傳向用戶系統(tǒng)數(shù)據(jù)區(qū)0000H~FFFFH空間。按EP鍵,實(shí)驗(yàn)系統(tǒng)內(nèi)部程序/數(shù)據(jù)或用戶系統(tǒng)程序/數(shù)據(jù)區(qū)與固化區(qū)比較,其方向確定同COMP鍵,操作步驟如下:源首址,F(xiàn)1,源末址,F(xiàn)2,目標(biāo)首址,EC按DAR鍵,進(jìn)入反匯編顯示,源地址有2個(gè),操作步驟如下:源首址,F(xiàn)1,源末址,F(xiàn)2,浮動(dòng)地址,DAR(浮動(dòng)地址可缺?。癙.”態(tài),機(jī)內(nèi)0000H~FFFFH,反匯編“H……”態(tài),進(jìn)入反匯編打印源首址,F(xiàn)1,源末址,F(xiàn)2,浮動(dòng)地址,PRT(浮動(dòng)地址可缺?。╂I盤(pán)監(jiān)控程序操作說(shuō)明復(fù)位命令——RESET鍵在任何時(shí)刻按復(fù)位鍵RESET,都會(huì)迫使實(shí)驗(yàn)系統(tǒng)進(jìn)入初始狀態(tài)(與通電復(fù)位作用一樣),在RST為高的第二個(gè)周期執(zhí)行內(nèi)部復(fù)位,并且在RST變低前每一個(gè)周期重復(fù)執(zhí)行內(nèi)部復(fù)位。△置用戶堆棧指針為07H△使8155、8255I/O接口片復(fù)位△使實(shí)驗(yàn)系統(tǒng)進(jìn)入待命狀態(tài)0接復(fù)位鍵不會(huì)改變用戶存儲(chǔ)區(qū)的內(nèi)容,也不會(huì)改變8032片內(nèi)RAM區(qū)的內(nèi)容及外部數(shù)據(jù)區(qū)的內(nèi)容。返回待命狀態(tài)—MON鍵按MON,可迫使實(shí)驗(yàn)系統(tǒng)進(jìn)入待命狀態(tài)。通常用MON鍵進(jìn)行以下操作:△清除已送入顯示器的數(shù)字;△退出其他操作。例如:退出存儲(chǔ)器讀寫(xiě)狀態(tài)、寄存器讀寫(xiě)狀態(tài)等;按MON鍵,不會(huì)影響用戶的存儲(chǔ)區(qū)、寄存器內(nèi)容。程序存儲(chǔ)器讀寫(xiě)命令—ME、NX、LS鍵這一組命令是用來(lái)檢查(讀出)或更改(寫(xiě)入)內(nèi)存單元,因此,可通過(guò)這些命令向?qū)嶒?yàn)系統(tǒng)送入程序和數(shù)據(jù)。先按MON鍵,使實(shí)驗(yàn)系統(tǒng)處于待命狀態(tài)0,然后送入4位表示要檢查的程序存儲(chǔ)器地址,再按ME存儲(chǔ)器讀寫(xiě)鍵,讀出該單元的內(nèi)容,實(shí)驗(yàn)系統(tǒng)便進(jìn)入存儲(chǔ)器讀寫(xiě)狀態(tài)。在程序存儲(chǔ)器讀寫(xiě)狀態(tài),顯示器左邊4位數(shù)字是內(nèi)存單元的地址,右邊2位是該單元的內(nèi)容。光標(biāo)(閃動(dòng)的數(shù)字)表示等待修改(寫(xiě)入)的數(shù)字。程序存儲(chǔ)器讀寫(xiě)狀態(tài)是鍵盤(pán)監(jiān)控的一種重要狀態(tài),這時(shí)多數(shù)命令鍵都具有待命狀態(tài)1不同的功能。請(qǐng)用戶注意:程序存儲(chǔ)讀寫(xiě)狀態(tài)的明顯標(biāo)志是:顯示6位數(shù)字,光標(biāo)在第五位或第六位閃動(dòng)。在程序存儲(chǔ)器讀寫(xiě)狀態(tài),名功能鍵的功能用以下?tīng)顟B(tài)表示。使用LS或NX鍵可以讀出上一個(gè)或下一個(gè)存儲(chǔ)單元,同時(shí)光標(biāo)自動(dòng)移動(dòng)到第五位。持續(xù)按LS或NX鍵在1秒以上,實(shí)驗(yàn)系統(tǒng)便開(kāi)始對(duì)內(nèi)存進(jìn)行向上或向下掃描,依次顯示各單元地址及內(nèi)容,可以快速檢查某一內(nèi)存區(qū)的內(nèi)容,或快速移動(dòng)到要檢查的單元,從而簡(jiǎn)化了操作。按MON鍵,可使實(shí)驗(yàn)系統(tǒng)退出存儲(chǔ)器讀寫(xiě)狀態(tài),返回待命狀態(tài)。下面舉例說(shuō)明操作規(guī)程:按鍵說(shuō)明MONTV40MEA8NX12LSMON待命狀態(tài)0。在待命狀態(tài)0,按TV/ME鍵,TV有效進(jìn)入屏幕系統(tǒng),顯示器全暗鍵入數(shù)字4,退出TV態(tài),返回P.鍵入數(shù)字0,進(jìn)入待命狀態(tài)1。待命狀態(tài)1,按ME鍵,進(jìn)入存儲(chǔ)器讀寫(xiě)狀態(tài),顯示0000H單元的內(nèi)容第五位數(shù)字閃動(dòng),表示此位可更改。按數(shù)字A,對(duì)0000H進(jìn)行寫(xiě)入,光標(biāo)移到第六位。按數(shù)字8,第六位被更改,光標(biāo)移回第五位。按NX鍵,讀出下一個(gè)單元0001H.輸入數(shù)字12,按1鍵,第五位被更改,光標(biāo)重新移到第六位。存儲(chǔ)器的讀寫(xiě)、特殊功能寄存器檢查、片內(nèi)RAM內(nèi)讀寫(xiě)命令——RG,NX,LX鍵:對(duì)寄存及部分特殊功能寄存器讀出,采用1位十六進(jìn)制作為寄存器代碼,片內(nèi)RAM、特殊功能寄存器用2位地址表示。代號(hào)存儲(chǔ)器代號(hào)存儲(chǔ)器代號(hào)存儲(chǔ)器0R000~~7F8032片內(nèi)RAMA0P21R1A8IE2R280P0B0P33R381SPB8IP4R482DPLD0PSW5R583DPHE0ACC6R687PCONF0B7R788TCON8DPL89TMOD9DPH8ATL0AACC8BTH0BB8CTL1CPSW8DTH1DSP90P1EPCL98SCONFPCH99SBUF寄存器讀寫(xiě)狀態(tài)的標(biāo)志是:顯示器上顯示3個(gè)數(shù)字,左邊第一位數(shù)字代表寄存器的代號(hào),右邊的2位數(shù)字代表該寄存器的內(nèi)容。光標(biāo)處于顯示器的第5位到第6位。若要對(duì)存儲(chǔ)器的內(nèi)容進(jìn)行改寫(xiě),可按相應(yīng)的數(shù)字鍵,光標(biāo)處于的數(shù)字即被更換,而光標(biāo)隨即往右移一位(若到了最右端,又重新回到起始位)。特殊功能寄存器檢查狀態(tài)標(biāo)志是:顯示器上顯示4個(gè)數(shù)字,左邊第一位、第二位數(shù)字代表寄存器地址,右邊的2位數(shù)字表示該寄存器的內(nèi)容,中間兩位是空格,光標(biāo)在第五位。片內(nèi)RAM區(qū)讀寫(xiě)狀態(tài)是:顯示器上顯示四個(gè)數(shù)字,左邊兩位是RAM區(qū)地址,右邊兩位是該地址的內(nèi)容,中間兩是空格。光標(biāo)處于第5位與第6位之間。若要對(duì)RAM區(qū)的內(nèi)容進(jìn)行改寫(xiě),可按所需的數(shù)字鍵,光標(biāo)所處的數(shù)字即被更換。按NX或LS鍵,可查看或改寫(xiě)下一或上一單元RAM區(qū)(按地址順序排列)的內(nèi)容。持續(xù)按LS或NX鍵的時(shí)間在1秒以上時(shí),可實(shí)現(xiàn)塊速查找。按MON鍵,可以從寄存器、RAM區(qū)讀寫(xiě)狀態(tài)返回待命狀態(tài)0。下面舉例說(shuō)明操作過(guò)程:按鍵顯示說(shuō)明MON0RG/FS12NXMON7FRG/FS12NX34P.0001P.7F7F7F8080XX12XXXX12XX34待命狀態(tài)0。要檢查R0寄存器,數(shù)字0是它的代號(hào)按RG鍵立即顯示R0的內(nèi)容,進(jìn)入寄存器讀寫(xiě)狀態(tài)。按數(shù)字鍵,光標(biāo)移動(dòng),更改寄存器R0的內(nèi)容。按NX鍵,自動(dòng)讀寫(xiě)出下一個(gè)寄存器,它的代號(hào)是1,光標(biāo)自動(dòng)移動(dòng)至第五位。返回待命狀態(tài)。送入RAM區(qū)地址。按RG鍵,進(jìn)入寄存器讀寫(xiě)狀態(tài),顯示以7F為地址的內(nèi)容XX,光標(biāo)在第五位。按數(shù)字鍵,7F為地址的內(nèi)容被更改,光標(biāo)回到第五位。按NX鍵,自動(dòng)讀出下一地址內(nèi)容,地址80為特殊功能寄存器。按數(shù)字鍵,寄存器內(nèi)容更改外部數(shù)據(jù)存儲(chǔ)器、內(nèi)部RAM讀寫(xiě)命令—RW、NX、LS鍵用RW鍵可以對(duì)片外數(shù)據(jù)存儲(chǔ)器、口或和、擴(kuò)展的外部8155RAM的256個(gè)字節(jié)的檢查(讀出)或更改(寫(xiě)入)。對(duì)內(nèi)部RAM讀寫(xiě),一般應(yīng)先按MON,使實(shí)驗(yàn)系統(tǒng)進(jìn)入待命狀態(tài)0。然后輸入所要訪問(wèn)的內(nèi)部RAM的地址,實(shí)驗(yàn)系統(tǒng)便進(jìn)入讀寫(xiě)狀態(tài)。外部數(shù)據(jù)存儲(chǔ)器讀寫(xiě)的狀態(tài)標(biāo)志是:顯示器上顯示6個(gè)數(shù)字,左邊4位數(shù)字是存儲(chǔ)單元地址,右邊2位是該單元的內(nèi)容,光標(biāo)在第五位與第六位之間,表示等待修改單元內(nèi)容。內(nèi)部RAM讀寫(xiě)的狀態(tài)標(biāo)志是:顯示器上顯示4個(gè)數(shù)字,左邊2位數(shù)字是RAM單元地址,右邊2位是該單元的內(nèi)容,光標(biāo)在第五位與第六位之間,表示等待修改單元內(nèi)容,中間2位是空格。下面舉例說(shuō)明操作過(guò)程:按鍵顯示說(shuō)明MONRW/IS100RW/IS12NXMONARW/IS2NXP.P.100100010001001P.AA0A0A1XX12XXXX12XX待命狀態(tài)0。待命狀態(tài)0,按RW/IS鍵無(wú)效。輸入100,進(jìn)入待命狀態(tài),第四位0可省略,但第三位0不能省略。按RW/IS鍵,顯示1000H數(shù)據(jù)單元內(nèi)容,第五位光標(biāo)閃動(dòng)。按12鍵,將內(nèi)容寫(xiě)入1000H數(shù)據(jù)單元。按NX鍵,讀出下一個(gè)單元1001H,光標(biāo)重新移到第五位。返回待命狀態(tài)0。送入數(shù)字A,進(jìn)入待命狀態(tài)1。RW/IS鍵有效,未送入的數(shù)字被認(rèn)為是0,顯示8032RAMA0H內(nèi)容。按數(shù)字鍵12,A0H地址單元的內(nèi)容被更改。按NX鍵,自動(dòng)讀出下一單元內(nèi)容。按NX或LS鍵,可查訪更改下一個(gè)或上一個(gè)單元的內(nèi)容。持續(xù)按LS或NX鍵的時(shí)間在1秒以上,可實(shí)現(xiàn)快速查找數(shù)據(jù)或RAM及口的內(nèi)容。按MON鍵,可使實(shí)驗(yàn)系統(tǒng)返回待命狀態(tài)0。在5103S上8155作為外部8位地址的數(shù)據(jù)RAM,地址為00H~FFH,I/O口地址。插入和刪除命令——IS、DL鍵這兩個(gè)命令的功能是在調(diào)試機(jī)器碼程序時(shí),在存儲(chǔ)程序的讀寫(xiě)存儲(chǔ)單元中插入或刪除某些指令或數(shù)據(jù),而不必重新裝整個(gè)程序,IS和DL的作用是互補(bǔ)的,對(duì)用戶極為方便。IS和DL鍵僅對(duì)存儲(chǔ)器讀寫(xiě)狀態(tài)有效,在其它狀態(tài),則具有其他功能。在存儲(chǔ)器讀寫(xiě)狀態(tài)按IS鍵,將使從現(xiàn)行地址開(kāi)始到XFFFH之間,所有單元的內(nèi)容都向下移動(dòng)一個(gè)字節(jié),XFFFH單元內(nèi)容被XFFEH單元內(nèi)容所代替,而XFFFH單元原來(lái)的內(nèi)容將溢出而丟失,每按一次IS鍵,即整個(gè)存儲(chǔ)區(qū)(移動(dòng)區(qū)末地址為XFFFH)移動(dòng)一個(gè)字節(jié)但顯示器上的地址不受影響,只不過(guò)顯示數(shù)據(jù)的顯示器這時(shí)應(yīng)顯示為00,自第一次按IS鍵后,緊跟著不管以后按多少次IS鍵,顯示器都不受影響,但數(shù)據(jù)移動(dòng)的字節(jié)數(shù)和按IS鍵的次數(shù)一致,也和被清零的單元一致?!鳛榱丝s小插入,刪除的影響范圍,做到快速工作,本實(shí)驗(yàn)系統(tǒng)設(shè)定移動(dòng)范圍劃分為8個(gè)區(qū)域:0000H~1FFFH2000H~3FFFH4000H~5FFFH6000H~7FFFH8000H~9FFFHA000H~BFFFHC000H~DFFFHE000H~FFFFH例:在0000H~1FFFH中插入、刪除,不影響2000H以上單元;在6000H~7FFFH中插入刪除,不影響上下區(qū)單元地內(nèi)容?!髟贔2態(tài)情況下:即輸入數(shù)字后按F2,則顯示器上顯示的內(nèi)容為末址。例:若規(guī)定到0FFFH,則插入、刪除時(shí)不影響1000H以上單元內(nèi)容,這對(duì)修改程序帶來(lái)極大的方便。下面舉例說(shuō)明IS鍵的操作過(guò)程:若源程序0010H后的內(nèi)容為10111213,1FFFH后的內(nèi)容為FEFF0001。我們要求在0010后插入AA,BB兩字節(jié),也就是要把0010H單元后的內(nèi)容后移兩個(gè)字節(jié),以便裝入這兩字節(jié)內(nèi)容,其操作如下:按鍵顯示說(shuō)明MON0011MEP.0011001111待命狀態(tài)0.送入地址0011H。送入存儲(chǔ)器讀寫(xiě)狀態(tài)。然后在0011H按兩次IS鍵,將0011H和0012H兩單元清零,原0011H單元內(nèi)容往后移動(dòng),如下所示:未按IS時(shí)第一次按IS時(shí)第二次按IS時(shí)顯示001010001010001010001111001100001100001212001211001200001313001312001311001414001413001412現(xiàn)在便可向0011H和0012H單元,裝入AA和BB兩字節(jié)了。刪除命令鍵DLDL刪除命令鍵的作用與IS鍵相似,只是內(nèi)存中數(shù)據(jù)塊移動(dòng)方向與IS鍵相反。IS鍵是增址移動(dòng),DL鍵是減址移動(dòng)。每按一次DL鍵,便從現(xiàn)行地址到XFFFH間所以存儲(chǔ)的內(nèi)容減址移動(dòng)一字節(jié),現(xiàn)行地址單元的內(nèi)容被現(xiàn)行地址+1單元的內(nèi)容所代替,而XFFFH單元被自動(dòng)補(bǔ)零。同樣可用DL鍵刪除0011H和0012H單元的內(nèi)容,操作如下:未按DL時(shí)第一次按DL時(shí)第二次按DL時(shí)顯示0010100010100010100011AA0011BB0011110012BB001211001212001311001312001313001412001413001414由上所述,IS和DL命令鍵,對(duì)內(nèi)存是有影響的,所以操作時(shí)應(yīng)注意,不要隨意按。如果誤按了一次IS鍵,則應(yīng)立即按一次DL鍵(不要持續(xù)按),就可以補(bǔ)救,但原來(lái)在末址單元的數(shù)據(jù)被丟失了,這點(diǎn)請(qǐng)注意!反之,如果錯(cuò)按了一次DL鍵,則應(yīng)立即按一次IS鍵,再將原來(lái)的內(nèi)容裝入,現(xiàn)場(chǎng)就恢復(fù)了。執(zhí)行程序命令——EX鍵執(zhí)行鍵EX在待命0,待命狀態(tài)1和存儲(chǔ)器寫(xiě)狀態(tài)時(shí)有效。在待命狀態(tài)0顯示一個(gè)閃動(dòng)“P.”按EX鍵,實(shí)驗(yàn)系統(tǒng)將按照用戶0000H的地址開(kāi)始執(zhí)行程序;顯示器顯示“「”執(zhí)行標(biāo)記。在待命狀態(tài)1(送入數(shù)字后的狀態(tài),數(shù)字后的0可省略),則按顯示器上地址執(zhí)行程序;在待命寫(xiě)狀態(tài),按顯示器的現(xiàn)行地址執(zhí)行程序。在其它狀態(tài),EX鍵無(wú)效。用EX鍵執(zhí)行用戶程序,在程序中遇到斷點(diǎn)時(shí)會(huì)停下來(lái),并保護(hù)所有的寄存器,顯示斷點(diǎn)地址和該單元內(nèi)容,并返回待命狀態(tài)1。這時(shí)EX鍵作為斷點(diǎn)運(yùn)行鍵。例1:輸入FFC1,再按EX鍵,則執(zhí)行“8”字循環(huán)程序。例2:把上例中的“8”字循環(huán)程序移到以0000H為首址的內(nèi)存:先在待命狀態(tài)0,輸入源首址FFC1H,后按F1標(biāo)志鍵,再輸入源末址FFD2H,接著按F2標(biāo)志鍵,再輸入目標(biāo)首址0000H,然后按MOVE鍵,則程序已移到以0000H為首址的內(nèi)存,并返回待命狀態(tài)0。按EX鍵,LED上顯示“8”單步執(zhí)行鍵——STEP鍵單步執(zhí)行鍵在待命狀態(tài)0,待命狀態(tài)1和存儲(chǔ)器讀寫(xiě)狀態(tài)時(shí)有效.在待命狀態(tài)1,則按顯示器上的地址單步執(zhí)行;在存儲(chǔ)器讀寫(xiě)狀態(tài),按現(xiàn)行地址執(zhí)行。按STEP鍵,實(shí)驗(yàn)系統(tǒng)將依據(jù)上述三種情況,執(zhí)行一條用戶指令,續(xù)而顯示PC和它的內(nèi)容,進(jìn)入待命狀態(tài)1,等待下一個(gè)命令。以下舉例說(shuō)明:(也可以“8”字循環(huán)為例。)2000E4START: CLRA20011120START1:ACALLDELAY200380FCSJMPSTART120207A02DELAY:MOVR2,#02H2022DAFEDELAY1:DJNZDELAY1202404INCA202522RET持續(xù)按單步鍵1秒以上,實(shí)驗(yàn)系統(tǒng)就進(jìn)入跟蹤執(zhí)行狀態(tài),以每分鐘500條指令的速度執(zhí)行用戶程序,同時(shí)顯示程序的執(zhí)行地址和此地址單元中的內(nèi)容,因此可以監(jiān)視程序的運(yùn)行路線,在松開(kāi)按鍵時(shí),便立即停止跟蹤,此時(shí)顯示器前四位為中止時(shí)的PC值,后兩位為PC值所示地址的內(nèi)容,并返回待命狀態(tài)1。查看累加器A的內(nèi)容可得到循環(huán)的次數(shù),這對(duì)檢查延時(shí)循環(huán)程序特別有效。按ME鍵,便進(jìn)入存儲(chǔ)器讀寫(xiě)狀態(tài)。按MON鍵,返回到待命狀態(tài)0。單步命令不會(huì)影響已設(shè)置的斷點(diǎn)。全速斷點(diǎn)運(yùn)行——FV鍵本機(jī)提供了斷點(diǎn)方式運(yùn)行ROM中的程序,為用戶提供了檢測(cè)用戶CPU定時(shí)響應(yīng)中斷的速度或定時(shí)精度提供了方便,全速斷點(diǎn)運(yùn)行方式不適合于運(yùn)行用戶樣機(jī)內(nèi)EPROM中的程序,操作方法為:先送入斷點(diǎn)地址,按下設(shè)置斷點(diǎn)鍵F1,再按FV鍵,延時(shí)在這里就看不出來(lái)了,因?yàn)槭侨龠\(yùn)行,遇到斷點(diǎn)停下來(lái)。運(yùn)行的操作規(guī)程如下:按鍵顯示說(shuō)明RESET000F10000FVMONP.000F「00000000P.XX返回監(jiān)控。輸入斷點(diǎn)地址。F1標(biāo)志。輸入執(zhí)行首址。按斷點(diǎn)運(yùn)行命令鍵。遇見(jiàn)斷點(diǎn)后可以再設(shè)斷點(diǎn),再按下FV;也可以返回監(jiān)控測(cè)試現(xiàn)場(chǎng),單步運(yùn)行用戶程序。這樣幾種運(yùn)行方式交叉使用,加快程序的調(diào)試速度,若斷點(diǎn)設(shè)置不正確或用戶系統(tǒng)硬件、軟件有故障,除按復(fù)位鍵外,其它鍵不會(huì)使實(shí)驗(yàn)系統(tǒng)返回鍵控,復(fù)位后,還會(huì)保持用戶8032RAM現(xiàn)場(chǎng)和I/O擴(kuò)展口現(xiàn)場(chǎng),但設(shè)置斷點(diǎn)處的原內(nèi)容被破壞,用戶需予以恢復(fù)。例3:在例2中000FH設(shè)斷點(diǎn),執(zhí)行全速斷點(diǎn)運(yùn)行,操作如下:在待命狀態(tài)0,輸入000F再按F1標(biāo)志鍵,然后輸入執(zhí)行首址0(后三個(gè)0可?。?,再按FV鍵,則程序運(yùn)行到000FH地址停下。并顯示000FH及該單元內(nèi)容“23”,說(shuō)明000FH計(jì)算機(jī)對(duì)轉(zhuǎn)移偏移量——FS鍵FS鍵命令的功能是用來(lái)計(jì)算MCS—51指令系統(tǒng)中相對(duì)轉(zhuǎn)移指令的操作數(shù)——偏移量。FS命令只在存儲(chǔ)器讀寫(xiě)狀態(tài)有效。先在需要填入偏移量的單元上填入所要轉(zhuǎn)移的(目標(biāo))地址的低字節(jié),然后按FS鍵,該單元的內(nèi)容立即轉(zhuǎn)變成所要求的偏轉(zhuǎn)量,也就是自動(dòng)將偏移量填入,這時(shí)實(shí)驗(yàn)系統(tǒng)仍處于存儲(chǔ)器讀寫(xiě)狀態(tài),用戶可直接繼續(xù)往下送入程序。下列舉例說(shuō)明操作過(guò)程:000080FESJMP0000H按鍵顯示說(shuō)明MON0ME80NX/00FSP.00000XX0000800001000001FE待命狀態(tài)0按ME輸入第一個(gè)機(jī)器碼送入轉(zhuǎn)移目標(biāo)地址的低位字節(jié)00按FS,自動(dòng)填入偏移量FE使用FS命令鍵進(jìn)行偏移量的計(jì)算,因注意跳轉(zhuǎn)“出界”的問(wèn)題。當(dāng)偏移量計(jì)算結(jié)果大7FH(+127)說(shuō)明是往回跳轉(zhuǎn)(減址),否則是往前跳轉(zhuǎn)(增址)。MCS-51系列單片機(jī)實(shí)驗(yàn)實(shí)驗(yàn)一單片機(jī)實(shí)驗(yàn)箱的操作使用實(shí)驗(yàn)?zāi)康恼莆諏?shí)驗(yàn)系統(tǒng)使用的基本方法。學(xué)習(xí)最基本的程序設(shè)計(jì)方法和手工匯編方法。實(shí)驗(yàn)內(nèi)容學(xué)習(xí)DICE-5103H單片機(jī)實(shí)驗(yàn)系統(tǒng)的基本操作使用。調(diào)試清零程序:將外部數(shù)據(jù)存儲(chǔ)器2000H-20FFH單元的內(nèi)容清零。預(yù)習(xí)要求仔細(xì)閱讀實(shí)驗(yàn)講義第一章中的有關(guān)內(nèi)容??炊辶愠绦蛑忻恳粭l指令的作用,并學(xué)會(huì)手工匯編每一條指令。分析判斷出各條指令執(zhí)行后的結(jié)果,并將你的判斷寫(xiě)在預(yù)習(xí)報(bào)告中。實(shí)驗(yàn)要求仔細(xì)閱讀實(shí)驗(yàn)講義第一章中的有關(guān)內(nèi)容并進(jìn)行實(shí)際操作。用全速運(yùn)行方式運(yùn)行清零程序,檢查2000H-20FFH單元中執(zhí)行程序前后的內(nèi)容變化。認(rèn)真填寫(xiě)實(shí)驗(yàn)報(bào)告(參考講義附錄)。實(shí)驗(yàn)步驟中,要求簡(jiǎn)要寫(xiě)出使用實(shí)驗(yàn)箱進(jìn)行實(shí)驗(yàn)的過(guò)程。實(shí)驗(yàn)步驟開(kāi)啟實(shí)驗(yàn)系統(tǒng)打開(kāi)實(shí)驗(yàn)箱;取出電源線并插好;打開(kāi)實(shí)驗(yàn)箱電源;實(shí)驗(yàn)箱顯示器最左端顯示一個(gè)閃動(dòng)的“P.”提示符,表示實(shí)驗(yàn)系統(tǒng)處于初始化狀態(tài),等待用戶操作。實(shí)驗(yàn)系統(tǒng)的基本操作練習(xí)參考實(shí)驗(yàn)講義第一章的內(nèi)容,進(jìn)行實(shí)驗(yàn)系統(tǒng)的基本操作練習(xí)。學(xué)習(xí):程序存儲(chǔ)器的讀寫(xiě);片內(nèi)RAM、特殊功能寄存器的讀寫(xiě);片外RAM的讀寫(xiě);在存儲(chǔ)器單元中插入和刪除數(shù)據(jù);全速方式運(yùn)行程序;單步方式運(yùn)行程序;斷點(diǎn)方式運(yùn)行程序;計(jì)算相對(duì)轉(zhuǎn)移偏移量。運(yùn)行清零程序?qū)⑾旅媲辶愠绦虻臋C(jī)器碼寫(xiě)入0640H單元開(kāi)始的程序存儲(chǔ)器中。 ORG0640H06407800SE01: MOVR0,#00H0642902000 MOVDPTR,#2000H0645E4 LOO1: CLRA0646F0 MOVX@DPTR,A0647A3 INCDPTR064808 INCR00649B800F9 CJNER0,#00H,LOO1064C80FE LOOP:SJMPLOOP END在片外RAM2000H-20FFH單元中寫(xiě)入一些不為零的數(shù)據(jù),做好紀(jì)錄。(1FFFH)=;(2000H)=;(2001H)=;……(20FEH)=;(20FFH)=;(2100H)=。用全速運(yùn)行方式運(yùn)行清零程序,檢查程序運(yùn)行后2000H-20FFH單元中內(nèi)容的變化情況,并做好紀(jì)錄。(1FFFH)=;(2000H)=;(2001H)=;……(20FEH)=;(20FFH)=;(2100H)=。思考題假如要把2000H-20FFH單元中的內(nèi)容改成FFH,應(yīng)如何修改程序?實(shí)驗(yàn)二拆字實(shí)驗(yàn)實(shí)驗(yàn)?zāi)康恼莆諈R編語(yǔ)言程序設(shè)計(jì)。掌握手工匯編和程序調(diào)試的方法。實(shí)驗(yàn)內(nèi)容編寫(xiě)并調(diào)試程序:把外部數(shù)據(jù)存儲(chǔ)器2000H的高位(高半字節(jié))和低位(低半字節(jié))拆開(kāi),高位送2001H單元的低位,低位送2002H單元的低位。2001H、2002H單元的高半字節(jié)清零。預(yù)習(xí)要求訪問(wèn)外部數(shù)據(jù)存儲(chǔ)器采用什么指令?將其寫(xiě)在預(yù)習(xí)報(bào)告上。編寫(xiě)并匯編拆字程序。想出一種以上用于調(diào)試自己程序的調(diào)試方法,并將其寫(xiě)在預(yù)習(xí)報(bào)告中。實(shí)驗(yàn)要求調(diào)試自己編寫(xiě)的拼字程序。認(rèn)真填寫(xiě)實(shí)驗(yàn)報(bào)告。實(shí)驗(yàn)步驟開(kāi)啟實(shí)驗(yàn)系統(tǒng)參考實(shí)驗(yàn)一。程序的輸入將預(yù)習(xí)時(shí)匯編好的拆字程序的機(jī)器碼輸入到程序存儲(chǔ)器中。調(diào)試程序調(diào)試程序就是通過(guò)運(yùn)行程序來(lái)判斷自己編寫(xiě)的程序是否正確,若不正確則找出錯(cuò)誤加以修改,直到正確為止。在實(shí)驗(yàn)一中學(xué)過(guò)的全速執(zhí)行、單步執(zhí)行、設(shè)置斷點(diǎn)后全速運(yùn)行等是調(diào)試程序的基本手段,調(diào)試程序時(shí),同學(xué)們應(yīng)當(dāng)充分發(fā)揮自己的聰明才智,創(chuàng)造性地、靈活地運(yùn)用這些手段來(lái)調(diào)好自己的程序。下面僅僅給出用全速執(zhí)行調(diào)試程序的方法,同學(xué)們還可以用其他的方法來(lái)調(diào)試。在外部數(shù)據(jù)存儲(chǔ)器2000H、2001H、2002H中寫(xiě)入適當(dāng)?shù)臄?shù)據(jù),并將其記錄下來(lái)(注意:這些值是16進(jìn)制的,數(shù)值后應(yīng)加上后綴H):(2000H)=;(2001H)=;(2002H)=。輸入源程序首地址,再按EX鍵,則執(zhí)行拆字程序。運(yùn)行完程序時(shí),查看外部數(shù)據(jù)存儲(chǔ)器2000H、2001H、2002H單元中的數(shù)據(jù),并將其記錄下來(lái):(2000H)=;(2001H)=;(2002H)=。分析此數(shù)據(jù),判斷自己編寫(xiě)的程序是否正確。如果程序不正確,分析錯(cuò)在哪里,并修改程序后再進(jìn)行調(diào)試。修改存儲(chǔ)單元的內(nèi)容,再次運(yùn)行源程序。把外部數(shù)據(jù)存儲(chǔ)器2000H單元的內(nèi)容改為A5H,運(yùn)行完程序時(shí),將2000H、2001H、2002H單元中的數(shù)據(jù)記錄下來(lái):(2000H)=;(2001H)=;(2002H)=。用其他方法調(diào)試程序用自己想出的調(diào)試方法調(diào)試程序,將調(diào)試過(guò)程寫(xiě)在實(shí)驗(yàn)報(bào)告中。思考題80C51指令集中有無(wú)“程序結(jié)束”指令?上機(jī)調(diào)試時(shí)你是怎樣實(shí)現(xiàn)“程序結(jié)束”功能?實(shí)驗(yàn)三拼字實(shí)驗(yàn)實(shí)驗(yàn)?zāi)康恼莆諈R編語(yǔ)言程序設(shè)計(jì)和調(diào)試方法。學(xué)習(xí)Win51仿真軟件的基本使用方法。實(shí)驗(yàn)內(nèi)容編寫(xiě)并調(diào)試程序:把外部數(shù)據(jù)存儲(chǔ)器2000H、2001H單元的低位(即低半字節(jié))合并成一個(gè)字節(jié)(2000H、2001H單元的低位分別位于低半字節(jié)和高半字節(jié)),然后將其送入2002H單元。預(yù)習(xí)要求我們學(xué)過(guò)的“原地踏步”指令是怎樣的?將其寫(xiě)在預(yù)習(xí)報(bào)告上;編寫(xiě)拼字程序;想出一種以上用于調(diào)試自己程序的調(diào)試方法,并將其寫(xiě)在預(yù)習(xí)報(bào)告中。實(shí)驗(yàn)要求用Win51仿真軟件調(diào)試自己編寫(xiě)的拼字程序;認(rèn)真填寫(xiě)實(shí)驗(yàn)報(bào)告。實(shí)驗(yàn)步驟開(kāi)啟實(shí)驗(yàn)系統(tǒng)打開(kāi)實(shí)驗(yàn)箱,取出電源線并插好;取出串口電纜線,將串口插頭插在計(jì)算機(jī)后面串口上,另一頭插在實(shí)驗(yàn)箱右上方標(biāo)有“CZ1”的九孔插座上;打開(kāi)實(shí)驗(yàn)箱電源;打開(kāi)計(jì)算機(jī)電源;Win51仿真軟件啟動(dòng)和聯(lián)機(jī)雙擊桌面上Win51仿真軟件的圖標(biāo),屏幕顯示W(wǎng)in51仿真軟件的源文件窗口,中間顯示版本信息,此時(shí)右下方狀態(tài)欄顯示“脫機(jī)就緒”。單擊屏幕中間的“OK”按鈕,狀態(tài)欄中由“脫機(jī)就緒”變成“聯(lián)機(jī)就緒”,說(shuō)明聯(lián)機(jī)成功。若對(duì)話框提示:“單片機(jī)未連上”,此時(shí)應(yīng)依次單擊菜單欄:“O設(shè)置、P通訊口設(shè)定、COM1”確定,將通訊口設(shè)為COM1,然后退出Win51仿真軟件,再重新啟動(dòng)Win51匯編語(yǔ)言源程序的輸入單擊:“F文件、N建立新文件”,將預(yù)習(xí)時(shí)編寫(xiě)的拼字程序輸入,輸入程序時(shí),有時(shí)難免會(huì)輸錯(cuò)一些字母、數(shù)字,甚至輸漏了一些指令。很常見(jiàn)的錯(cuò)誤是把數(shù)字0輸成了字母O,如把R0輸成RO,P0輸成PO,#0FH輸成#OFH,所以輸完程序后一定要仔細(xì)核對(duì)一遍。程序的開(kāi)頭要有一條偽指令ORG,末尾要有一條偽指令END。(注意:END后按回車(chē)即可,不能有空行,否則在編譯時(shí)將提示END處出錯(cuò)誤。)輸入完成后將程序統(tǒng)一保存在D:\stu文件夾中,保存時(shí)用.ASM為擴(kuò)展名。接下去我們先根據(jù)要調(diào)試的程序設(shè)置數(shù)據(jù)類(lèi)型(如本程序中可單擊:“O設(shè)置、D數(shù)據(jù)類(lèi)型選擇、RAMDATA”確定,將數(shù)據(jù)類(lèi)型設(shè)置為RAMDATA),再對(duì)匯編語(yǔ)言程序進(jìn)行編譯,編譯的主要作用是將匯編語(yǔ)言轉(zhuǎn)換成單片機(jī)能夠認(rèn)識(shí)和執(zhí)行的用二進(jìn)制數(shù)表示的機(jī)器語(yǔ)言。如果前面輸入程序時(shí)輸錯(cuò)了一些字符,則編譯后,屏幕上會(huì)給出出錯(cuò)的提示,如顯示“編譯:1個(gè)錯(cuò)誤”,錯(cuò)誤信息欄中顯示“ERROR#1,LINE#9”,這是告訴你程序中有1個(gè)地方字符有錯(cuò),而且錯(cuò)誤位于程序中第9行。這時(shí)要修改錯(cuò)誤后再重新編譯,直到屏幕最上顯示“編譯:0個(gè)錯(cuò)誤”調(diào)試程序*調(diào)試程序的基本手段調(diào)試軟件Win51提供了多種運(yùn)行程序的方式或調(diào)試程序的手段,常用的有全速運(yùn)行、單步執(zhí)行、跟蹤執(zhí)行和設(shè)置斷點(diǎn)運(yùn)行等幾種。(1)全速運(yùn)行全速執(zhí)行,單片機(jī)是一條接一條連續(xù)不斷地執(zhí)行指令。在全速運(yùn)行狀態(tài)下,單片機(jī)是連續(xù)不斷地在執(zhí)行指令,由于執(zhí)行一條指令所需要的時(shí)間只有幾微秒,所以我們是看不出單片機(jī)正在執(zhí)行哪一條指令的。若想中止程序運(yùn)行,可點(diǎn)擊一下工具欄上的“停止執(zhí)行”按鈕。對(duì)于調(diào)試順序結(jié)構(gòu)和分支結(jié)構(gòu)的程序,比如算術(shù)運(yùn)算程序,全速運(yùn)行方式效率較高,可以很快將全部程序運(yùn)行一遍,并能立刻得到程序的運(yùn)行結(jié)果。但是采用這種調(diào)試手段,不便于及時(shí)了解每一條指令的運(yùn)行情況。(2)單步執(zhí)行單步執(zhí)行程序是每次只執(zhí)行一條指令就停下來(lái),此時(shí)可以觀察窗口中寄存器和變量值的變化情況。因此,采用單步運(yùn)行方式,不僅可以及時(shí)地了解程序的運(yùn)行狀態(tài),還能很好地控制程序的運(yùn)行過(guò)程。但是,單步運(yùn)行方式效率較低,尤其是對(duì)于調(diào)試長(zhǎng)程序和循環(huán)程序。程序的單步運(yùn)行方式與連續(xù)運(yùn)行方式具有很強(qiáng)的互補(bǔ)性。(3)跟蹤執(zhí)行單步執(zhí)行和跟蹤執(zhí)行都是每次執(zhí)行一條指令。它們的區(qū)別是:遇到子程序時(shí),跟蹤方式能進(jìn)入子程序,而單步執(zhí)行則不能跟蹤進(jìn)子程序。以實(shí)驗(yàn)四的程序?yàn)槔?,若使用跟蹤?zhí)行,則執(zhí)行調(diào)用子程序的指令LCALLDELAY后,能進(jìn)入DELAY子程序,而單步執(zhí)行則不能進(jìn)入。同學(xué)們可以分別使用跟蹤執(zhí)行和單步執(zhí)行,觀察在執(zhí)行調(diào)用子程序的指令LCALLDELAY后有什么不同。(4)斷點(diǎn)的設(shè)置和清除要在某一條指令上設(shè)置斷點(diǎn),方法是:用鼠標(biāo)點(diǎn)擊該指令,使光標(biāo)落在該指令上,然后選“調(diào)試\設(shè)置斷點(diǎn)”命令,則該指令處出現(xiàn)紅色亮條,表示在該指令處設(shè)置了斷點(diǎn)。若選“調(diào)試\清除斷點(diǎn)”命令,則清除已設(shè)置的斷點(diǎn)。設(shè)置斷點(diǎn)后全速運(yùn)行程序也是調(diào)試程序的一種常用手段,全速運(yùn)行時(shí)遇到用戶設(shè)置的斷點(diǎn),程序會(huì)停在斷點(diǎn)處,這時(shí)可通過(guò)觀察寄存器和變量的值,判斷自己編寫(xiě)的程序是否有錯(cuò),錯(cuò)在哪里。調(diào)試程序時(shí),同學(xué)們應(yīng)當(dāng)靈活地運(yùn)用上述各種基本手段,才能又快又好地調(diào)好自己的程序。下面給出單步執(zhí)行調(diào)試程序的方法,同學(xué)們還可以用其他的方法來(lái)調(diào)試。查看外部數(shù)據(jù)存儲(chǔ)器2000H、2001H、2002H單元的內(nèi)容在屏幕左下方隨機(jī)存儲(chǔ)器數(shù)據(jù)窗口中單擊鼠標(biāo)后按回車(chē),出現(xiàn)一對(duì)話框,在其中輸入地址2000、確定,就列出了從地址2000H開(kāi)始的外部數(shù)據(jù)存儲(chǔ)器中的內(nèi)容,查看存儲(chǔ)器窗口中2000H、2001H、2002H單元中的數(shù)據(jù),將其記錄下來(lái)(注意:這些值是16進(jìn)制的,數(shù)值后應(yīng)加上后綴H):(2000H)=;(2001H)=;(2002H)=。單步執(zhí)行程序在具欄上選“調(diào)試\單步執(zhí)行”命令,從第一條指令開(kāi)始單步運(yùn)行程序,每執(zhí)行一條指令后都觀察寄存器窗口中ACC、B、DPTR中數(shù)值的變化,同時(shí)注意觀察隨機(jī)存儲(chǔ)器數(shù)據(jù)窗口中2000H、2001H、2002H單元中數(shù)值的變化。運(yùn)行完程序時(shí),將2000H、2001H、2002H單元中的數(shù)據(jù)記錄下來(lái):(2000H)=;(2001H)=;(2002H)=。分析此數(shù)據(jù),判斷自己編寫(xiě)的程序是否正確。如果程序不正確,分析錯(cuò)在哪里,并打開(kāi)程序加以修改后再進(jìn)行調(diào)試。修改存儲(chǔ)單元的內(nèi)容重新打開(kāi)程序進(jìn)行編譯,把外部數(shù)據(jù)存儲(chǔ)器2000H、2001H單元的內(nèi)容分別改為AAH、55H,再?gòu)牡谝粭l指令開(kāi)始單步運(yùn)行程序,觀察寄存器窗口中ACC、B、DPTR中數(shù)值的變化,同時(shí)注意2000H、2001H、2002H單元中數(shù)值的變化。運(yùn)行完程序時(shí),將2000H、2001H、2002H單元中的數(shù)據(jù)記錄下來(lái):(2000H)=;(2001H)=;(2002H)=。用其他方法調(diào)試程序用自己想出的調(diào)試方法調(diào)試程序,將調(diào)試過(guò)程寫(xiě)在實(shí)驗(yàn)報(bào)告中。實(shí)驗(yàn)四P1口實(shí)驗(yàn)(一)實(shí)驗(yàn)?zāi)康膶W(xué)習(xí)P1口的輸出方法。學(xué)習(xí)延時(shí)子程序的編寫(xiě)和使用。實(shí)驗(yàn)內(nèi)容P1口做輸出口,接8個(gè)發(fā)光二極管(LED),編寫(xiě)程序,使8個(gè)LED循環(huán)點(diǎn)亮。預(yù)習(xí)要求根據(jù)圖2-1,要使P1.0所接的發(fā)光二極管L1亮可以用什么指令?將其寫(xiě)在預(yù)習(xí)報(bào)告中。編寫(xiě)本實(shí)驗(yàn)的程序。編寫(xiě)思考題中的程序。實(shí)驗(yàn)要求調(diào)試自己編寫(xiě)的程序。認(rèn)真填寫(xiě)實(shí)驗(yàn)報(bào)告。實(shí)驗(yàn)說(shuō)明流水燈是一種常見(jiàn)的裝飾,常見(jiàn)于舞臺(tái)等場(chǎng)合,最簡(jiǎn)單的流水燈就是各個(gè)燈依次發(fā)光。本實(shí)驗(yàn)實(shí)際上就是用單片機(jī)來(lái)實(shí)現(xiàn)流水燈。圖2-1中,P1口的每一位都接有一個(gè)LED,要實(shí)現(xiàn)流水燈功能,可以先讓接在P1.0上的發(fā)光二極管(L1)點(diǎn)亮,亮一秒后熄滅,然后再點(diǎn)亮接在P1.1上的發(fā)光二極管(L2),亮一秒后熄滅,如此下去8個(gè)LED依次點(diǎn)亮一遍后又從頭開(kāi)始。延時(shí)的實(shí)現(xiàn)。本實(shí)驗(yàn)中每個(gè)燈點(diǎn)亮后要持續(xù)一秒鐘,這可以用延時(shí)子程序來(lái)實(shí)現(xiàn),即點(diǎn)亮一個(gè)LED后就調(diào)用延時(shí)一秒的子程序。下面給出一個(gè)延時(shí)0.1秒的子程序的例子。晶振為6MHZ時(shí),一個(gè)機(jī)器周期為(12/6)μs即2μs?,F(xiàn)要寫(xiě)一個(gè)延時(shí)0.1s的程序??纱笾聦?xiě)為如下: MOV R7,#200 (1) DE1:MOV R6,#X (2)DE2:DJNZ R6,DE2 (3) DJNZ R7,DE1 (4)上面的MOV指令需要一個(gè)機(jī)器周期,DJNZ指令需要兩個(gè)機(jī)器周期?,F(xiàn)求出X值:(X×4+2+4)×200+2=0.1×106(μs) 指令(3)(2) (4) (1) 所需時(shí)間 需時(shí)間 需時(shí)間 需時(shí)間求出X=124。代入上式可知實(shí)際延時(shí)約0.100402S,很精確了。這個(gè)程序利用DJNZ構(gòu)成雙重循環(huán),實(shí)現(xiàn)了0.1秒的延時(shí),要達(dá)到1秒的延時(shí),一般需要三重循環(huán)。L1~L8為相應(yīng)發(fā)光二極管驅(qū)動(dòng)信號(hào)輸入端,該輸入端為低電平“0”實(shí)驗(yàn)接線圖及連線方法圖2-1實(shí)驗(yàn)四接線圖連線方法:P1.0~P1.7接發(fā)光二極管L1~L8。注意!在任何情況下禁止帶電插拔任何接插件思考題修改程序,使8個(gè)LED閃亮移位方向改變。修改程序,使8個(gè)LED閃爍點(diǎn)亮。實(shí)驗(yàn)五P1口實(shí)驗(yàn)(二)實(shí)驗(yàn)?zāi)康膶W(xué)習(xí)P1口既作為輸入,又作為輸出的使用方法。學(xué)習(xí)數(shù)據(jù)輸入、輸出程序的設(shè)計(jì)方法。實(shí)驗(yàn)內(nèi)容將撥動(dòng)開(kāi)關(guān)K1~K4分別與P1.0~P1.3相接,在P1.4~P1.7上接4個(gè)LED(L1~L4),編寫(xiě)程序,讀取開(kāi)關(guān)K1~K4的狀態(tài),將此狀態(tài)在發(fā)光二極管L1~L4上顯示出來(lái)。預(yù)習(xí)要求要將P1口作為輸入口,要先向P1口鎖存器寫(xiě)入什么?用什么指令完成?將其寫(xiě)在預(yù)習(xí)報(bào)告中。編寫(xiě)本實(shí)驗(yàn)的程序?;卮鹚伎碱}中的問(wèn)題,并編寫(xiě)相應(yīng)的程序。實(shí)驗(yàn)要求調(diào)試自己編寫(xiě)的程序。運(yùn)行程序后,將K1、K3向下?lián)?,K2、K4向上撥,記錄此時(shí)L1~L4的亮滅狀態(tài):L4(),L3(),L2(),L1()認(rèn)真填寫(xiě)實(shí)驗(yàn)報(bào)告。實(shí)驗(yàn)說(shuō)明P1口為準(zhǔn)雙向口,P1的每一位都能獨(dú)立地定義為輸出線或輸入線,作為輸入的口線,必須向鎖存器相應(yīng)位寫(xiě)入“1”,該位才能作為輸入。51單片機(jī)中所有口鎖存器在復(fù)位時(shí)均置為“1”,如果后來(lái)在口鎖存器寫(xiě)入過(guò)“0”,在需要時(shí)就寫(xiě)入一個(gè)“1”使它再成為一個(gè)輸入線。K1~K4為邏輯電平開(kāi)關(guān),向上撥相應(yīng)插孔輸出高電平“1”,向下?lián)芟鄳?yīng)插孔輸出低電平“0”。實(shí)驗(yàn)接線圖及連線方法圖2-2實(shí)驗(yàn)五接線圖連線方法:P1.0~P1.3接撥動(dòng)開(kāi)關(guān)K1~K4;P1.4~P1.7接發(fā)光二極管L1~L4。注意!在任何情況下禁止帶電插拔任何接插件。思考題若在讀P1口引腳前將P1.0~P1.3設(shè)為低電平,會(huì)出現(xiàn)什么現(xiàn)象?實(shí)驗(yàn)六按鍵實(shí)驗(yàn)實(shí)驗(yàn)?zāi)康膶W(xué)習(xí)鍵盤(pán)的使用方法,學(xué)習(xí)軟件去抖動(dòng)的方法。進(jìn)一步掌握延時(shí)子程序的編寫(xiě)方法。實(shí)驗(yàn)內(nèi)容將撥動(dòng)開(kāi)關(guān)K1與P3.2相接;實(shí)驗(yàn)箱上P1口做輸出口,P1.0~P1.7分別與8個(gè)發(fā)光二極管L1~L8相連。編寫(xiě)程序?qū)崿F(xiàn)如下功能:把P1口當(dāng)作按鍵計(jì)數(shù)器,程序剛運(yùn)行時(shí)L1~L8全亮,表示計(jì)數(shù)器的初始值為0,即二進(jìn)制數(shù)的00000000B;當(dāng)“向下-向上”撥動(dòng)一次開(kāi)關(guān)K1時(shí),計(jì)數(shù)器的值加1,L1滅,表示二進(jìn)制數(shù)00000001B;第二次撥動(dòng)開(kāi)關(guān)K1時(shí),計(jì)數(shù)器的值又加1,L2滅,表示二進(jìn)制數(shù)00000010B,依此類(lèi)推……。注意,K1“向下-向上”撥動(dòng)一次,計(jì)數(shù)器的值只能增加1。預(yù)習(xí)要求按鍵抖動(dòng)的時(shí)間和按鍵穩(wěn)定閉合時(shí)間各由什么因素決定?各為多長(zhǎng)時(shí)間?怎樣用軟件消除抖動(dòng),使K1“向下-向上”撥動(dòng)1次,計(jì)數(shù)器的值只增加1?編寫(xiě)本實(shí)驗(yàn)的程序。實(shí)驗(yàn)要求調(diào)試自己編寫(xiě)的程序;運(yùn)行程序后,將K1“向下-向上”撥動(dòng)3次后,記錄此時(shí)P1口的計(jì)數(shù)值:_____________B在程序中去掉消除抖動(dòng)的語(yǔ)句,觀察沒(méi)有這些語(yǔ)句是否受抖動(dòng)的影響;認(rèn)真填寫(xiě)實(shí)驗(yàn)報(bào)告。實(shí)驗(yàn)說(shuō)明撥動(dòng)開(kāi)關(guān)K1,開(kāi)關(guān)中的機(jī)械觸點(diǎn)在斷開(kāi)、閉合時(shí),會(huì)有抖動(dòng),所以“向下-向上”撥動(dòng)一次開(kāi)關(guān)K1,其觸點(diǎn)會(huì)產(chǎn)生多次斷開(kāi)和閉合,如果不采取措施消除抖動(dòng)的影響,單片機(jī)就會(huì)檢測(cè)到P3.2引腳的電平發(fā)生“低-高-低-高……”多次變化。本實(shí)驗(yàn)要求K1“向下-向上”撥動(dòng)一次,計(jì)數(shù)器的值只能增加1,所以編程時(shí)必須采用軟件措施消除抖動(dòng)造成的影響。軟件去抖動(dòng)的思路是:在單片機(jī)檢測(cè)到P3.2為低電平時(shí),不是立即認(rèn)定開(kāi)關(guān)K1已被撥下,而是延時(shí)約10ms后,再次檢測(cè)P3.2,如果仍是低電平,才認(rèn)定K1確被撥下了,這實(shí)際上是避開(kāi)了K1撥到下方時(shí)產(chǎn)生的抖動(dòng)。同樣,在檢測(cè)到K1撥到上方(P3.2為高電平)時(shí),也延時(shí)約10ms后,再次檢測(cè)P3.2,如果仍是高電平,才認(rèn)定K1確已撥到上方,這也是避開(kāi)了K1撥到上方時(shí)的抖動(dòng),然后再對(duì)計(jì)數(shù)器的值作加1處理。如果K1“向下-向上”撥動(dòng)一次,計(jì)數(shù)器的值總是增加1,那就表明你編寫(xiě)的程序消除了抖動(dòng)產(chǎn)生的影響,否則沒(méi)有。關(guān)于鍵盤(pán)消除抖動(dòng)的方法,請(qǐng)同學(xué)們仔細(xì)閱讀課本P204和P93的例8。編寫(xiě)程序時(shí),要編寫(xiě)一個(gè)延時(shí)10ms的子程序,在需要消除抖動(dòng)造成的影響時(shí)就調(diào)用它。K1為邏輯電平開(kāi)關(guān),向上撥相應(yīng)插孔輸出高電平“1”,向下?lián)芟鄳?yīng)插孔輸出低電平“0實(shí)驗(yàn)接線圖及連線方法圖2-3實(shí)驗(yàn)六接線圖連線方法:?jiǎn)纹瑱C(jī)的P3.2接撥動(dòng)開(kāi)關(guān)K1;P1.0~P1.7接發(fā)光二極管L1~L8注意!在任何情況下禁止帶電插拔任何接插件實(shí)驗(yàn)七鍵控流水燈實(shí)驗(yàn)?zāi)康膶W(xué)習(xí)多個(gè)按鍵的鍵盤(pán)的使用方法。進(jìn)一步掌握I/O端口的使用方法。實(shí)驗(yàn)內(nèi)容將撥動(dòng)開(kāi)關(guān)K1與P3.2相接,撥動(dòng)開(kāi)關(guān)K2與P3.3相接;實(shí)驗(yàn)箱上的P1口做輸出口,其8個(gè)輸出引腳P1.0~P1.7分別與8個(gè)發(fā)光二極管L1~L8相連。編寫(xiě)程序?qū)崿F(xiàn)如下鍵控流水燈:用K1、K2分別控制兩種流水燈花樣(花樣一:L1~L8循環(huán)點(diǎn)亮;花樣二:L1~L8閃爍點(diǎn)亮,即L1~L8同時(shí)點(diǎn)亮1秒,然后又同時(shí)熄滅1秒,交替進(jìn)行)。使得K1撥到下方時(shí)(K1保持在下方位置),執(zhí)行第一種流水燈花樣,K1撥到上方時(shí),第一種流水燈停止;K2撥到下方時(shí)(K2保持在下方位置),執(zhí)行第二種流水燈花樣,K2撥到上方時(shí),第二種流水燈停止。程序剛開(kāi)始運(yùn)行時(shí),L1~L8全滅。預(yù)習(xí)要求編寫(xiě)本實(shí)驗(yàn)的程序。實(shí)驗(yàn)要求調(diào)試自己編寫(xiě)的程序;在程序中去掉消除抖動(dòng)的語(yǔ)句,觀察沒(méi)有這些語(yǔ)句是否受抖動(dòng)的影響;認(rèn)真填寫(xiě)實(shí)驗(yàn)報(bào)告。實(shí)驗(yàn)接線圖及連線方法圖2-4實(shí)驗(yàn)七接線圖連線方法:?jiǎn)纹瑱C(jī)的P3.2接撥動(dòng)開(kāi)關(guān)K1,P3.3接撥動(dòng)開(kāi)關(guān)K2;P1.0~P1.7接發(fā)光二極管L1~L8。注意!在任何情況下禁止帶電插拔任何接插件。思考題本實(shí)驗(yàn)中,若不采用消除抖動(dòng)的措施,會(huì)受按鍵抖動(dòng)的影響嗎?實(shí)驗(yàn)八外部中斷實(shí)驗(yàn)實(shí)驗(yàn)?zāi)康恼莆胀獠恐袛嗉夹g(shù)的基本使用方法。學(xué)習(xí)中斷服務(wù)程序的編程方法。實(shí)驗(yàn)內(nèi)容外中斷設(shè)為邊沿觸發(fā)方式,使用K1、K2觸發(fā)外部中斷。主程序中8個(gè)LED全部點(diǎn)亮,進(jìn)入中斷服務(wù)程序改變顯示方式,(按下K1時(shí),8個(gè)LED輪流點(diǎn)亮;按下K2時(shí),8個(gè)LED閃爍點(diǎn)亮)。開(kāi)關(guān)上撥后返回主程序,恢復(fù)原顯示方式。預(yù)習(xí)要求設(shè)置外部中斷為邊沿觸發(fā)方式用什么指令完成?將其寫(xiě)在預(yù)習(xí)報(bào)告中;設(shè)置外部中斷1的優(yōu)先級(jí)別高于外部中斷0要用什么指令完成?將其寫(xiě)在預(yù)習(xí)報(bào)告中;編寫(xiě)本實(shí)驗(yàn)的程序;回答思考題中的問(wèn)題,并編寫(xiě)相應(yīng)的程序。實(shí)驗(yàn)要求調(diào)試自己編寫(xiě)的程序;認(rèn)真填寫(xiě)實(shí)驗(yàn)報(bào)告。實(shí)驗(yàn)說(shuō)明中斷系統(tǒng)的初始化主要對(duì)IE、IP的相應(yīng)位進(jìn)行正確設(shè)置,對(duì)于外中斷還要設(shè)置中斷觸發(fā)方式。中斷請(qǐng)求的撤消邊沿觸發(fā)方式的外部中斷,CPU在響應(yīng)中斷后,由硬件自動(dòng)將IE0、IE1標(biāo)志位清零。設(shè)計(jì)主程序和中斷服務(wù)程序本實(shí)驗(yàn)的程序分為主程序和中斷服務(wù)程序兩部分。主程序?qū)χ袛噙M(jìn)行初始化并點(diǎn)亮8個(gè)LED。外部中斷0服務(wù)程序(AINT)讓8個(gè)LED輪流點(diǎn)亮;外部中斷1服務(wù)程序(BINT)讓8個(gè)LED閃爍點(diǎn)亮。程序框架如下:ORG 0000HLJMP MAINORG 0003HLJMP AINTORG 0013HLJMP BINTORG 1000HMAIN:…… ;主程序AINT: …… ;外中斷0服務(wù)程序 BINT: …… ;外中斷1服務(wù)程序 END實(shí)驗(yàn)接線圖及連線方法圖2-5實(shí)驗(yàn)八接線圖連線方法:將P1.0~P1.7與L1~L8相接;P3.2、P3.3分別與K1、K2相接。注意!在任何情況下禁止帶電插拔任何接插件。思考題如果2個(gè)開(kāi)關(guān)同時(shí)按下,單片機(jī)先響應(yīng)哪個(gè)中斷源?8個(gè)LED是輪流點(diǎn)亮還是閃爍點(diǎn)亮?改變二者的優(yōu)先級(jí),觀察如果2個(gè)開(kāi)關(guān)同時(shí)按下,8個(gè)LED是輪流點(diǎn)亮還是閃爍點(diǎn)亮?實(shí)驗(yàn)九定時(shí)器實(shí)驗(yàn)實(shí)驗(yàn)?zāi)康恼莆諉纹瑱C(jī)內(nèi)部計(jì)數(shù)器的使用和編程方法。掌握中斷服務(wù)程序的編程方法。實(shí)驗(yàn)內(nèi)容要求編寫(xiě)程序模擬一時(shí)序控制裝置:開(kāi)機(jī)后第一秒鐘L1、L3亮,第二秒鐘L2、L4亮,第三秒種L5、L7亮,第四秒鐘L6、L8亮,第五秒鐘L1、L3、L5、L7亮,第六秒鐘L2、L4、L6、L8亮,第七秒鐘八個(gè)二極管全亮,第八秒鐘全滅,以后又從頭開(kāi)始,一直循環(huán)下去。LED亮一秒鐘由單片機(jī)內(nèi)部定時(shí)器1控制。預(yù)習(xí)要求設(shè)置定時(shí)器T1方式1定時(shí),且由軟件啟動(dòng),此時(shí)的工作方式寄存器TMOD的值應(yīng)為多少?若要設(shè)置允許定時(shí)器1中斷,要用什么指令完成?寫(xiě)出MCS-51匯編語(yǔ)言中兩條查表指令;編寫(xiě)本實(shí)驗(yàn)的程序。實(shí)驗(yàn)要求調(diào)試自己編寫(xiě)的程序;認(rèn)真填寫(xiě)實(shí)驗(yàn)報(bào)告。實(shí)驗(yàn)說(shuō)明延時(shí)一秒的實(shí)現(xiàn)延時(shí)的實(shí)現(xiàn),常用的有兩種方法,一是用延時(shí)子程序來(lái)實(shí)現(xiàn),一是用定時(shí)器中斷來(lái)實(shí)現(xiàn),前一種方法在實(shí)驗(yàn)四中已經(jīng)用過(guò),本實(shí)驗(yàn)采用后一種方法,其思路是:將單片機(jī)內(nèi)部定時(shí)器1設(shè)置為方式1工作,允許其中斷,并將定時(shí)器1的定時(shí)時(shí)間設(shè)置為0.1秒,則每過(guò)一秒鐘T1溢出中斷一次,T1溢出中斷10次的總時(shí)間就是一秒。編程時(shí)必須編寫(xiě)定時(shí)器1的中斷服務(wù)程序來(lái)處理中斷,CPU每次響應(yīng)中斷后在中斷服務(wù)程序中要對(duì)溢出中斷次數(shù)進(jìn)行計(jì)數(shù),而返回主程序后要檢測(cè)溢出中斷是否達(dá)到10次,若達(dá)到10次則表明延時(shí)已達(dá)到一秒,否則沒(méi)有。定時(shí)器1計(jì)數(shù)初值的確定定時(shí)器的輸入脈沖周期與機(jī)器周期一樣,為振蕩頻率的1/12。本實(shí)驗(yàn)中時(shí)鐘頻率為6MHZ,采用T1方式1定時(shí)0.1秒時(shí),計(jì)數(shù)初值X為:X=65536-(6×106×0.1)/12=15536=3CB0H則:TH1=3CH,TL1=B0H初始化程序在程序的開(kāi)頭要對(duì)定時(shí)器和中斷系統(tǒng)等進(jìn)行設(shè)置,如將定時(shí)器1設(shè)置為方式1,將計(jì)數(shù)初值送入T1中,允許定時(shí)器1中斷等,這稱(chēng)為初始化。本實(shí)驗(yàn)的初始化主要是對(duì)TMOD、TCON、IE的相應(yīng)位進(jìn)行正確的設(shè)置,并將計(jì)數(shù)初值送入定時(shí)器1中,由于只有定時(shí)器中斷,IP便不必設(shè)置。設(shè)計(jì)中斷服務(wù)程序和主程序本實(shí)驗(yàn)的程序分為主程序和中斷服務(wù)程序兩部分。中斷服務(wù)程序除了要對(duì)中斷次數(shù)進(jìn)行計(jì)數(shù)外,還要將計(jì)數(shù)初值重新送入定時(shí)器1中,為下一次中斷做準(zhǔn)備。主程序則用來(lái)控制發(fā)光二極管按要求順序亮滅。本實(shí)驗(yàn)P1口上接的L1-L8有8種顯示狀態(tài),每種顯示狀態(tài)相應(yīng)的有一個(gè)八位的顯示數(shù)據(jù),可以將8種顯示狀態(tài)的顯示數(shù)據(jù)放在數(shù)據(jù)表格中,當(dāng)需要某種顯示狀態(tài)時(shí),就利用查表指令從數(shù)據(jù)表格中取出相應(yīng)的顯示數(shù)據(jù)送入P1口。程序框架如下:ORG 0000HLJMP STARTORG 001BHLJMP INTT1 ORG 0030HSTART:…… ;主程序INTT1: …… ;中斷服務(wù)程序 END實(shí)驗(yàn)接線圖及連線方法圖2-6實(shí)驗(yàn)九接線圖連線方法:P1.0~P1.7用插針連至L1~L8。注意!在任何情況下禁止帶電插拔任何接插件。實(shí)驗(yàn)十簡(jiǎn)單I/O口擴(kuò)展實(shí)驗(yàn)實(shí)驗(yàn)?zāi)康膶W(xué)習(xí)在單片機(jī)系統(tǒng)中擴(kuò)展簡(jiǎn)單I/O接口的方法。學(xué)習(xí)數(shù)據(jù)輸入、輸出程序的設(shè)計(jì)方法。實(shí)驗(yàn)內(nèi)容利用74LS244做為輸入口,讀取開(kāi)關(guān)狀態(tài),并將此狀態(tài),通過(guò)74LS273再驅(qū)動(dòng)發(fā)光二極管顯示出來(lái)。預(yù)習(xí)要求閱讀課本P160-P163內(nèi)容,熟悉在單片機(jī)系統(tǒng)擴(kuò)展中,幾種常用芯片的使用方法;編寫(xiě)本實(shí)驗(yàn)的程序。實(shí)驗(yàn)要求調(diào)試自己編寫(xiě)的程序;認(rèn)真填寫(xiě)實(shí)驗(yàn)報(bào)告。實(shí)驗(yàn)說(shuō)明本實(shí)驗(yàn)分別利用實(shí)驗(yàn)箱上的74LS244和74LS273擴(kuò)展一個(gè)八位的并行輸入口和一個(gè)八位的并行輸出口。74LS244和74LS273與單片機(jī)之間的連接基本上與擴(kuò)展外部數(shù)據(jù)存儲(chǔ)器的方法相同,74LS244和74LS273都相當(dāng)于外部數(shù)據(jù)存儲(chǔ)器的一個(gè)存儲(chǔ)單元,并且各有一個(gè)地址,按照本實(shí)驗(yàn)的連線方法方法,74LS244的地址為8000H,而74LS273的地址為9000H。實(shí)驗(yàn)時(shí)將開(kāi)關(guān)K1-K8分別接到74LS244的8個(gè)輸入端,而將發(fā)光二極管L1-L8分別接到74LS273的8個(gè)輸出端。要通過(guò)74LS244讀取8個(gè)開(kāi)關(guān)的狀態(tài),是用訪問(wèn)外部數(shù)據(jù)存儲(chǔ)器的指令MOVX進(jìn)行,可通過(guò)下面兩條指令來(lái)實(shí)現(xiàn):MOVDPTR,#8000H;74LS244地址送DPTRMOVXA,@DPTR;讀取開(kāi)關(guān)狀態(tài)要將讀取的開(kāi)關(guān)狀態(tài)寫(xiě)入74LS273,也用訪問(wèn)外部數(shù)據(jù)存儲(chǔ)器的指令MOVX進(jìn)行,可以用下面的三條指令來(lái)實(shí)現(xiàn):MOV DPTR,#9000H ;74LS273地址送DPTRMOVX@DPTR,A ;開(kāi)關(guān)狀態(tài)送273顯示也可采用MOVXA,@Ri和MOVX@Ri,A指令編程。實(shí)驗(yàn)接線圖及連線方法圖2-7實(shí)驗(yàn)十接線圖連線方法:Y0~Y7用插針連至K1~K8,CS1接74LS138的8000孔;Q0~Q7用插針連至L1~L8,CS2接74LS138的9000孔。注意!在任何情況下禁止帶電插拔任何接插件。思考題本實(shí)驗(yàn)中可否用74LS273做為輸入口,用74LS244做為輸出口?實(shí)驗(yàn)十一A/D轉(zhuǎn)換實(shí)驗(yàn)實(shí)驗(yàn)?zāi)康恼莆誂/D轉(zhuǎn)換與單片機(jī)的接口方法。了解A/D芯片ADC0809轉(zhuǎn)換性能及編程方法。通過(guò)實(shí)驗(yàn)了解單片機(jī)如何進(jìn)行數(shù)據(jù)采集。實(shí)驗(yàn)內(nèi)容利用實(shí)驗(yàn)箱上的0809做A/D轉(zhuǎn)換器,實(shí)驗(yàn)箱上的電位器提供模擬量輸入,編制程序,將模擬量轉(zhuǎn)換成數(shù)字量,用8個(gè)發(fā)光二極管L1~L8顯示此數(shù)字量。預(yù)習(xí)要求仔細(xì)閱讀實(shí)驗(yàn)講義中的內(nèi)容;編寫(xiě)本實(shí)驗(yàn)的程序。實(shí)驗(yàn)要求調(diào)試自己編寫(xiě)的程序;認(rèn)真填寫(xiě)實(shí)驗(yàn)報(bào)告。實(shí)驗(yàn)說(shuō)明實(shí)驗(yàn)箱上有一個(gè)電阻器W1,我們將其一端接+5V,另一端接地(如圖2-8所示),則當(dāng)滑動(dòng)觸頭由右往左移動(dòng)時(shí),滑動(dòng)觸頭上的輸出電壓U逐漸增大,反之,當(dāng)滑動(dòng)觸頭由左往右移動(dòng)時(shí),U逐漸減小。我
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 市政工程專(zhuān)項(xiàng)施工方案
- 河道引流的施工方案
- 被動(dòng)網(wǎng)施工方案
- 硬巖豎井施工方案
- 格柵幕墻施工方案
- 二零二五年度債權(quán)債務(wù)資產(chǎn)保全執(zhí)行合同
- 2025年度離婚財(cái)產(chǎn)分割及子女成長(zhǎng)環(huán)境優(yōu)化協(xié)議書(shū)
- 二零二五年度美容儀器加盟保證金及售后服務(wù)合同
- 2025年度跨境電商平臺(tái)員工勞動(dòng)合同解除書(shū)
- 二零二五年度公益歌曲委托創(chuàng)作與宣傳推廣合同
- 麻風(fēng)病科普知識(shí)培訓(xùn)課件
- 四環(huán)素合成工藝課件
- 初中數(shù)學(xué)人教八年級(jí)上冊(cè)軸對(duì)稱(chēng)-課題學(xué)習(xí)最短路徑問(wèn)題將軍飲馬PPT
- 外語(yǔ)教師科研立項(xiàng)申報(bào)及特點(diǎn)分析課件
- 質(zhì)量管理小組活動(dòng)準(zhǔn)則TCAQ10201-2020
- 支氣管肺炎完整版課件
- 譯林英語(yǔ)五年級(jí)下冊(cè)單詞表(孩子自己默寫(xiě)不用提)
- DLT 1055-2021 火力發(fā)電廠汽輪機(jī)技術(shù)監(jiān)督導(dǎo)則
- 杭州房建工程監(jiān)理大綱范本
- 現(xiàn)代交換原理與技術(shù)課件:第5章 分組交換技術(shù)
- Q∕GDW 12157-2021 應(yīng)急培訓(xùn)演練基地建設(shè)與評(píng)價(jià)規(guī)范
評(píng)論
0/150
提交評(píng)論