版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第4章PIC單片機(jī)應(yīng)用實(shí)訓(xùn)實(shí)訓(xùn)4.1簡(jiǎn)易LED閃爍彩燈實(shí)訓(xùn)4.2162點(diǎn)陣字符液晶顯示器的應(yīng)用實(shí)訓(xùn)4.3PIC單片機(jī)A/D轉(zhuǎn)換器的應(yīng)用
實(shí)訓(xùn)4.4單線數(shù)字溫度傳感器的應(yīng)用實(shí)訓(xùn)4.1簡(jiǎn)易LED閃爍彩燈
1.實(shí)訓(xùn)目的
(1)了解PIC單片機(jī)的開發(fā)過程,掌握MPLAB-ICD低成本開發(fā)工具的使用方法。
(2)了解PIC16CF877單片機(jī)的特點(diǎn)、硬件結(jié)構(gòu)與外圍電路。
(3)掌握PIC單片機(jī)匯編程序的基本結(jié)構(gòu),了解其指令系統(tǒng),熟悉基本指令的應(yīng)用。2.實(shí)訓(xùn)設(shè)備與器件1)MPLAB-ICD——一種廉價(jià)的PIC單片機(jī)在線調(diào)試器圖4.1.1MPLAB-ICD的外觀圖MPLAB-ICD有如下特性:在線調(diào)試功能;源程序級(jí)的代碼調(diào)試;實(shí)時(shí)、單步或斷點(diǎn)運(yùn)行程序;寄存器觀察;由目標(biāo)系統(tǒng)提供工作電壓;工作電壓范圍為3.0~5.5V;工作頻率范圍為32kHz~20MHz;工作于MPLAB-IDE集成開發(fā)環(huán)境,該軟件兼容MicrosoftWindows3.X、Windows95/98、WindowsNT和Windows2000等操作系統(tǒng);通過RS-232接口與PC機(jī)連接。2)ICDDEMO教學(xué)實(shí)驗(yàn)板
ICDDEMO教學(xué)實(shí)驗(yàn)板由高奇晶圓公司專門為PIC單片機(jī)初學(xué)者設(shè)計(jì),如圖4.1.2所示,它可配合MPLABICD使用。
ICDDEMO教學(xué)實(shí)驗(yàn)板包括以下電路:LED顯示電路:8個(gè)LED燈與RD口相連;
LCD顯示電路:162型STN字符型液晶顯示模塊(黃綠背光),采用半字節(jié)顯示模式;光控電路:?jiǎn)纹瑱C(jī)A/D輸入端連接光電轉(zhuǎn)換電路,光暗與光亮?xí)r產(chǎn)生不同的電壓,用來控制LCD模塊背光;測(cè)溫電路:通過熱敏電阻測(cè)量溫度;I2C模塊:用I2C總線連接外部E2PROM存儲(chǔ)器;可調(diào)節(jié)的PWM模塊演示電路:模擬直流電機(jī)的運(yùn)行;捕捉功能電路:用捕捉功能測(cè)量電機(jī)轉(zhuǎn)速;RS-232電路:實(shí)現(xiàn)與PC通信的實(shí)驗(yàn);485通信接口電路(預(yù)留線路)。圖4.1.2ICDDEMO教學(xué)實(shí)驗(yàn)板3)用于安裝MPLAB-IDE集成開發(fā)環(huán)境的PC機(jī)對(duì)PC機(jī)的要求如下:奔騰(Pentium)系列PC或兼容計(jì)算機(jī);微軟公司的操作系統(tǒng):Windows95/98、WindowsNT或者Windows2000;至少16MB的系統(tǒng)內(nèi)存,推薦使用32MB的系統(tǒng)內(nèi)存;45MB可使用的磁盤空間;一個(gè)空余的串行通信口。
3.項(xiàng)目設(shè)計(jì)要求編寫一段程序,使ICDDEMO教學(xué)實(shí)驗(yàn)板上的8只LED按一定的花樣閃爍。在此基礎(chǔ)上用按鍵實(shí)現(xiàn)不同花樣程序的切換。
4.實(shí)訓(xùn)內(nèi)容
1)硬件設(shè)計(jì)
(1)PIC16F877引腳排列。PIC16F877采用雙列直插和表面貼裝等3種封裝形式:PDIP40、PLCC44和QFP44。圖4.1.3給出了40腳PDIP封裝的引腳排列圖。由圖可以看出,PIC16F877多數(shù)引腳具備第二種功能,甚至具有第三種功能,這是因?yàn)樵撓盗袉纹瑱C(jī)是目前世界上集成外圍模塊最多的單片機(jī)之一。功能增多而引腳不增加,只能采用引腳功能復(fù)用的方式。圖4.1.3PIC16F877引腳排列圖(2)電路原理圖。該實(shí)訓(xùn)電路圖為ICDDEMO教學(xué)實(shí)驗(yàn)板提供的8個(gè)LED的驅(qū)動(dòng)線路,如圖4.1.4所示。也可以用萬能板自行按此圖焊接一塊實(shí)驗(yàn)板。PIC16F877內(nèi)部具有復(fù)位電路,也可以通過在MCLR/VPP端(1腳)輸入低電平復(fù)位。圖4.1.4中的S1為外部復(fù)位開關(guān)。RA4端為通用I/O、A/D輸入和計(jì)數(shù)脈沖輸入端多用端口,S2為脈沖開關(guān),按一次輸入一個(gè)脈沖,C3為消顫電容,避免按一次S1而產(chǎn)生多個(gè)脈沖。OSC1與OSC2之間接晶體振蕩器,該晶體振蕩器為系統(tǒng)時(shí)鐘。LED采用高電平驅(qū)動(dòng),輸出“1”時(shí)點(diǎn)亮。圖4.1.4PIC16F877控制8個(gè)LED連線圖(3)在MPLAB-ICD開發(fā)環(huán)境下設(shè)計(jì)硬件時(shí)的注意事項(xiàng)。MPLAB-ICD是一種廉價(jià)的開發(fā)工具,它使用MICROCHIP“在線串行編程”技術(shù),在仿真調(diào)試過程中要占用所仿真單片機(jī)的部分資源。設(shè)計(jì)硬件時(shí)要避免使用這些被占用的資源,以免發(fā)生沖突,給開發(fā)帶來不便。MPLAB-ICD將會(huì)占用仿真單片機(jī)中的以下資源:MCLR/VPP腳(系統(tǒng)復(fù)位/編程電壓腳);禁止低電壓“在線串行編程(ICSP)”;RB6和RB7保留為編程和在線調(diào)試用;6個(gè)通用文件寄存器保留給調(diào)試監(jiān)控程序;程序存儲(chǔ)器第一條指令(地址0X0000)必須是空操作指令NOP;程序存儲(chǔ)器的最后256或88個(gè)字被保留用來存放調(diào)試代碼。表4.1.1MPLAB-ICD調(diào)試代碼所占用的空間2)軟件設(shè)計(jì)
(1)PIC16F877內(nèi)部資源。①PIC16F877的程序存儲(chǔ)器(ROM)和堆棧。
PIC16F877的程序存儲(chǔ)器與堆棧如圖4.1.5所示,其程序計(jì)數(shù)器寬13位,圖中用“PC<12:0>”表示。其程序存儲(chǔ)器與其他單片機(jī)不同的是采用了分頁結(jié)構(gòu),以2K為單位進(jìn)行分頁,共分4頁。這種分頁結(jié)構(gòu)給編程帶來了不便,程序跨頁時(shí)必須進(jìn)行必要的頁面設(shè)置。程序存儲(chǔ)器中有2個(gè)單元地址比較特殊,一個(gè)是0000H,專門用作復(fù)位向量,單片機(jī)復(fù)位時(shí)程序計(jì)數(shù)器指向該單元,也是主程序的入口地址;另一個(gè)是0004H,專門用作中斷向量,當(dāng)單片機(jī)因任何原因引起中斷時(shí),程序計(jì)數(shù)器指向該單元,即中斷入口。圖4.1.5PIC16F877的程序存儲(chǔ)器和堆棧PIC16F877采用是硬件堆棧方式,其堆棧具有8×13位的獨(dú)立空間(即8級(jí)堆棧),這既不占用程序存儲(chǔ)器和數(shù)據(jù)存儲(chǔ)器空間,也不需要進(jìn)棧和出棧之類的堆棧操作指令。當(dāng)執(zhí)行“CALL”指令或者單片機(jī)響應(yīng)中斷而發(fā)生程序跳轉(zhuǎn)時(shí),程序計(jì)數(shù)器的值(即被中斷的程序的斷點(diǎn)地址)自動(dòng)壓入堆棧;當(dāng)執(zhí)行返回指令“RETURN、RETFIE或RETLW”時(shí),堆棧彈出,恢復(fù)程序計(jì)數(shù)器PC原來的值。堆棧遵循“后進(jìn)先出”的規(guī)則。②PIC16F877的數(shù)據(jù)存儲(chǔ)器(RAM)布局。傳統(tǒng)概念上的RAM一般只能實(shí)現(xiàn)數(shù)據(jù)的讀出和寫入,而PIC單片機(jī)中的RAM功能要強(qiáng)大得多,它除了普通RAM的功能以外,還能實(shí)現(xiàn)移位、置位、清位、位測(cè)試等一系列寄存器才能完成的功能。因此,在MICROCHIP公司給PIC單片機(jī)中的RAM一個(gè)別名——文件寄存器。圖4.1.6為PIC16F876/877的RAM布局圖,必須要注意的幾點(diǎn)是:標(biāo)有(2)的單元為保留單元;標(biāo)有(1)的單元對(duì)于28腳的PIC16F876沒有配置;帶有陰影的部分單元物理上不存在;帶有“*”的單元不是一個(gè)物理存在的單元,僅用于實(shí)現(xiàn)間接尋址。RAM數(shù)據(jù)存儲(chǔ)器在空間上分成4個(gè)“體(Bank)”,按橫向排列,4個(gè)體分別記作“體0”、“體1”、“體2”、“體3”,這是與其他類型單片機(jī)有很大區(qū)別的地方。當(dāng)我們對(duì)寄存器進(jìn)行操作時(shí),不但要關(guān)心其地址,還要注意是否作了體選擇操作,體選擇操作是通過設(shè)置狀態(tài)寄存器的有關(guān)位來實(shí)現(xiàn)的。圖4.1.6PIC16F876/877數(shù)據(jù)存儲(chǔ)器(RAM)布局圖PIC16F876/877的RAM按功能可分為特殊功能寄存器和通用寄存器,前者占據(jù)RAM各個(gè)體的上半部分,后者占據(jù)RAM各個(gè)體的下半部分。其中一些寄存器單元在4個(gè)體上是相互映射的,例如狀態(tài)寄存器STATUS、間接尋址寄存器INDF、程序計(jì)數(shù)器低8位PCL、文件選擇寄存器FSR、程序計(jì)數(shù)器高位鎖存器PCLATH和中斷控制寄存器INTCON。也就是說,在4個(gè)體的相同位置,物理上是同一個(gè)寄存器單元,所以該單元具有4個(gè)不同的地址。通用寄存器由用戶自由安排和存放隨機(jī)數(shù)據(jù)(單片機(jī)上電復(fù)位后,其內(nèi)容是不確定的)。③PIC16F877的狀態(tài)寄存器。狀態(tài)寄存器的內(nèi)容用來記錄算術(shù)邏輯單元ALU的運(yùn)算狀態(tài)和算術(shù)特征、CPU的特殊運(yùn)行狀態(tài)以及RAM數(shù)據(jù)存儲(chǔ)器的體間選擇等信息。狀態(tài)寄存器與通用寄存器不完全一樣,其中某些位只能讀不能寫,另一些位的狀態(tài)會(huì)根據(jù)運(yùn)算結(jié)果而隨時(shí)變化。狀態(tài)寄存器各位的含義如表4.1.2所示。表4.1.2狀態(tài)寄存器各位的含義表4.1.2狀態(tài)寄存器各位的含義(2)軟件流程圖。圖4.1.78位LED閃爍彩燈的軟件流程圖(3)源程序。源程序如下:;本程序的功能是使一個(gè)發(fā)光二極管右循環(huán)移動(dòng)點(diǎn)亮8次,再左循環(huán)移動(dòng)點(diǎn)亮8次;----------------------------------------------------------------------------;在編程前先用匯編偽指令對(duì)各操作寄存器地址與有關(guān)位進(jìn)行定義,方便以后編程;在定義時(shí)一般賦于一個(gè)有意義的名字提高程序的可讀性;----------------------------------------------------------------------------STATUS EQU 0x03 ;狀態(tài)寄存器TRISD EQU 0x08 ;RD口方向寄存器PORTD EQU 0x08 ;RD口數(shù)據(jù)寄存器C EQU 0 ;定義狀態(tài)寄存器的進(jìn)位/借位標(biāo)志位RP0 EQU 5 ;定義數(shù)據(jù)存儲(chǔ)器體選擇位,用以選擇RAMDE_CNT0EQU 0x25;定義兩個(gè)延時(shí)計(jì)數(shù)器DE_CNT1EQU 0x26COUNTEQU0x27;定義循環(huán)次數(shù)計(jì)數(shù)器;--------------定義程序載入地址和復(fù)位指針--------------------- ORG 0x00GOTO MAIN ORG 0x10;----------------------主程序--------------------------------MAIN BCF STATUS,C;清狀態(tài)寄存器中的進(jìn)位標(biāo)志
BSF STATUS,RP0;選擇RAM“體1”,準(zhǔn)備操作寄存器TRISD CLRF TRISD ;設(shè)置RD口為輸出方式
BCF STATUS,RP0 ;選擇體“0”LOOP MOVLW0x08 ;初始化循環(huán)次數(shù)計(jì)數(shù)器,把十進(jìn)制“8”送 到COUNT MOVWFCOUNT
MOVLWB'10000000';把8位二進(jìn)制數(shù)“10000000”賦給W寄存器LOOP1 MOVWFPORTD ;把W的數(shù)據(jù)賦給RD口,點(diǎn)亮LED CALLDELAY ;延時(shí),使LED點(diǎn)亮一段時(shí)間
RRF
W,1 ;將W寄存器內(nèi)數(shù)據(jù)循環(huán)右移1位,結(jié)果放 入W寄存器
DECFSZCOUNT,1 ;判斷是否已左移循環(huán)8次,若是則結(jié)束循 環(huán)左移
GOTO
LOOP1;8次沒有循環(huán)完,繼續(xù)循環(huán)右移LOOP3 MOVLW 0X08 ;初始化循環(huán)次數(shù)計(jì)數(shù)器,把十進(jìn)制 “8”送到COUNT MOVWF COUNT MOVLW B'00000001'LOOP2 MOVWF RD ;把W的數(shù)據(jù)賦給RD口,點(diǎn)亮LED CALL DELAY;延時(shí),使LED點(diǎn)亮一段時(shí)間
RLF W,1 ;將W寄存器內(nèi)數(shù)據(jù)循環(huán)右移1位,結(jié)果放入W寄存器
DECFSZ COUNT,1 ;判斷是否循環(huán)了8次,若是則結(jié) 束循環(huán)左移
GOTO LOOP2 ;8次沒有循環(huán)完,繼續(xù)循環(huán)左移
GOTO LOOP;----------------------延時(shí)子程序-----------------------------DELAY MOVLW 0FFH MOVWF DE_CNT0 MOVWF DE_CNT1DELAY0 DECFSZ DE_CNT0,1 GOTO DELAY0 DECFSZ DE_CNT1,1 GOTO DELAY0 RETLW 0;-------------------------------------------------------- END;--------------------------------------------------------
5.調(diào)試方法與步驟
1)硬件安裝
(1)用PC機(jī)串口連接ICD主機(jī)。用一端為公頭,另一端為母頭的9針電纜線連接PC機(jī)串口與ICD主機(jī)。
(2)ICD主機(jī)與ICDDEMO教學(xué)演示板。有兩種連接方式,效果等同。方式1:連接ICD主機(jī)與仿真頭;方式2:連接ICD主機(jī)與DEMO板上的RJ-6口。連接完畢,接上電源(電源插孔在演示板上,電源規(guī)格為9V-600mA)。接通電源后,演示板上的紅燈會(huì)亮,ICD上“ACTIVE”指示燈會(huì)閃爍。這時(shí),如果液晶模塊的電源跳線是接通的,液晶屏上第一行會(huì)顯示一行16個(gè)5×7點(diǎn)陣黑色方塊。2)MPLAB-IDE軟件安裝
(1)獲取MPLAB-IDE。從MICROCHIP的網(wǎng)站上或MPLAB-ICD配套光盤上可以找到MPLAB-IDE安裝軟件,目前的版本是V7.0,它是PIC單片機(jī)的集成開發(fā)環(huán)境,功能非常豐富。
(2)找到安裝執(zhí)行文件。利用Windows的查找功能找到該執(zhí)行文件,如圖4.1.8和圖4.1.9所示。圖4.1.8利用Windows的查找功能進(jìn)行查找圖4.1.9查找“mp*.exe”文件(3)開始安裝。用鼠標(biāo)雙擊MPLAB-IDE安裝文件,開始安裝。當(dāng)安裝程序出現(xiàn)圖4.1.10的畫面時(shí),在“MPLABICDDebuggerSupportFiles”選項(xiàng)前打“√”。在“PICSTARTPlusSupportFiles"的選項(xiàng)前也要打“√”,這是后面使用“PICSTARTPlus”PIC全系列編程器所必需的。圖4.1.10選擇安裝組件3)設(shè)置MPLAB-ICD開發(fā)環(huán)境
(1)執(zhí)行MPLAB。由Windows畫面左下方的“開始”菜單,選擇“開始→程序→MicrochipMPLAB→MPLAB”執(zhí)行MPLAB程序。
(2)“DevelopmentMode(開發(fā)模式)”設(shè)定。進(jìn)入MPLAB程序后,在菜單欄中選擇“Option”選項(xiàng),會(huì)出現(xiàn)一個(gè)下拉式菜單,在其中選擇“DevelopmentMode”,將開啟一個(gè)名為“DevelopmentMode”的窗口,如圖4.1.11所示?!癉evelopmentMode”對(duì)話框中包含6張卡片,我們只對(duì)“Tools”中的選項(xiàng)進(jìn)行設(shè)定:選擇“MPLAB-ICDDebugger”,從“Processor”下拉列表中選擇一種單片機(jī)型號(hào)(在這里我們選擇PIC16F877)。此時(shí),點(diǎn)擊“Apply”按鈕,打開MPLAB-ICD工作對(duì)話框,如圖4.1.12所示。圖4.1.11“DevelopmentMode”對(duì)話框圖4.1.12MPLAB-ICD工作對(duì)話框(3)MPLAB-ICD工作窗口的設(shè)置。圖4.1.13“ICDOption”窗口(4)“ICDOption”窗口設(shè)置。在MPLAB-ICD工作窗口上單擊“Option”,開啟“ICDOption”窗口,如圖4.1.13所示。“ConfigurationBits”部分的設(shè)定如下:Oscillator(晶振):XT;WatchdogTimer(看門狗定時(shí)器):off/disable;Brownoutdetect(掉電檢測(cè)):off/disable;Poweruptimer(上電定時(shí)器):off/disable;Lowvoltageprogram(低電壓編程):disable;CodeprotectdataEE(E2PROM數(shù)據(jù)保護(hù)):codeprotectionoff;Flashmemorywrite(Flash存儲(chǔ)器寫):nomemorywrittentobyEECON;
Codeprotect(代碼保護(hù)):codeprotectionoff。其他選項(xiàng)為默認(rèn)。此時(shí),在Voltages部分出現(xiàn)VDD為5.0V+/-5%,VPP為14V+/-5%,表示MPLAB-ICD已和PC機(jī)完成聯(lián)機(jī)。若沒有電壓顯示,表示連接失敗,可單擊“Update”按鈕,重復(fù)聯(lián)機(jī)。在設(shè)置正確且聯(lián)機(jī)正常的情況下,將“ICDOption”窗口關(guān)閉或最小化,但圖4.1.12的MPLAB-ICD工作窗口必須最小化,不能關(guān)閉,以保持與PIC16F877聯(lián)機(jī),燒錄程序要用。最后單擊“DevelopmentMode”窗口上的“OK”按鈕,完成MPLAB-ICD環(huán)境的設(shè)定。4)編輯源程序編輯源程序有兩種途徑:可以利用MPLAB內(nèi)置的源程序編輯器編輯,也可以用其他的文本編輯軟件編輯。圖4.1.14給出在MPLAB中創(chuàng)建或打開源程序的方法。源程序編輯好以后,以英文和數(shù)字組合作為文件名存于某一工程目錄(目錄名也應(yīng)為英文和數(shù)字組合),本例中用為“LED.asm”。圖4.1.14利用MPLAB創(chuàng)建/打開源程序5)建立十六進(jìn)制調(diào)試文件
(1)新建項(xiàng)目。在開發(fā)過程中,用戶需要建立一個(gè)新“項(xiàng)目”(*.pjt),以便將源文件*.asm和建立的十六進(jìn)制文件*.hex包含在內(nèi)進(jìn)行調(diào)試。建立調(diào)試文件前,在計(jì)算機(jī)硬盤上建立一個(gè)工程目錄,如“D:\pic16f877”,把源程序拷貝到該目錄下。點(diǎn)擊“project”下拉菜單,如圖4.1.15所示,選擇“NewProject”并單擊,出現(xiàn)如圖4.1.16所示的對(duì)話框;在“FileName”處鍵入“l(fā)ed.pjt”,在“Directories”中選擇我們的源程序(led.asm)文件所存放的文件夾(D:\pic16f877),然后單擊“OK”按鈕,這時(shí)我們會(huì)進(jìn)入如圖5.1.17所示的“Editproject”對(duì)話框。圖4.1.15“project”下拉式菜單圖4.1.16新建工程對(duì)話框圖4.1.17“EditProject”對(duì)話框(2)將源程序加入項(xiàng)目。在“EditProject”對(duì)話框中,點(diǎn)擊“AddNode(增加節(jié)點(diǎn))”,打開添加節(jié)點(diǎn)會(huì)話窗口。選擇“D:\pic16f877\led.asm”,然后點(diǎn)擊“OK”即可。
(3)設(shè)置節(jié)點(diǎn)屬性。節(jié)點(diǎn)屬性會(huì)話窗口顯示出涉及到MPLAB-ICD的參數(shù)開關(guān),這些參數(shù)都是MPASM匯編器所需要的。當(dāng)首次打開該會(huì)話窗口時(shí),所看到的設(shè)置均為該開發(fā)工具的默認(rèn)設(shè)置。對(duì)于本例,沒有必要修改該默認(rèn)設(shè)置。
(4)從“Editproject”對(duì)話框進(jìn)入“DevelopmentMode”設(shè)定。在“Editproject”對(duì)話框中單擊“Change”按鈕,可進(jìn)入“DevelopmentMode”對(duì)話框進(jìn)行MPLAB-ICD環(huán)境的設(shè)定。當(dāng)然,若前面設(shè)置正確,就沒有必要在這里設(shè)置了。6)編譯程序程序編譯有三種方式。第一種方式:在MPLAB主窗口下選擇“Project→MakeProject”,這種方式只編譯包含一個(gè)匯編程序的項(xiàng)目,第二種方式:在MPLAB主窗口下選擇“Project→BuildAll”,這種編譯方式會(huì)將所有包含在項(xiàng)目?jī)?nèi)的匯編程序全部編譯;第三種方式:在MPLAB主窗口下選擇“Project→BuildNode”,這種方式只編譯所選擇的匯編程序。我們選用第二種方式編譯程序。編譯后主窗口會(huì)出現(xiàn)三種信息:一是“error(錯(cuò)誤)”,表示源文件在指定地方有錯(cuò)誤,必須排除才能編譯,雙擊此錯(cuò)誤可直接跳到錯(cuò)誤行進(jìn)行修改;二是“wanring(警告)”,警告不會(huì)影響程序執(zhí)行;三是“message(信息)”,程序編譯成功會(huì)出現(xiàn)信息。7)將程序燒寫到PIC16F877單片機(jī)中程序編譯完成后,有兩種方式可將程序燒寫到PIC16F877單片機(jī)中。一是在圖4.1.12所示的MPLAB-ICD工作窗口中單擊“Program”按鈕,二是在圖4.1.13所示的“ICDOption”窗口中單擊“Program”按鈕。不論哪種方式,程序下載完畢,都會(huì)在“STATUS”字段出現(xiàn)“Waitingforusercommand”,表示程序燒錄成功。
8)執(zhí)行程序在執(zhí)行程序前,先在MPLAB主窗口上選擇“Debug→Run→Rest”,將程序指針指向起始位置。選擇“Debug→Run→Run”執(zhí)行程序;選擇“Debug→Run→Halt”可停止正在執(zhí)行的程序。9)程序調(diào)試
(1)特殊功能寄存器的觀察。在程序調(diào)試過程中,我們往往需要觀察特殊功能的寄存器,通過選擇“Windows→specialfunctionregisters”可打開特殊功能寄存器觀察窗口,如圖4.1.18所示。圖4.1.18特殊功能寄存器觀察窗口(2)其他調(diào)試手段與技巧。①使用MPLAB上的各功能快捷圖標(biāo)可以給調(diào)試帶來方便;②使用變量觀察窗可以集中觀察用戶關(guān)心的變量寄存器內(nèi)的數(shù)據(jù)變化情況;③使用單步可以觀察到執(zhí)行該行指令后的效果;④使用連續(xù)單步可以較為直觀地觀察到程序的運(yùn)行路徑,子程序的跳轉(zhuǎn)情況;⑤設(shè)置斷點(diǎn)可以讓程序在某一句停下,因此可以用來判斷某一子程序的入口條件是否準(zhǔn)確,可以讓程序迅速地停在要分析的程序段上。
6.實(shí)訓(xùn)分析與總結(jié)
1)PIC16F87X系列單片機(jī)的特點(diǎn)
(1)哈佛總線與精簡(jiǎn)指令集計(jì)算機(jī)(RISC)結(jié)構(gòu)。單片機(jī)的總線結(jié)構(gòu)有兩種,一是馮·諾依曼(VoNeumann)總線結(jié)構(gòu),以MCS-51單片機(jī)為代表,其特點(diǎn)是指令和數(shù)據(jù)共用一條總線,取指令和取數(shù)據(jù)分時(shí)進(jìn)行;二是以PIC單片機(jī)為代表所采用的哈佛總線結(jié)構(gòu),其特點(diǎn)是指令空間和數(shù)據(jù)空間是完全分立的,取指令和取數(shù)據(jù)可同時(shí)進(jìn)行。顯然,前者限制了工作帶寬,取指令時(shí)無法取數(shù)據(jù),有所謂的“瓶頸”問題,限制了單片機(jī)運(yùn)行速度的提高;后者對(duì)指令和數(shù)據(jù)可同時(shí)訪問,并可使用較數(shù)據(jù)總線更寬的指令總線以增加單條指令的信息量,從而大大提高運(yùn)行速度。PIC單片機(jī)取指令和執(zhí)行指令采用指令流水線結(jié)構(gòu),當(dāng)一條指令被執(zhí)行時(shí)允許下一條指令同時(shí)被取出,使得在每個(gè)時(shí)鐘周期可以獲得最高效率。MCS-51單片機(jī)在12MHz時(shí)鐘時(shí)執(zhí)行單周期指令所需的時(shí)間為1μs,而PIC在4MHz時(shí)鐘時(shí)執(zhí)行單周期指令的時(shí)間為1μs,加之PIC指令功能強(qiáng)大,速度的提高是顯然的。PIC單片機(jī)采用精簡(jiǎn)指令集計(jì)算機(jī)(RISC,ReduceInstructionSetComputer)結(jié)構(gòu),使指令的功能增強(qiáng),效率大大提高。低、中、高三級(jí)產(chǎn)品指令字寬分別為12、14和16位,且分別只有33、35和58條指令,它們向上兼容。這些指令中絕大部分是單字節(jié)指令,沒有功能相交叉的指令,整個(gè)指令系統(tǒng)十分簡(jiǎn)潔。而采用集中指令集計(jì)算機(jī)(CISC,ComplexInstructionSetComputer)結(jié)構(gòu)的單片機(jī)通常有50~111條指令(如MCS-51),絕大多數(shù)為多周期、多字節(jié)指令,執(zhí)行速度慢,對(duì)使用者提出了較高的要求。單字節(jié)指令提高了軟件設(shè)計(jì)的效率,減少了所需程序存儲(chǔ)器的容量,提高了代碼效率,學(xué)習(xí)和實(shí)現(xiàn)都非???。(2)優(yōu)越的電氣性能與高可靠性。PIC單片機(jī)的電氣性能是相當(dāng)出眾的。其I/O口高電平時(shí)最大允許拉出和低電平時(shí)最大允許吸進(jìn)的電流為25mA,可直接驅(qū)動(dòng)LED數(shù)碼管或給外部器件供電(如外接串行E2PROM可通過PIC單片機(jī)引腳獲取電能)。PIC單片機(jī)I/O口的強(qiáng)驅(qū)動(dòng)能力是其他單片機(jī)無法比擬的。同時(shí),PIC單片機(jī)I/O引腳內(nèi)置性能優(yōu)良的瞬態(tài)保護(hù)二極管,有很強(qiáng)的瞬態(tài)抑制能力。其引腳可直接通過三極管驅(qū)動(dòng)電磁繼電器,無需光電隔離電路;也可經(jīng)限流電阻直接與220V/50Hz市電相接,完成零點(diǎn)檢測(cè)、頻率測(cè)量等。(3)寄存器組與強(qiáng)大的位尋址功能。PIC單片機(jī)的I/O口寄存器、定時(shí)器、程序計(jì)數(shù)器及通用RAM都以寄存器形式統(tǒng)一編址,只需一個(gè)周期就可完成訪問和操作。而且,所有寄存器的每一位可直接尋址,一條指令操作,較MSC-51的位尋址簡(jiǎn)便很多。位尋址功能的強(qiáng)大對(duì)實(shí)時(shí)控制、I/O口模擬實(shí)現(xiàn)各種串行通信協(xié)議是十分有利的。2)PIC單片機(jī)典型的程序格式(1)程序格式。;------------------------------------------------------------------------------------------------ORG0000GOTOMAIN ;跳過中斷矢量
ORG0004GOTOINTSRV ;0004H為中斷服務(wù)程序入口地址;------------------------------------------------------------------------------------------------ORG10H ;從0005H開始存放MAIN
…
;主程序區(qū)
INTSRV…
;中斷服務(wù)程序區(qū)SUBRTN…
;子程序區(qū)
END ;程序結(jié)束符(2)操作數(shù)的表示。①十進(jìn)制(如255)表示為:D'255'或直接寫為255;②十六進(jìn)制(如16)表示為:H'16'或16H或ox16;③二進(jìn)制(如00110011)表示為:B'00110011';④八進(jìn)制(如567)表示為:O'567';⑤字符(如C)表示為:'C'。(3)注意事項(xiàng)。①標(biāo)號(hào)必須頂格書寫,即標(biāo)號(hào)的第一個(gè)字母必須位于每行的第一列,標(biāo)號(hào)與指令助記符之間至少有一個(gè)空格;②指令助記符(包括偽指令)不能頂格,若指令行沒有標(biāo)號(hào),則前面至少要有一個(gè)空格;③操作數(shù)中不能有空格;④注釋語句前要加“;”。3)PIC16F877單片機(jī)值得開發(fā)應(yīng)用的功能模塊
PIC16F877單片機(jī)內(nèi)部資源十分豐富,本實(shí)例涉及得很少,有待讀者開發(fā)應(yīng)用的還有:中斷功能、定時(shí)/計(jì)數(shù)器、低功耗模式、看門狗定時(shí)器、A/D轉(zhuǎn)換、PWM輸出、用戶可用的E2PROM與FLASHROM和串行與并行通信。
7.思考與練習(xí)題
(1)怎樣建立MPLAB-ICD與微機(jī)之間的通信?
(2)利用圖4.1.4中的RTCC按鍵實(shí)現(xiàn)三種以上花樣的切換,自行設(shè)計(jì)閃爍花樣程序。
(3)利用高奇晶圓公司(http://)提供的有關(guān)資料,借助MPLAB-ICD和ICDDEMO教學(xué)實(shí)驗(yàn)板開發(fā)PIC16F877單片機(jī)的LCD顯示、A/D轉(zhuǎn)換與PWM功能。
(4)利用PIC16F877設(shè)計(jì)一個(gè)工頻(50Hz)交流電頻率計(jì)。實(shí)訓(xùn)4.2162點(diǎn)陣字符液晶顯示器的應(yīng)用
1.實(shí)訓(xùn)目的
(1)了解PIC單片機(jī)實(shí)時(shí)在線仿真技術(shù),熟悉PICMATE2002開發(fā)系統(tǒng)的使用方法。
(2)掌握PIC單片機(jī)常用型號(hào)PIC16C74的特點(diǎn)、硬件結(jié)構(gòu)與外圍電路。
(3)掌握162點(diǎn)陣字符液晶(LCD)與PIC單片機(jī)接口的硬件、軟件設(shè)計(jì)方法。
(4)學(xué)習(xí)PIC單片機(jī)按鍵程序的設(shè)計(jì)方法。
(5)加深對(duì)PIC指令系統(tǒng)的了解,學(xué)會(huì)編寫較復(fù)雜的PIC匯編程序,熟練掌握其調(diào)試方法。2.實(shí)訓(xùn)設(shè)備與器件PICMATE2002實(shí)時(shí)在線仿真器1臺(tái)PICMATE2002實(shí)時(shí)在線仿真器的外形如圖4.2.1所示,它采用專用仿真芯片,能對(duì)PIC單片機(jī)全實(shí)時(shí)地進(jìn)行仿真,不占用任何資源。同時(shí)又提供了強(qiáng)大的仿真調(diào)試功能,如多種斷點(diǎn)、指令跟蹤與邏輯記錄,極大地提高了PIC單片機(jī)的開發(fā)效率,是一款性價(jià)比很高的硬件仿真器。圖4.2.1PICMATE2002實(shí)時(shí)在線仿真器外觀2)PICSTART-PLUS全系列編程器1臺(tái)
PICSTART-PLUS是在MICROCHIP公司MPLAB-IDE集成開發(fā)環(huán)境下使用的PIC系列單片機(jī)燒寫工具,如圖4.2.2所示,它可燒寫幾乎所有的PIC系列單片機(jī)。該編程器性能可靠,尤其適合PIC單片機(jī)開發(fā)階段或中、小批量生產(chǎn)的芯片燒寫。其主要特點(diǎn)如下:
(1)用串行接口(COM端口,RS-232方式)與PC機(jī)相連,便于攜帶安裝。
(2)可以方便地讀出芯片程序區(qū)的內(nèi)容。
(3)全自動(dòng)燒寫校驗(yàn)。
(4)全面的信息提示,讓用戶清楚了解工作狀態(tài)。
(5)配備40腳的DIP燒寫座,能直接燒寫8~40引腳的PIC系列DIP芯片。圖4.2.2PICSTART-PLUS編程器外觀3)PICMATE2002配套實(shí)驗(yàn)板1塊為便于用PICMATE2002開發(fā)PIC16C74單片機(jī),我們?cè)O(shè)計(jì)了一款實(shí)驗(yàn)板,如圖4.2.3所示。板上配備了162點(diǎn)陣字符液晶顯示器、DS1302時(shí)鐘電路、DS18B20單線數(shù)字溫度傳感器、24C01EEPROM存儲(chǔ)器和MAX232接口芯片等。
4)開發(fā)用PC機(jī)1臺(tái)由于利用PICMATE2002開發(fā)PIC單片機(jī)需要在PC機(jī)上安裝其仿真軟件和編程軟件MALAB,因此PC機(jī)配置建議為:586以上,EPP模式打印口,32MB以上內(nèi)存和Windows98/2000操作系統(tǒng)。5)PIC16F74單片機(jī)1片本實(shí)訓(xùn)以PIC16C74為開發(fā)對(duì)象,為便于多次編程,實(shí)際選用該型號(hào)新的FLASH替代品種:PIC16F74。PIC16F74在功能和結(jié)構(gòu)上與PIC16C74完全一樣,但其程序存儲(chǔ)器為FLASH存儲(chǔ)器,可反復(fù)擦寫。
3.項(xiàng)目設(shè)計(jì)要求設(shè)計(jì)162點(diǎn)陣字符液晶與PIC16F74的硬件接口,編寫與調(diào)試接口程序;并利用8個(gè)按鍵K0、K1、K2、K3、K4、K5、K6、K7(分別對(duì)應(yīng)RD0、RD1、RD2、RD3、RD4、RD5、RD6、RD7)作為輸入(此處的開關(guān)符號(hào)與實(shí)物圖保持一致),依次按下K0~K7時(shí)(口線由高變低),在162LCD第一行第一格開始依次顯示“A、B、C、D、E、F、G、H”8個(gè)字母。圖4.2.3自制實(shí)驗(yàn)板4.實(shí)訓(xùn)內(nèi)容1)硬件設(shè)計(jì)(1)PIC16F74引腳圖。圖4.2.4PIC16F74引腳圖(PDIP封裝)(2)162LCD與PIC16F74的連接。本實(shí)訓(xùn)所用硬件為圖4.2.3所示的自制實(shí)驗(yàn)板,其原理圖如圖4.2.5所示,162LCD與PIC16F74的連接如下:①LCD的DB4~DB7依次與單片機(jī)的RB2~RB5連接,為數(shù)據(jù)線,DB0~DB3未使用。②RS為顯示、指令選擇線,與單片機(jī)RB1連接,當(dāng)RS為高電平時(shí)單片機(jī)向LCD模塊進(jìn)行讀/寫操作。
③E為數(shù)據(jù)接收、發(fā)送標(biāo)志,與單片機(jī)RA5相連,每當(dāng)E線向LCD模塊發(fā)送一個(gè)脈沖,LCD模塊與單片機(jī)之間將進(jìn)行一次數(shù)據(jù)交換。④R/W為讀/寫選擇線,接地,單片機(jī)只做對(duì)LCD模塊的寫操作。⑤A、K分別是LCD模塊背光的正、負(fù)電源,我們將用單片機(jī)RE0/AN5控制背光。2)軟件設(shè)計(jì)
(1)PIC16F74內(nèi)部資源。①程序存儲(chǔ)器布局。PIC16F74片內(nèi)程序存儲(chǔ)器共4K,分為兩頁,程序計(jì)數(shù)器寬度為13位,如圖4.2.6所示。其復(fù)位地址、中斷向量與PIC16F877相同。②數(shù)據(jù)存儲(chǔ)器布局。PIC16F74的數(shù)據(jù)存儲(chǔ)器的布局如圖4.2.7所示,共分兩頁,每頁128字節(jié),其中第一頁的20h~7Fh和第二頁的A0h~FFh為通用寄存器。③狀態(tài)寄存器各位的定義。PIC16F74的狀態(tài)寄存器各位的定義與PIC16F877相同,如表4.1.2所示。圖4.2.6PIC16F74程序存儲(chǔ)器布局圖圖4.2.7PIC16F74數(shù)據(jù)存儲(chǔ)器配置(2)程序流程圖。本實(shí)訓(xùn)中,PIC16F74與162液晶采用4線連接的間接控制方式,先對(duì)162LCD進(jìn)行初始化設(shè)置。162LCD初始化的參考流程如圖4.2.8所示。圖4.2.8162LCD4線連接時(shí)的初始化流程圖4.2.9主程序流程(3)源程序。源程序如下:;----------------------------INDF EQU 0HTMR0 EQU 1HPCL EQU 2HSTATUS EQU 3HFSR EQU 4HRA EQU 5HRB EQU 6HRC EQU 7HRD EQU 8HRE EQU 9H;----------------------------TRISA EQU 85HTRISB EQU 86HTRISC EQU 87HTRISD EQU 88HTRISE EQU 89HINTCON EQU 0BHPIR1 EQU 0CHADRES EQU 1EHADCON0 EQU 1FHPIE1 EQU 8CHADCON1 EQU 9FH ;----------狀態(tài)寄存器位定義----------C EQU 0DC EQU 1Z EQU 2PD EQU 3TO EQU 4RP0 EQU 5RP1 EQU 6IRP EQU 7;----------復(fù)位地址--------------PIF74 EQU 0000H;--------數(shù)據(jù)寄存器定義----------COUNT EQU 34HCOUNT1 EQU 35HR0 EQU 36HR1 EQU 37HR2 EQU 38H;----------------------------------------------;LCD有關(guān)宏定義;----------------------------------------------;------定義LCD控制I/O口--------LCD_DATA EQU RBLCD_CNTL1 EQU RBLCD_CNTL2 EQU RARS EQU 1E EQU 5;--------LCD模塊命令----------------------DISP_ON EQU 0x0C ;開顯示DISP_ON_C EQU 0x0E ;開顯示,開指針DISP_ON_B EQU 0x0F ;開顯示,開指針,開閃爍DISP_OFF EQU 0x08 ;關(guān)顯示CLR_DISP EQU 0x01 ;清顯示的操作數(shù)ENTRY_INC EQU 0x06 ;操作數(shù)ENTRY_INC_S EQU 0x07 ;操作數(shù)ENTRY_DEC EQU 0x04 ;操作數(shù)ENTRY_DEC_S EQU 0x05 ;操作數(shù)DD_RAM_ADDR EQU 0x80 ;初始化第一行顯示的操作數(shù)DD_RAM_UL EQU 0xc0 ;初始化第二行顯示的操作數(shù);-------設(shè)置LCD顯示相關(guān)寄存器-------------Byte EQU 20HCount EQU 21HCount1 EQU 22HCount2 EQU 23HLCD_DATA1 EQU 24HLINE1 EQU 25HLINE2 EQU 26HDAT EQU 27H;-----------------------------------------------------;主程序;----------------------------------------------------- ORG PIF74 GOTO MAINMAIN CALL LCDMAIN0 CALL KEY GOTO MAIN0
KEY BSF STATUS,RP0;選種bank1 MOVLW 0FFH MOVWF TRISD ;RD設(shè)為輸入
GOTO KEY10KEY10BCF STATUS,RP0 MOVF RD,1 SUBWF RD,0 BTFSC STATUS,Z ;若運(yùn)算結(jié)果為0,則Z=1 GOTO K0 RETURN;--------按鍵判斷---------------------K0 CALL DELAY1 ;延時(shí)去抖
MOVF RD,1 BTFSS RD,0 GOTO KEY0 BTFSS RD,1 GOTO KEY1 BTFSS RD,2 GOTO KEY2 BTFSS RD,3 GOTO KEY3 BTFSS RD,4 GOTO KEY4 BTFSS RD,5 GOTO KEY5 BTFSS RD,6 GOTO KEY6 BTFSS RD,7 GOTO KEY7 RETURN;-------------------------------------------------------------KEY0 BTFSS RD,0 ;判斷KEY0是否釋放
GOTO KEY0 MOVLW 'H';
CALL putcLCD RETURNKEY1 BTFSS RD,1 ;判斷KEY1是否釋放
GOTO KEY1 MOVLW 'B' ;
CALL putcLCD RETURNKEY2 BTFSS RD,3 ;判斷KEY2是否釋放
GOTO KEY2 MOVLW 'C' ;
CALL putcLCD RETURNKEY3 BTFSS RD,3 ;判斷KEY3是否釋放
GOTO KEY3 MOVLW 'D' ;
CALL putcLCD RETURNKEY4 BTFSS RD,4 ;判斷KEY4是否釋放
GOTO KEY4 MOVLW 'E' CALL putcLCD RETURNKEY5 BTFSS RD,5 ;判斷KEY5是否釋放
GOTO KEY5 MOVLW 'F' CALL putcLCD RETURNKEY6 BTFSS RD,6 ;判斷KEY6是否釋放
GOTO KEY6 MOVLW 'G' ;
CALL putcLCD RETURNKEY7 ;判斷KEY7是否釋放
BTFSS RD,7 GOTO KEY7 MOVLW 'H' ;
CALL putcLCD RETURN;---------------------------------------------LCDCALLBRIGHT CALL InitLCD ;初始化LCD顯示
RETURN;------------------------------------------------;162LCD顯示子程序;---------點(diǎn)亮背光---------------------------BRIGHTBSF STATUS,RP0;選種bank1MOVLW 0MOVWF TRISEBCF STATUS,RP0BCF RE,0 ;打開背光
BSF RE,1 ;光蜂鳴器
RETURN;---------LCD初始化子程序---------------InitLCD BSF STATUS,RP0 ;Bank1 MOVLW 0xc1 ;設(shè)置RB1~RB5為輸出
MOVWF TRISB BCF TRISA,5 ;E為輸出
BCF STATUS,RP0 ;bank0;------------------------------------------------- BCF LCD_CNTL1,RS ;RS=0; MOVLW B'00110000' ;DB7=0,DB6=0,DB5=1,DB4=1 MOVWF LCD_DATA BSF LCD_CNTL2,E ;E=1 NOP BCF LCD_CNTL2,E ;E=0; CALL delay_10ms;------------------------------------------------- BCF LCD_CNTL1,RS ;RS=0; MOVLW B'00110000' ;DB7=0,DB6=0,DB5=1,DB4=1 MOVWF LCD_DATA BSF LCD_CNTL2,E ;E=1 NOP BCF LCD_CNTL2,E ;E=0; CALL delay_10ms;------------------------------------------------- BCF LCD_CNTL1,RS ;RS=0; MOVLW B'00110000' ;DB7=0,DB6=0,DB5=1,DB4=1 MOVWF LCD_DATA BSF LCD_CNTL2,E ;E=1 NOP BCF LCD_CNTL2,E ;E=0;
CALL delay_10ms;--------------功能設(shè)置----------------------- MOVLW b'00101000' ;使用4位總線LCD顯示兩行
CALL SendCmd MOVLW DISP_ON_B ;開顯示
CALL SendCmd MOVLW ENTRY_INC ;設(shè)置指針移動(dòng)方式
CALL SendCmd MOVLW DD_RAM_ADDR ;設(shè)置起始地址
CALL SendCmd MOVLW 0x01 ;清屏
CALL SendCmd RETURN;---------------------------------------------------------------------------;putcLCD:將字符數(shù)據(jù)送入LCD;本程序?qū)⒆址麛?shù)據(jù)分成了高半字節(jié)和低半字節(jié)分別輸入;先送入的是高半字節(jié);--------------------------------------------------------------------------putcLCD MOVWF Byte SWAPF Byte,W ;寫入高半字節(jié)
MOVWF LCD_DATA1 RLF LCD_DATA1,1 RLF LCD_DATA1,1 MOVLW 0x3c ANDWF LCD_DATA1,1 MOVF LCD_DATA1,w MOVWF LCD_DATA BSF LCD_CNTL1,RS ;設(shè)置為送數(shù)據(jù)模式
BSF LCD_CNTL2,E ;發(fā)送數(shù)據(jù)
BCF LCD_CNTL2,E MOVF Byte,W ;送低半字節(jié)
MOVWF LCD_DATA1 RLF LCD_DATA1,1 RLF LCD_DATA1,1 MOVLW 0x3c ANDWF LCD_DATA1,1 MOVF LCD_DATA1,w MOVWF LCD_DATA BSF LCD_CNTL1,RS ;設(shè)置為送數(shù)據(jù)模式
BSF LCD_CNTL2,E ;發(fā)送數(shù)據(jù)
BCF LCD_CNTL2,E CALL delay_10ms RETURN;-----------------------------------------------------------------------------;SendCmd:送命令到LCD;本程序?qū)⒚顢?shù)據(jù)分成了高半字節(jié)和低半字節(jié)分別輸入;先送入的是高半字節(jié);-----------------------------------------------------------------------------SendCmd MOVWF Byte SWAPF Byte,W ;送入命令的高字節(jié)
MOVWF LCD_DATA1 RLF LCD_DATA1,1 RLF LCD_DATA1,1 MOVLW 0x3c ANDWF LCD_DATA1,1 MOVF LCD_DATA1,w MOVWF LCD_DATA BCF LCD_CNTL1,RS ;設(shè)置為送命令模式
BSF LCD_CNTL2,E ;發(fā)送數(shù)據(jù)信號(hào)
BCF LCD_CNTL2,E MOVF Byte,W ;送命令的低字節(jié)
MOVWF LCD_DATA1 RLF LCD_DATA1,1 RLF LCD_DATA1,1 MOVLW 0x3c ANDWF LCD_DATA1,1 MOVF LCD_DATA1,w MOVWF LCD_DATA BCF LCD_CNTL1,RS;設(shè)置為送命令模式
BSF LCD_CNTL2,E ;發(fā)送數(shù)據(jù)信號(hào) BCF LCD_CNTL2,E CALL delay_10ms RETURN;------------------------------------------------------;clrLCD:清除LCD顯示;------------------------------------------------------clrLCD MOVLW CLR_DISP ;
CALL SendCmd RETURN
;------------------------------------------------------;L1homeLCD:將顯示指針定位在第一行;------------------------------------------------------L1homeLCD MOVLW DD_RAM_ADDR CALL SendCmd RETURN;-----------------------------------------------------;L2homeLCD:將顯示指針定位在第二行;------------------------------------------------------L2homeLCD MOVLW DD_RAM_UL CALL SendCmd RETURN;-----------------------------------------------------;LongDelay:延時(shí)25ms子程序;-----------------------------------------------------LongDelay CLRF Count MOVLW D'100' MOVWF Count1 MOVLW 0x03 MOVWF Count2LDloop DECFSZ Count,f GOTO LDloop DECFSZ Count1,f GOTO LDloop RETURN;-----------延時(shí)1ms-------------------------------------delay_10ms CLRF Count MOVLW D'40' MOVWF Count1Ldloop1DECFSZ Count,f GOTO Ldloop1 DECFSZ Count1,f GOTO LDloop RETURN;-----------------------延時(shí)1ms---------------------------DELAY1MOVLW D'150' MOVWF CNT1DEL2MOVLW D'150'MOVWFCNT0DEL1DECFSZ CNT0GOTO DEL1DECFSZ CNT1GOTO DEL2RETURN;------------------------------------------------------------ END;------------------------------------------------------------
5.調(diào)試方法與步驟
1)安裝PICMATE2002仿真軟件運(yùn)行PICMATE2002安裝軟件setup.exe,根據(jù)提示即可安裝成功。安裝成功后在安裝目錄下產(chǎn)生下列文件:PICMATE2002.EXE:仿真軟件;PICMATE.HELP:幫助文件;MPASMWIN.EXE:編譯文件。2)PICMATE2002仿真軟件使用步驟
(1)正確連接硬件。PICMATE2002仿真軟件不提供軟件仿真功能,因此它不能脫離硬件工作。用戶在使用之前必須正確連接好硬件。
(2)啟動(dòng)軟件。雙擊PICMATE2002運(yùn)行快捷方式,或者從開始菜單來運(yùn)行它。
(3)系統(tǒng)配置。點(diǎn)擊系統(tǒng)操作欄上的“系統(tǒng)”菜單,選擇“設(shè)置”,在“設(shè)置”窗口中選擇相應(yīng)的功能,如圖4.2.10所示。圖4.2.10PICMATE2002系統(tǒng)設(shè)置(4)仿真器自檢。為了確認(rèn)仿真器是否已經(jīng)可靠連接,并且硬件各部分功能均正常,一般在使用之前執(zhí)行一次仿真器自檢操作。點(diǎn)擊系統(tǒng)操作欄上的“系統(tǒng)”菜單,選擇“仿真器自檢”。3)編輯源程序源程序可在PICMATE2002的編輯區(qū)中編輯,如果這樣做,一種方法是應(yīng)先按“4)新建一個(gè)項(xiàng)目”后進(jìn)行源程序編輯。另一個(gè)可行的方法是,在其他文本編輯軟件中編輯好源程序,在“新建項(xiàng)目”時(shí)作為節(jié)點(diǎn)文件加進(jìn)項(xiàng)目文件中,進(jìn)行編譯調(diào)試。
4)新建一個(gè)項(xiàng)目
(1)輸入項(xiàng)目管理文件名。首先使用“項(xiàng)目”菜單下的“新建項(xiàng)目”命令打開項(xiàng)目管理文件命名對(duì)話框,如圖4.2.11所示。在文件名欄下輸入項(xiàng)目管理文件名(以下稱項(xiàng)目名)。同時(shí)在這個(gè)對(duì)話框內(nèi)選擇文件的存取路徑。完成后按“保存”按鈕,自動(dòng)進(jìn)入編輯項(xiàng)目屬性界面。圖4.2.11創(chuàng)建項(xiàng)目管理文件名對(duì)話框(2)編
溫馨提示
- 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. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 物流服務(wù)合同書范本特點(diǎn)
- 經(jīng)典企業(yè)保證書案例
- 應(yīng)聘者責(zé)任承諾
- 電動(dòng)液壓車采購協(xié)議
- 個(gè)人信譽(yù)承諾書
- 預(yù)售房屋買賣合同范本
- 沙石料銷售購銷協(xié)議
- 小產(chǎn)權(quán)房房屋交易合同模板
- 廉潔招標(biāo)保證書
- 高性能筆記本采購合同
- 2024智能變電站新一代集控站設(shè)備監(jiān)控系統(tǒng)技術(shù)規(guī)范部分
- 二年級(jí)數(shù)學(xué)上冊(cè)口算天天練
- 2024國家開放大學(xué)電大本科《液壓氣動(dòng)技術(shù)》期末試題及答案
- 商務(wù)服務(wù)機(jī)器人技術(shù)現(xiàn)狀與未來發(fā)展趨勢(shì)研究
- 工業(yè)物聯(lián)網(wǎng)(IIoT)行業(yè)發(fā)展全景調(diào)研與投資趨勢(shì)預(yù)測(cè)研究報(bào)告
- 金融數(shù)據(jù)分析-以Python為工具 課件 一、金融數(shù)據(jù)分析概覽
- 佛山市、三水區(qū)2022-2023學(xué)年七年級(jí)上學(xué)期期末地理試題【帶答案】
- 小學(xué)美術(shù)教學(xué)課題研究報(bào)告
- 2024屆湖北高三元月調(diào)考數(shù)學(xué)試卷含答案
- DL∕T 1476-2023電力安全工器具預(yù)防性試驗(yàn)規(guī)程
- 小麥品種冬春性及鑒定技術(shù)課件講解
評(píng)論
0/150
提交評(píng)論