第一部分 MCD1(MPLAB-ICD)……………………………………………3
第一章
MPLAB-ICD概述……………………………………………31.1什麼是MPLAB-ICD …………………………………………………………3
1.2MPLAB-ICD能幫你做什麼? ………………………………………………3
1.3MPLAB-ICD使用的資源 ……………………………………………………4
1.4MPLAB-ICD的各組成部件 …………………………………………………4
1.4.1MPLAB-ICD主機………………………………………………………4
1.4.2MPLAB-ICD仿真頭……………………………………………………5
1.4.3MPLAB-IDE集成開發軟體包…………………………………………5
1.4.4ICDDEMO 教學實驗板 …………………………………………………5
1.5MPLAB-IDE集成開發環境 …………………………………………………6
第二章
MPLAB-ICD的安裝和使用 …………………………………………72.1MPLAB-ICD對計算機主機的要求 …………………………………………7
2.2安裝硬體 ………………………………………………………………………7
2.3安裝軟體 ………………………………………………………………………9
2.4使用MPLAB-ICD ……………………………………………………………9
2.4.1建立一個16進制調試檔案……………………………………………9
2.4.2設定MPLAB-ICD和MPLAB…………………………………………15
2.4.3對PIC16F877進行編程………………………………………………19
2.4.4運行及調試……………………………………………………………20
第二部分 MCD1DEMO教學實驗板……………………………………22
前言MCD1DEMO教學實驗板功能概述……………………………22
第三章
用實驗板作一個開發實驗 ………………………………………23附錄
MCD-DEMO線路圖MCD-DEMO元件位置圖(各跳線、拔碼開關編號)
MCD-DEMO跳線、拔碼開關操作說明
第一部分MCD1(MPLAB-ICD)
第一章 MPLAB-ICD概述
1.1. 什麼是MPLAB-ICD
MPLAB-ICD是針對MICROCHIP公司的PIC16F87X系列MCU的廉價開發工具。MPLAB-ICD既是一個線上調試器,又是一個編程器。它工作於MPLAB-IDE集成開發環境下,利用了MICROCHIP公司的線上串列編程技術(In-Circuit Serial Programming™),在所仿真的MCU(PIC16F87X)中嵌入監控程式來實現實時仿真。將其仿真頭直接連線到套用系統的MCU插座中,就如同一片PIC16F87X一樣運行用戶的應用程式。
MPLAB-ICD可以用於PIC16F87x或其他某些型號(PIC16C/Fxxx) MCU套用產品的電路與程式調試。
MPLAB-ICD有如下特性:
線上調試功能
源程式級的代碼調試
實時、單步或斷點運行程式
暫存器觀察
可由目標系統提供工作電壓
工作電壓範圍為3.0V 到 5.5V
工作頻率範圍為32KHZ到20MHZ
工作於MPLAB-IDE集成開發環境,該軟體兼容Microsoft Windows ® 3.X、Windows 95/98、 Windows NT ® 和 Windows 2000 ®等作業系統。
RS-232 串列接口方式
1.2. MPLAB-ICD能幫你做什麼?
MPLAB-ICD可以讓你:
實時仿真調試源程式
調試目標板硬體系統
使用MICROCHIP的“線上串列編程技術(In-Circuit Serial Programming™)”對目標套用控制器進行編程。
1.3. MPLAB-ICD使用的資源
由於仿真MCU(PIC16F87X(A))內嵌調試監控程式和使用MICROCHIP“線上串列編程”功能,MPLAB-ICD將會占用仿真MCU中的以下資源:
MCLR/VPP腳(系統復位/編程電壓腳)
禁止低電壓“線上串列編程(ICSP)”
RB6和RB7保留為編程和線上調試用
六個通用檔案暫存器保留給調試監控程式(見表1-1)
程式存儲器第一條指令(地址0X0000)必須是空操作指令NOP
程式存儲器的最後256或88個字被保留用來存放調試代碼。(根據晶片類型不同而所占位元組不同,見表1-1)。
處理器類型 被占用的通用暫存器 被占用的程式存儲器
PIC16F870/871/872(A) 0x70, 0x0BB-0x0BF 0x06E0-0x07FF
PIC16F873/874(A) 0x70, 0x0EB-0x0F0 0x0EE0-0x0FFF
PIC16F876/877(A) 0x70, 0x1EB-0x1EF 0x1F00-0x1FFF
表1-1不同晶片被占用的資源
1.4. MPLAB-ICD的各組成部件
MPLAB-ICD由以下部件構成:
MCD1(MPLAB-ICD)主機
MCD1(MPLAB-ICD)仿真頭
MPLAB-IDE集成開發軟體包(配套光碟內)
MCD1-DEMO教學實驗板
9V,0.5A的直流電源適配器
1.4.1MPLAB-ICD主機
MPLAB-ICD主機包括RS232接口與主控MCU,掌控與上位機的通訊、控制邏輯和所有的調試、編程功能。
MPLAB-ICD主機上可以用自身輸入電源,也可以來自用戶目標模組(或教學實驗板)的供電,所需要的電流最大為70mA(不包括目標板自身消耗的電流)。
1.4.2 MPLAB-ICD仿真頭
MPLAB-ICD仿真頭上有:
RJ-6插座:提供與主機的接口
40腳IC座:仿真MCU插座
引出腳:提供與套用目標板的接口(根據所要仿真的晶片型號選擇40或28引腳)
跳線J2:用於選擇仿真器主機的供電來自用戶板還是自身外接電源(跳線置1,2時由用戶板供電,置2,3時用自身電源)
使用時,仿真頭相當於一實際MCU,插在套用目標板上的MCU插座上。
1.4.3 MPLAB-IDE集成開發軟體包
MPLAB-IDE集成開發軟體包為用戶提供一個開發、調試的集成開發環境,可運行於WINDOWS95/98或WINDOWS NT,WINDOWS2000等作業系統。
1.4.4 MCD1-DEMO教學實驗板
MCD1-DEMO教學實驗板和與之配套的學習程式是PIC單片機學習網專門設計的。目的在於使初學者能夠利用它較快地掌握PIC16C/FXXX單片機套用產品的電路與程式設計技術。教學實驗演示板上包括了MCU套用產品中常用的電路模組。在此基礎上,還為初學者設計了一些足以體現各個常用電路模組功能的實驗與程式範例,以便於初學者通過自學或在有經驗的人員指導下能夠較好的掌握其設計方法。
教學實驗板通過MCD1仿真頭,或直接將MCU插在實驗板上並用六芯連線電纜與MCD1主機連線
1.5 MPLAB-IDE集成開發環境
MPLAB-IDE提供一個開發、調試用戶目標系統的集成開發環境。MPLAB-ICD相應的軟體也嵌入到了MPLAB-IDE軟體包里。
本資料主要介紹MPLAB-ICD的設定和基本操作,關於MPLAB-IDE的詳細介紹,請參考《MPLAB-IDE集成開發環境用戶指南》。(MICROCHIP文檔資料號:DS51025,英文版,需要的用戶可以到MICROCHIP網站或PIC單片機學習網下載)。
第二章 MPLAB-ICD的安裝和使用
2.1 MPLAB-ICD對計算機主機的要求
為了更好地發揮調試系統的性能,必須把MPLAB-IDE軟體包安裝到符合以下要求的計算機里:
奔騰(PENTIUM)系列PC或兼容計算機
微軟公司的作業系統:WINDOWS95/98,WINDOWS-NT,或者WINDOWS2000
至少16MB的系統記憶體,推薦使用32MB系統記憶體
45MB可使用的磁碟空間
一個空餘的串列通訊口
2.2 安裝硬體
請按下列步驟安裝MCD1硬體系統:
2.2.1安裝仿真MCU
按三種不同情況安裝仿真MCU。
1、目標板上沒有安裝RJ-6插座:將仿真MCU (PIC16F87X)插入到MPLAB-ICD仿真頭上仿真MCU插座(40腳IC座)裡面。( 參見表2-1)
用戶目標板上的MCU型號 仿真頭上相應的MCU型號
PIC16F870(A) PIC16F871(A)
PIC16F871(A) PIC16F871(A)
PIC16F872(A) PIC16F871(A)
PIC16F873(A) PIC16F874(A)
PIC16F874(A) PIC16F874(A)
PIC16F876(A) PIC16F877(A)
PIC16F877(A) PIC16F877(A)
表2-1
2、目標板上已安裝RJ-6插座:將仿真MCU-PIC16F87X直接插入目標上的MCU插座裡面。
3、目標板上沒有安裝RJ-6插座:將仿真MCU-PIC16F87X直接插入目標上的MCU插座裡面,用配套6PIN連線線連線MCD1主機和用戶板【各線功能如下: 黑線:Vpp,紅線:+VDD,綠線:GND,黃線RB7,白線RB6,棕線RB3(若仿真器使用自身電源則VCC不用接用戶板)】。
2.2.2連線主機、仿真頭和目標(教學實驗)板
1、安裝仿真頭:把仿真頭插入套用目標(教學演示)板的MCU插座里。如果調試的MCU是28引腳,則需將仿真頭的引出腳調整成28腳,然後插到目標(教學實驗)板上的28腳的鎖緊座里。
如目標板上有安裝RJ-6插座或用配套6芯排線連線,則不需此步驟。
RJ-6電纜內部各芯的分配如下表2-2:
J2各芯編號 信號
6 RB3
5 RB6
4 RB7
3 接地
2 +VDD
1 Vpp
表2-2
2、用六芯扁平電纜連線MCD1主機和MCD1-DEMO教學實驗板(或用戶套用目標板)。
3、用RS-232串列口專用九芯電纜連線計算機的串列口和MCD1主機。
4、接上教學實驗板(或用戶套用目標板)的電源。使用的電源為9V、0.5A的電源適配器(插頭中心為電源負極)。
5、打開計算機主機電源。
2.3 安裝軟體
MPLAB-ICD是MPLAB-IDE集成開發環境的一個可插入(ADD-ON)工具。用戶應按如下步驟安裝MPLAB-IDE集成開發環境軟體包:
1.進入WINDOWS環境裡,把MCD1 的CD-ROM插入光碟驅動器里。在光碟里找到MPLAB-IDE 5.70.40的軟體包.
2.執行安裝程式:
在WINDOWS操作界面上找到安裝檔案後,直接點擊運行即可。
3.按指導過程來安裝MPLAB-IDE集成開發環境軟體包。一定記住安裝過程中當出現要求選擇MPLAB-ICD部件的會話視窗時,要點擊並選擇該部件,以便系統安裝。
2. 4使用(MCD1)MPLAB-ICD
連線硬體並安裝完軟體之後,用戶可以先在MPLAB-IDE的純編輯模式下編寫程式。在*.ASM程式編輯完成後就可以開始使用ICD。以下將以源程式tut877.asm為例說明使用過程。
2.4.1 建立一個16進制調試檔案
用戶需要建立一個新“項目”(*.pjt),以便將源檔案*.asm和建立的十六進制檔案*.hex包含在內進行調試。
2.4.1.1新“項目”目錄
為這個新項目建立一個目錄:\MPLAB\tut877。將tut877.asm檔案從\MPLAB目錄移動到該目錄下面(注意:MPLAB5.XX要求項目*.pjt必須和載入源檔案*.asm處於同一個資料夾)。
2.4.1.2 新“項目”
選擇Project>New Project,選擇新項目所在的路徑,然後在檔案名稱會話視窗里輸入tut877.prj。
點擊“OK”按鈕(圖2-1)之後編輯項目會話視窗(Edit Project dialog)將會打開(如圖2-2所示)。
圖2-1:建立新項目- tut877.prj
圖2-2:設定開發模式前編輯項目會話視窗
2.4.1.3 項目會話視窗
用戶將會在如圖2-2所示的編輯項目會話視窗看到開發模式設定(Development Mode)。圖中顯示出當前工作於軟體模擬(MPLAB-SIM)方式,MCU是PIC12C508處理器。這些狀態都是用戶以前使用MPLAB-IDE集成開發環境時的設定。而現在則需要改變這些設定。
點擊“Change”按鈕後將會出現開發模式設定(Development Mode)對話框(如圖2-3所示)。
圖2-3:設定開發模式
在Tools選單條里選擇“MPLAB-ICD Debugger”。在處理器(processor)視窗選擇PIC16F877,然後點擊“OK”(注意: 如果仿真或燒寫PIC87XA晶片,則只需要選取對應的不帶A型號。比如調試16F877A時,只需要將仿真頭晶片替換為16F877A,並選取晶片型號為16F877)。
這時MPLAB-IDE將和MPLAB-ICD主機之間建立通訊。在這個過程中,MPLAB-ICD會話視窗將會同時出現。
假如你看到一條錯誤報告信息,請重新檢查一下電源連線、插座是否牢固可靠、電纜是否連線正確。
注意在編輯項目會話視窗(Edit Project dialog)里是否正確選擇了開發模式和處理器設定。
在編輯項目會話視窗里的項目檔案(Project File)區域裡用滑鼠選取tut877.hex檔案,然後點擊節點屬性(Node Property)按鈕(如圖2-4)。執行這項操作後系統將會彈出一個節點屬性(Node Property)視窗。
圖2-4:編輯項目會話視窗
2.4.1.4 設定節點屬性
節點屬性會話視窗顯示出涉及到MPLAB-ICD的參數開關,這些參數都是MPASM彙編器的。當你首次打開該會話視窗時,所看到的設定均為該開發工具的默認設定。對於本範例中的套用,沒有必要修改該默認設定。
點擊“OK”按鈕(如圖2-5),返回到編輯項目會話視窗(Edit Project dialog)。
圖2-5:節點屬性會話視窗
圖2-6:增加節點
2.4.1.5 增加節點
在編輯項目會話視窗里點擊增加節點 (Add Node),打開添加節點會話視窗。選擇tut877.asm,然後點擊OK即可(如圖2-6)。
2.4.1.6 完成對項目的設定
在這個簡單的例子裡,在路徑選擇框裡沒有指定目錄。隨著你的套用越來越複雜,用戶將有可能需要在相應的選擇框裡指定包含相應檔案的目錄路徑。
MPASM通常會把十六進制檔案的檔案名稱(a.hex)取得和源檔案(a.asm)的檔案名稱一樣。當建立(BUILT)tut877.prj項目的時候,項目管理器將會生成一個十六進制檔案tut877.hex。
圖2-7:帶節點的編輯項目會話視窗
點擊“OK”按鈕,關閉編輯項目會話視窗(Edit Project dialog),然後從MPLAB-IDE選單項里選擇選擇命令:Project>Save Project 保存新的項目。這樣就完成了對項目的設定。
2.4.1.7 建立項目(Make Project)
現在您要從MPLAB-IDE的選單項里選擇Project>Make Project,使用MPASM宏彙編來程式來彙編應用程式。創建(BUILD ALL)以後的結果視窗中可以看到傳送給彙編器的命令行和結果信息(如圖2-8所示)。
圖2-8:創建(BUILT)以後的結果視窗
其中主要有以下三種提示信息:
1、錯誤(error):表示源檔案在…有錯誤,用戶應根據提示修改源程式;
2、警告(warring);
3、信息(Message):這並不一定是錯誤,用戶的程式代碼仍然會被正確地編譯。例如:信息【302】是提示,在指示的行號(31,32和34)里用戶指定了一個並不位於第0頁面(BANK 0)的通用暫存器。
點擊創建結果(BUILT RESULTS)視窗右上角的圖示X將關閉視窗。
2.4.2 設定MPLAB-ICD和MPLAB
這時候,MPLAB-ICD會話視窗將會出現在計算機的桌面上。用戶須選擇適當的選擇項來設定MPLAB-IDE,使之能和MPLAB-ICD的硬體一起工作(圖2-9)
圖2-9:MPLAB-ICD會話視窗
選項 選項說明
狀態 (Status)選單(不可選擇項) 狀態欄顯示被執行的MPLAB-ICD函式和狀態。當編程時,可以從這裡看到進程。當操作完成後,狀態欄將顯示信息“Waiting for use command”(等待用戶命令)
串列口和波特率選單 要確信這些設定合乎你的系統要求
上載(Upload)選項選單 現在選擇最小值,往後的範例中將會調試改變該數值
時鐘選擇範圍選單 選擇工作頻率範圍:2MHZ~10MHZ
表2-1:MPLAB-ICD會話視窗
2.4.2.1 設定ICD的編程和調試選項
為了對PIC16F87X晶片進行編程,必須先對ICD選項會話視窗(ICD Options dialog)進行設定工作,為編程作好準備。在MPLAB-ICD的會話視窗里點擊Options,打開ICD選項會話視窗(圖2-10)。
圖2-10:MPLAB-ICD選項會話視窗
注意:使用MCD1配套實驗板時,該實驗板默認是在晶體振盪方式,故要選擇Oscillator為XT模式(因4M晶振剛處於XT與HS的臨界狀態,所以如果你用XT振盪調試不順利可換成HS再重新PROGRAM試試).
2.4.2.2 配置位和晶片類型選擇
用戶將要在這個ICD選項會話視窗中設定PIC16F87X處理器的各種配置位。
點擊圖中相應的箭頭圖示,將彈出一個對應的列表,用戶應根據需要從該列表中選擇相應的選擇項。可選項及相應說明如表2-2所示。
其中,晶片(Device)欄在本例中顯示的是PIC16F877,這是在開發模式設定(Development Mode)中設定好的。要想改變這一設定,用戶需退出當前設定,輸入命令:Options > Development Mode ,然後正確選擇晶片。
可選項 選項說明
Oscillator
振盪器 本範例里使用4.000Mhz的晶體振盪器,應選擇為XT.
Watchdog Timer
看門狗定時器 對於本範例里,看門狗定時器(WDT)應關閉
Power Up Timer
上電延時定時器 對於本範例里,上電延時定時器(PWRT)應關閉
Brown Out Detect
電源掉電監測 對於本範例里,電源掉電監測(BOD)應關閉
Low Voltage Program
低電壓編程 當使用MPLAB-ICD時,低電壓燒寫應禁止。可以用RB3作為數字I/O。
Code Protect Data
EEPROM數據保護 本範例關閉了EEPROM數據保護
Flash Memory Write
閃速存儲器寫 本範例沒有使能通過EECON暫存器對FLASH存儲空間進行擦寫
Code Protect
代碼保護 本範例關閉了代碼保護
表2-2:配置位和晶片類型的選擇
2.4.2.3 晶片ID碼和代碼校驗和
在圖2-10所示的MPLAB-ICD選項會話視窗中,用戶還會看到代碼校驗和 (CHECHSUME)及ID代碼(ID Code)這兩個視窗。在本範例中,我們選擇“Use Checksum as ID”,使用代碼校驗和(CHECHSUME)作為ID代碼。
2.4.2.4 電壓選擇
用滑鼠點擊更新(Update)按鈕即可檢查目仿真器主機上電源Vdd(晶片供電)和Vpp(編程電源)的電壓值。
MPLAB-ICD的編程電壓大約為13伏特,該電壓是將電源電壓Vdd通過開關升壓電路(boost converter)升壓後得到的。
2.4.2.5 編程選項
程式地址範圍(起始地址和結束地址)是可以被讀取、編程或校驗的程式或數據存儲器地址範圍。默認的程式地址範圍被設定為用戶所選晶片的程式存儲器的最大範圍。本範例將使用默認的程式地址範圍。
確信程式選擇項(Program Options)下的所有檢查項都已經選中(有“√”符號為選中)。這意味著所有存儲器、ID代碼、配置位都將被編程。而且所有的存儲器都將會在編程之前被全部清除;晶片被設定為調試(Debug)模式。
2.4.3 對PIC16F877進行編程
點擊Program按鈕,這時候就會將tut877.hex這個十六進制檔案和調試代碼(Debug Code)寫入MPLAB-ICD仿真頭或用戶目標板(教學實驗板)中的PIC16F87X里。編程過程可能要用幾分鐘。在編程過程中,狀態欄(Status box)里將會顯示當前的操作順序。當編程過程結束後狀態欄里將會顯示信息“Waiting for user command”(等待用戶命令)。
注意:調試代碼(Debug Code)是PIC16F87X微控制器里地址範圍1F00h~1FFFh的一組特殊代碼,這些區域用來存放MPLAB-ICD線上調試功能的監控程式。
用戶可以最小化或移動MPLAB-ICD會話視窗而不能關閉它:關閉MPLAB-ICD會話視窗將退出MPLAB-ICD開發環境。假如想重新進入MPLAB-ICD,使用命令:Options>Development Mode選擇MPLAB-ICD並點擊OK即可重新使用ICD環境。
2.4.4 運行及調試
最後要做的就是運行程式,並對其進行調試。MPLAB為方便使用,把常用的一些運行、調試命令及視窗選項以小圖示的形式置於工具列中。當用戶滑鼠移至小圖示上時,背景窗體的左下角將會顯示相應的說明。
以下對常用運行、調試命令及視窗選項進行簡要的介紹。
運行(Run):點擊此項後晶片將全速運行片內程式,直至遇到斷點或是接到了停止命令。圖示:
停止(Halt the Processor):點擊此項後晶片將停止運行當前程式。圖示:
單步(Step):點擊此項後晶片將執行當前行的指令。圖示:
連續單步(Step Over):點擊此項後晶片將由當前行開始,連續執行單步操作,直至遇到斷點或是接到停止命令。圖示:
復位(Reset Processor):點擊此項後晶片將被復位。圖示:
程式存儲器視窗(Program Register Window):點擊此項後將打開程式存儲器視窗。圖示:
通用暫存器視窗(File Register Memory):點擊此項後將打開通用暫存器視窗。圖示:
特殊功能暫存器視窗(Special Function Register Window):點擊此項後將打開特殊功能暫存器(SFR)視窗。圖示:
增加新變數視窗(Create New Watch Window):點擊此項後將打開觀察變數視窗,並允許用戶添加新的觀察變數。圖示:
合理運用運行調試手段將有助於更快更好的調試用戶程式。例如:
使用變數觀察窗可以集中觀察用戶關心的變數暫存器內的數據變化情況
特殊暫存器視窗集中顯示了特殊功能暫存器內的數據,用戶根據其變化可以判斷出各功能模組的運行狀況
使用單步可以觀察到執行該行指令後的效果
使用連續單步可以較為直觀的觀察到程式的運行路徑,子程式的跳轉情況
設定斷點可以讓程式在某一句上停下,因此可以用來判斷某一子程式的入口條件是否準確,可以讓程式迅速的停在要分析的程式段上
各個運行調試手段的作用遠不止上述的幾點,這需要用戶在實際運行調試中自己體會。
注意:使用MCD1配套DEMO板實驗此程式時,須將實驗板S13的第2位置ON,在運行過程中調整實驗板上VR1的值會將A/D轉換後取得的不同值在實驗板上RC口的LED上顯示.
第二部分 MCD1-DEMO教學實驗板
前 言
MCD1-DEMO教學實驗板是PIC單片機學習網為PIC16F87X系列晶片專門設計的一款多功能的、適於教學及自學用的實驗儀器。
MCD1-DEMO教學實驗板為16F87X系列晶片的各個功能模組提供了相應的實驗電路,以便用戶調試及驗證。在此基礎上,PIC單片機學習網還為初、中級使用者設計了一些對應於實驗板功能的實驗,並為其編寫了教學實驗程式。
實驗板包括以下電路:
8個LED顯示
1602 LCD顯示
6位數碼管電路
6個獨立鍵盤
外部中斷鍵盤輸入
紅外線遙控接收輸入
RS232通信接口電路
SPI EEPROM通信電路
I2C EEPROM通信電路
DS18B20數字測溫電路(DS18B20晶片為選購器件,不在MCD1整套範圍內)
一路電位器模擬AD輸入.
一路直流蜂鳴器可做各種發音實驗.
所有IO口通過拔碼開關可獨立從DEMO板引出,方便用戶擴充其它資源
第三章 用實驗板作一個開發實驗
在本節中,我們將利用MCD1-DEMO教學實驗板做一個簡單的開發實驗。
在本次實驗中,我們以非常簡單的LED流水燈為例,介紹使用MCD1仿真調試套件開發調試一個項目的全過程.
3.1 開發前準備工作
開發前先看看你是否已經準備好了:
1、 開發工具:
MCD1(MPLAB-ICD)硬體仿真器及配合硬體使用的MPLAB-IDE軟體
2、 實驗板:
MCD1-DEMO教學實驗板.
3.2 實驗開始
針對演示板上的硬體資源,我們先用一個小程式作為學習和套用MCD1線上調試工具套件,進行項目的軟體和硬體聯合調試的範例程式,也就是當做一個用戶程式實例,而演示板暫時充當用戶電路的角色。這樣就構成了一個軟體、硬體齊全的自製項目模擬環境。
本程式實現的功能是,把連線埠RC的8條引腳全部設定為輸出模式,依次從引腳RC0到RC7送出高電平,然後再依次從引腳RC7到RC0送出高電平,並且周而復始,從而使得與該連線埠C相連的8隻發光二極體LED循環依次點亮,其效果類似於一個簡單的霹靂燈。
程式清單:
;************************************************
;《霹靂燈》程式。檔案名稱為“LED1.ASM”
;**************************************************
statusequ 3h ;定義狀態暫存器地址
portcequ 7h ;定義連線埠C的數據暫存器地址
trisc equ 87h ;定義連線埠C的方向控制暫存器地址
flag equ 25h ;定義一個控制左移/右移的標誌暫存器
org 000h ;定義程式存放區域的起始地址
nop;放置一條ICD必須的空操用指令
BSF status,5 ;設定檔案暫存器的體1
movlw 00h ;對連線埠C的方向控制碼00H先送W
movwf trisc ;再由W轉移到方向控制暫存器
bcf status,5 ;恢復到檔案暫存器體0
movlw01h ;將00000001B先送W
movwfportc ;再由W轉移到數據暫存器
bsf flag,0 ;將左右移標誌位置1,首先進行左移LED
bcf status,0 ;將標誌位C先清0
loopbtfss status,0 ;測試進位/借位位,是1則修改標誌
goto loop1 ;是0則不修改標誌
comf flag,1 ;FLAG的BIT0作為標誌位,把它取反
loop1btfss flag,0 ;判斷標誌位,是1則跳到循環左移
goto loop2 ;是0則跳到循環右移
RLF portc,0 ;循環左移連線埠C數據暫存器,結果送W
movwf portc ;將結果再送回連線埠C的數據暫存器
goto loop3 ;跳過下面兩條指令
loop2rrf portc,0 ;循環右移連線埠C數據暫存器,結果送回W
movwf portc ;將結果再送回連線埠C的數據暫存器 ;
loop3call delay ;調用廷時子程式
goto loop ;返回
;-------------------------廷時子程式----------------------------
delay ;子程式名,也是子程式入口地址
movlw 0ffh ;將外層循環參數值FFH經過W
movwf 20h ;送入用作外循環變數的20H單元
lp0 movlw 0ffh ;將內層循環參數值FFH經過W
movwf 21h ;送入用作內循環變數的21H單元
LP1 decfsz 21h,1 ;變數21H內容遞減,若為0跳躍
goto lp1 ;跳轉到LP1處
decfsz 20h,1 ;變數20H內容遞減,若為0跳躍
goto lp0 ;跳躍到LP0處
return;返回主程式
end ;源程式結束
進入該實戰演練的工序流程如下:
1.軟硬體的安裝:按照本說明書前面講的”MPLAB-ICD的安裝和使用”一節內介紹的方法操作即可.
2.創建源檔案和編輯源檔案;在此介紹一種不同於前面講的創建源檔案的方法,用Windows附屬檔案中的”記事本”這個為大家所熟知和好用的檔案編輯器,並且可以方便的加入中文注釋.不過有兩點需要注意,一是注釋前面的分號”;”必須用西文半角輸入;二是必須用”.asm”擴展名存儲到事先建立的一個專用子目錄下.
3.打開MPLAB集成開發環境:首先在WINDOWS環境下,選用開始>程式>Microchip MPLAB>MPLAB命令,啟動MPLAB並進入MPLAB的桌面.
4.創建項目:選用選單File>New或Project>New Project,在事先建立的一個專用子目錄下創建一個新項目,將用記事本創建的源檔案加入到該項目中(注意:加入的.ASM源檔案必須和建立的項目在同一個資料夾,否則項目將建立不成功).
5.建立項目中的目標檔案:選擇選單Project >Build All(項目>建立所有檔案),MPLAB將自動調用MPASM將項目檔案管理下的源檔案(.asm)彙編成十六進制的目標檔案(.hex).
6.ICD參數設定:通過選單命令Project>Edit Project或者Option>Development Mode,將開發模式設定為”MPLAB ICD Debugger”,點擊OK按鈕,打開ICD的工作視窗,在調試階段,可以按照圖2-10設定各項,但需注意Oscillator應設定為XT方式,尤其需要說明的是,選中“Enable Debug Mode”(使能調試模式)選項,在向目標單片機燒寫機器碼程式時,會將調試臨控程式同時寫入單片機的指定程式存儲器區域,然後才允許用ICD方式調試。
7.電路設定:將演示板的S1全部拔到ON,S4全部拔到OFF,S13的第5、第6、第7全部拔到OFF ,LCD不要插在演示板上,以使連線埠C只與8隻發光二極體接通;將用於選擇頻率的插針跳線插到”XT OSC”位置上.
8.向目標單片機燒寫目標程式:用戶在點擊功能按鈕”Program”向目標單片機燒寫機器碼程式時,會等待一段時間,並且在條狀的狀態信息欄中,出現提示信息。有一點需要引起注意,就是PIC16F87X單片機的FLASH程式存儲器的擦寫周期是有限的,大約為1000次,應儘量節省它的使用壽命。
9.運行和調試用戶程式和用戶電路:在各項參數設定好後,將ICD的工作視窗最小化,利用前面講的”運行及調試”中介紹的幾種方法進行調試.當用自動單步方式調試時,建議臨時禁止廷時子程式發揮作用,具體的方法是,可在CALL DELAY指令前添加一個分號,並且重新彙編一次.為了學習目的,在調試過程中可以人為地加入一些軟體漏洞(BUG)或硬體故障,來模仿單片機連線埠引腳的片內或片外故障.
10.定型燒寫目標單片機;經過多次重複上述步驟的反覆修改和調試,使得程式和電路在在線上狀態完全正常,這時可以進行定型燒寫,即將ICD視窗中的”Enable Debug Mode”(使能調試模式)選項消除,不再將調試臨控程式寫入單片機中.
11.獨立運行驗收:上一步中的燒寫過程完成後,即可將ICD模組和ICD仿真頭(或演示板)之間的6芯電纜斷開,讓單片機在演示板獨立運行,觀察實際效果.
好的這個實驗到此就結束了,更多實驗請關注我們的網站。
http://www.pic16.com
http://pic16.com
Email:[email protected][email protected]