單片機開發英銳恩分享PIC8位單片機在Windows下源程序匯編,固化。單片機本身沒有開發編程能力,所以要把單片機變成一種應用產品,必須借助于硬件開發和軟件開發兩種工具。在進行軟件開發時,首先利用相關的編輯軟件,按照相應的格式建立PIC單片機的源程序(助記符程序),然后對源程序進行匯編。在完成匯編之后,用戶可以利用模擬調試軟件(價位低)或者硬件在線仿真器(價位高)對其目標程序(機器代碼)進行運行調試,以發現其錯誤并修改之。在經過調試、修改、再匯編之后,即可將修改后的目標程序用硬件(工具)編程器將目標代碼燒寫到用戶的PIC芯片中。最后將燒寫后(即固化)的芯片插入到用戶板(實驗板)脫機運行,如還有問題(通常是多條程序的條件下),就檢查硬件電路和軟件的設計,找出錯誤并修改、再匯編、調試直到脫機運行正常為止。
Microchip公司在推出PIC系列單片機產品的同時,也推出了相對應的軟件開發和硬件開發工具,例如PIC在線仿真器、MPLAB集成開發軟件、MPSIM軟件仿真器、MPASM宏匯編程序以及PIC通用編程器等。不僅如此,國內開發PIC系列單片機的工作也很迅速,許多公司或研究所也推出了相應的開發裝置,其中既有適用于初學者、低價位的軟件仿真和編程器,也有適用于產品開發的高中檔開發應用裝置。有些高檔的開發器還能支持C編譯器(如MP-C)與模糊邏輯開發系統等。這些開發裝置既可獨立運行,也可以和PC機聯機運行??傊?,開發PIC單片機的工具不僅十分成熟也是多種多樣的。
在PC機上對PIC單片機的源程序匯編時,既可以在DOS條件下,也可以在Windows條件下進行。以下將介紹Windows下源程序匯編的方法和步驟。
1Windows下PIC集成開發軟件MPLAB
MPLAB是Microchip公司為PIC單片機開發產品提供的適用于PC機Windows的集成開發軟件。MPLAB的版本從早期到現在已發展到多種:如MPLAB V301版、V302版、V40版、V499和V50版等。各版本之間向下兼容,所以盡管PIC單片機品種如此之多,用戶只需選擇相應版本的MPLAB集成開發軟件,均可達到開發目的。
(1)MPLAB的特性和安裝
MPLAB是一種易學易用的PIC單片機產品的集成開發工具軟件。該軟件由MPLAB編輯程序、MPLAB項目管理程序(Project manager)、MPASM匯編程序(Windows版)和MPLAB-SIM模擬調試程序等工具軟件組成。MPLAB能幫你調試源代碼,觀察程序流程、調試以及優化固件生產設計的PIC單片機應用程序。上述的各種軟件將在本報下幾期通過實例介紹其功能和用法。
MPLAB集成開發軟件對計算機系統的硬件與軟件配置要求如下:Microsoft Windows 3.X版、95版和98版均可;標準鍵盤和鼠標;4MB(最好是16MB以上)的內存和VGA以上顯示器等。MPLAB的安裝簡單,只要熟悉PC機的用戶均可利用磁盤或光盤CD-ROM中MPLAB的SETUPEXE文件和相關的提示語句進行安裝。若是初學者,可請電腦行家進行安裝。安裝MPLAB軟件時,最好在顯示屏上粘貼Microchip/MPLAB的快捷圖標,以使操作方便。
(2)MPLAB的桌面系統
Windows操作系統與DOS操作系統的最大區別就是廣泛使用了圖形化操作界面,因此對話框是用戶在操作Windows過程中最經常接觸的東西。MPLAB的所有功能都可通過MPLAB桌面(對話框)中的菜單命令來操作。
當你的PC機上安裝了MPLAB集成開發軟件之后,打開PC機,用鼠標點擊顯示器上的快捷圖標Microchip即可在顯示器上看到MPLAB的桌面,如附圖所示(V499版)。該桌面是一個大小可變的窗口。MPLAB桌面頂部的左邊字符為標題欄(MPLAB);標題欄的下面為菜單欄(MENU),菜單欄的下面為工具欄,底部為狀態欄。桌面窗口中的菜單欄是下拉式的。
MPLAB共有多個菜單選項(V322、V499有9個,V301是8個)。所有的MPLAB功能均可通過下拉式菜單來訪問,菜單中加有下劃線的字符表示加速鍵(Key Accelerators),在菜單下拉時,用鼠標點擊該字符鍵可立即執行該項功能。
MPLAB的各種菜單的功能,筆者將會通過具體的程序匯編應用實例加以詳細說明。
2 在MPLAB中建立PIC單片機源程序
筆者將以附圖的PIC16C55單片機脈沖計數試驗電路(計數時,RA1口為十進制碼輸入,RB口為二進制碼輸出)的源程序PIC count.ASM為例,介紹在MPLAB集成開發環境下編輯(建立)PIC單片機源程序的方法。其操作步驟如下。
(1)打開MPLAB桌面(窗口)和空白編輯窗口 開啟PC機,啟動運行Windows,在Windows的管理程序下,用鼠標點擊顯示屏上的圖標Microchip(快捷),即可啟動運行MPLAB集成開發軟件,此時屏幕上將顯示MPLAB的桌面(見今年第25期本版的《源程序的匯編和固化(一)》文中的附圖)。從已打開的MPLAB的桌面(窗口)上,用鼠標點擊MPLAB菜單欄中最左邊的File(文件),即可打開File的下拉菜單,再用鼠標點擊下拉菜單中的命令New Source(新建源程序),即可打開一個空白的編輯窗口,在此窗口中用鍵盤鍵入PIC 16C55 COUNTASM源程序再對其進行編輯(以MPLAB V301版為例):
LIST P=16C55
#INCLUDE P16C5XINC
COUNT EQU 1EH
ORG 0
START
MOVLW 0
MOVWF PORTB ;設置B口為輸出
TRIS PORTB
CLRF COUNT ;置計數器COUNT為零
LOOP
BTFSS PORTA,1;判斷開關K按下否?
GOTO INCOUNT;按下開關K,跳轉執行IN-
;COUNT
ENDLOOP
GOTO LOOP ??;開關未按下,繼續循環
;判斷
INCOUNT
INCF COUNT,1 ;計數器COUNT+1
MOVF COUNT,W
MOVWF PORTB ;從B口輸出計數值
DEBOUNCE
BTFSS PORTA,1 ;判斷開關K釋放否?
GOTO DEBOUNCE ;沒有釋放繼續判斷
GOTO LOOP ;開關K釋放重新開始
ORG 0x1FF ;復位向量
GOTO START
END
說明:在MPLAB集成開發環境下建立源程序時,其源程序文件的開始應使用偽指令List(列表選擇指令)指示符,指定處理的類型(對象)。所以,上述的源程序的開始處為List P=16C55。其中的“P=”是處理類型,代表設置微控制器為16C55(芯片)。接著又用了偽指令#include P16C5XINC,代表MPLAB應把要處理(類型)的微控器F16C55的所有已設置的文件,在需要時就讀入這里的源程序中。這條偽指令就為源程序中的代碼設置大為簡化,例如PORTB、TRIS以及其它特殊功能寄存器,就不再用EQU偽指令給它們賦值了。
源程序中緊接著上面的偽指令為ORG,代表存放程序的起始地址。所以在一個源程序中,可以根據需要多次使用ORG偽指令定位。在上述的源程序中,使用了兩次ORG 。值得注意,在PIC系列單片機中,對初級產品PIC16C54/55的復位向量為1FFH;PIC16C56為3FFH;PIC16C57/58為7FF;對中級和高級產品的復位向量為000H和0000H。由此可見在建立PIC單片機源程序時,使用一些偽指令是很有必要的,用它可以為建立源程序完成一些特定功能,使編制的源程序大大簡化。源程序后面的各條指令功能均已在注釋中給了說明,這里不再復述。
3 MPLAB中源程序文件被存入到指定的目錄和裝載
在PC機屏幕上,當用鍵盤鍵入并編輯了源程序(COUNTASM)之后,再用鼠標鍵打開File下拉菜單,選擇Save(保存)命令,用鼠標鍵點擊Save,即可打開圖1(目錄路徑為C:\PROGRA~1\MPLAB)的窗口。在該窗口的File Name(文件名)欄中(標題——Save File As),選擇好路徑,用鍵盤輸入文件名PIC COUNTASM(用戶自定義名),再用鼠標鍵點擊OK,即可將源程序文件以指定的文件名PIC COUNTASM存入到指定的目錄中。這一過程通常稱為對PIC單片機(微控制器)源程序(COUNTASM)的存盤。
在MPLAB集成開發環境下,在MPLAB的桌面上,用鼠標鍵點擊File下拉菜單,在該菜單中,選擇Open Source(打開源文件)命令,再用鼠標鍵點擊OPEN SOURCE,又可打開圖2的對話框(窗口),在此對話框中選擇好目錄路徑(與前面相同)。在窗口的“列出文件類型欄”中,選擇Source File(源文件),再用鼠標鍵多次點擊文件名窗口右側滾動槽上的箭頭按鈕(也可拖動槽上的滾動塊),把已建立的源程序PIC COUNTASM轉移到文件名的窗口中。然后用鼠標鍵點擊源程序名PIC COUNTASM,則可把該文件名點擊到文件名欄中。到此源程序裝載完成,用鼠標鍵點擊確定(OK),則可在PC機顯示屏的MPLAB桌面上看到已選定路徑和文件名(C:\PROGRA~1\MPLAB\PIC COUNT.ASM)的標題欄中再次出現源程序文件如圖3所示。編程者即可確認源程序確已完成存盤和裝載。
由上述介紹的PIC單片機在MPLAB集成開發軟件中的源程序COUNTASM建立、編輯、存盤和裝載等軟件操作過程中可見,要在MPLAB中將源程序COUNTASM匯編,還需在PC機上進行多種操作,才有可能達到對源程序匯編目的(該裝載步驟可以略去)。
為了使PIC單片機初學者快速掌握源程序匯編方法,筆者建議初學者應在PIC單片機上多動手操作,反復練習PIC單片機源程序的建立編輯—存盤—裝載等匯編前期操作過程,以便在學習即將介紹的匯編方法時盡可能少出錯誤,增強學會PIC單片機源程序匯編的信心。為此筆者再推薦一種下面最簡的PIC單片機試驗源程序,以便初學者多次反復練習。
LIST P=PIC16C84
?。NCLUDE P16C84INC
ORG 0
START
MOVLW 0x04
GOTO START
END
4 在MPLAB中創建項目
項目管理程序(Project Manager)是MPLAB集成開發軟件的重要組成部分。不創建項目就不能進行符號(源程序代碼)匯編和調試,在整個項目管理中可進行以下操作:創建項目——把源代碼文件加入到項目中——匯編源代碼——編輯源代碼——重建所有源文件——調試源代碼等。
創建項目也是匯編源程序之前必要的準備工作,其操作過程如下:按照以上介紹的方法,在PC機上打開MPLAB集成開發軟件的桌面,選擇Project(項目)命令,用鼠標鍵點擊菜單欄中的Project,在其下拉菜單中選擇New Project(新項目)命令,并用鼠標鍵點擊它,則可在MPLAB的桌面上打開New Project(新項目)的對話框,如圖1所示。對話框的頂部是標題欄(新項目),在對話框的項目路徑與名稱(Project Path and Name)域內用鍵盤鍵入C:\PROGRA~1\MPLAB\PIC COUNT.PJT字符(窗口中其它項目內容可以不調整)。然后用鼠標鍵點擊OK(確認)即可打開圖2所示的Edit Project(編輯項目)的對話框。繼續操作,再用鼠標鍵點擊一次該圖右邊窗口中出現的文件名pic count.asm和中間位置的項目欄“<=Add”,即可把上述的文件名復制到project Files的欄目窗口中。又用鼠標鍵點擊窗口中的OK,此時對新源程序pic count.asm的創建項目或編輯項目(Edit Project)就全部完成,如圖3 所示。
在完成創建項目的操作步驟后,可在MPLAB的目錄路徑C:\PROGRA~1\MPLAB\PIC COUNT.PJT下生成三個文件:PIC COUNTPJT(項目文件)、PIC COUNTCFG(配置文件)和PIC COUNTASM(源程序文件)。
5 在MPLAB中PIC單片機源程序的匯編
在PC機上應用MPLAB集成開發軟件對源程序PIC COUNTASM匯編的準備工作經上述介紹的幾次操作已完成,余下的操作即可立刻對指定的源程序進行匯編。讀者將會看到,即將介紹的匯編操作十分簡單。初學PIC單片機匯編源程序時,應熟練掌握已介紹的各種操作,即建立和編輯指定PIC單片機的源程序→存盤裝載觀察源程序→創建(源程序)項目→編輯(源程序)項目→進入對源程序PIC COUNTASM匯編。所以在完成創建項目和編輯項目的操作之后,緊接著用鼠標鍵單擊project(項目)項,即可打開project的下拉菜單,在該下拉菜單下用鼠標鍵單擊Make project(制作項目)命令,即可調用Windows版的MPASM對其源程序自動匯編。如果匯編正確,屏幕上將顯示圖1的信息框;如果匯編有錯誤,則屏幕上將顯示圖2的信息框。此時可打開其錯誤文件,觀察其錯誤信息,再修改源程序。待修改源程序之后再重復操作源程序的存盤→創建(源程序)項目→編輯(源程序)項目→再匯編源程序,直到匯編正確為止。所以匯編PIC單片機的源程序可按圖3的步驟進行。
到此,筆者以PIC COUNTASM(二進制計數器)源程序為例,說明了運用MPLAB集成開發軟件匯編其源程序的主要操作過程。在完成源程序的匯編之后,你可在MPLAB的目錄路徑:C:\PROGRA~1\MPLAB下打開已生成的PIC COUNTASM(源程序)、PIC COUNTCFG(配置)、PIC COUNTCOD(符號信息與目標碼)、PIC COUNTERR(錯誤)、PIC COUNTHEX(機器碼,又稱目標碼)、PIC COUNTLST(列表)和PIC COUNTPJT(項目)等7個文件。這些文件在今后對源程序模擬調試和編程(燒錄)都將分別派上用場。讀者可以將上述7個文件在PC機上分別打開看看它們的一些代碼和特點,尤其應該看看列表文件(LST)所提供的各種信息。
在這里,筆者再推薦一種簡單的試驗程序,可使初學者反復練習PIC源程序的匯編方法,并能在匯編完成之后用編程器對PIC單片機寫入程序和用實驗板進行實時實驗,以達到直觀的學習效果。
本實驗程序是給PIC16F84單片機的B口送數,而B口上接有8 只發光二極管,只要給B口送不同的數,則B口上的發光二極管就會按指定的規律點亮,其實驗程序如下:
LIST P=PIC16F84
?。NCLUDE P16F84INC
ORG 0
START MOVLW 0 ;送0到W
BSF STATUS,5 ;STATUS的D5位置1
MOVWF TRISB ;置B口為輸出
BCF STATUS,5 ;STATUS復位
MOVLW 0x81 ;二進制10000001送W
MOVWF PORTB ;B口的D7、D0上LED
??;亮,其余滅
LOOP GOTO LOOP ??;循環跳轉
END
該源程序可以命名為PIC81ASM以便辨認(可自定義)。為此讀者可以按下表改變MOVLW 0x?的值,達到使B口LED燈按下表規律點亮。
上述的源程序已在PC機上匯編通過,讀者可以有意設置錯誤,如把上述源程序中的PORTB寫成POTRB,此時,匯編出錯,可以查看PIC81ERR文件是如何提示的,再改正之,即可匯編出正確的PIC81HEX文件進入編程器。
6 PIC單片機源程序的固化和編程器
一個完整的PIC單片機開發系統應包括PIC匯編軟件、PIC單片機仿真器(軟件模擬仿真器或硬件在線仿真器)和PIC單片機編程器。對于簡單的PIC源程序而言,若源程序已匯編而生成了擴展名hex文件時,即可直接使用編程器將源程序的目標碼hex固化到PIC芯片中,再通過實驗板驗證其源程序的功能。待深入學習時再補充學習PIC單片機仿真的方法,這是一種快速學習PIC單片機的一條路徑。本版在今后適當的時候仍將以實例介紹PIC單片機在MPLAB集成開發環境下軟件模擬仿真的方法,以供讀者學習時參考。
PIC單片機編程器又稱為PIC燒錄器或燒寫器。目前市場上PIC單片機編程器的產品型號很多,適合各類PIC芯片的要求,價位也不相同。功能完善的PIC編程器,能對PIC絕大多數芯片將其源程序的hex進行固化,但價位高,約1000~2000元;可固化部分芯片源程序的hex編程器,其價位約700元左右。在這里,電子報單片機實驗室提供了一種V101實驗編程器,其價位極低(200元一臺,另附有3張軟盤)。值得注意:大多數的PIC編程器在使用時都需要一臺PC機聯機運行,方可完成編程燒寫工作。
1低價位的PIC16F8X V101實驗編程器 該編程器主要對PIC16F84/16C84/16LF84/16F84A等芯片的源程序進行固化,其操作十分簡單,對初學者極其適用。PIC16F84/16C84芯片均是可反復燒錄的芯片,加之第二次燒錄時,編程器的軟件已設計了自動擦除內部已有的代碼,所以對初學者十分適用。
V101實驗編程器的基本硬件配置有FLASH89C2051單片機、11MHz晶振、MAX232N標準接口芯片、RS232標準通信接口插座、復位按鈕、DIP插座(活動耐用型)、5V穩壓電源、電源指示和編程指示LED等。此外為使用戶方便使用,還為V101實驗編程器配置有15V~17V的電源適配器和RS232標準電纜線的接口插頭,以便用戶購買之后立即上機使用。該編程器印板尺寸為:98mm×70mm(與編程器配套的PIC實驗板將在下期本版介紹)。
2PIC16F8X V101實驗編程器的軟件安裝 該實驗編程器的支持軟件共有三張,都是標準軟件格式。你只需在PC機視窗WINDOWS下運行即可進行安裝。打開PC機,在PC機A驅中插入該編程器的第一張磁盤,用鼠標鍵點擊顯示器上“我的電腦”,再點擊A磁盤(35英寸軟盤),即可打開A:盤窗口,在此窗口上會出現9個文件,只點擊其中的STEUPEXE文件即可在PC機上運行該磁盤軟件,然后注意操作安裝過程中的適當提示語句,PC機會自動地將三張磁盤的軟件安裝到你選定的硬盤中(筆者是把該軟件放在PC機的D盤中)。待安裝完畢,可用配套的電纜線RS232插頭,一端插入PC機RS232串口(串口1、2、3、4任選)插座上,一端插編程器的RS232插座上。接著在編程器的供電電源口中插入電源適配器(15V~17V,該適配器電源不分極性)和DIP插座上安上PIC16F8X芯片,這時編程的準備工作全部完成,此時電源指示燈LED即亮。
3PIC單片機源程序的固化 啟動PC機,在WINDOWS下運行,用鼠標鍵點擊“我的電腦”,再點擊D盤符(由安裝時的盤符而定),打開了D盤,在其窗口上,用鼠標鍵點擊“實驗編程器”(文件),即可打開實驗“編程器”窗口,在此窗口上有三個圖標:DEMOHEX(實驗編程用的燈閃爍目標碼HEX——立刻待用);PROGRAMINI(記事本)和PROGRAMEXE等三個文件。用鼠標鍵點擊PROGRAMEXE文件,即可打開實驗編程器V101的界面,如圖1所示。該界面上有EEPROM和行、數據(程序)表格,那是編程完成后供用戶參看的。桌面中下部是配置位選擇,應按以下步驟進行:(1)用PC機鍵盤在器件ID欄中鍵入“FFFFFF”;(2)用鼠標鍵點擊振蕩方式,確定你的PIC16F84硬件設計中的振蕩方式,可選擇XT、LP、HS和RC的其中一種到振蕩方式窗內;(3)余下的保密位、看門狗和上電定時器等窗口命令,由編制的源程序而定。若編制的源程序很簡單,它們各項未派上用場時,其三個窗口全選OFF(關閉);(4)最后是器件選擇,16C84/16F84A等,由實驗時選定的PIC16F8X而定,例如選擇16F84芯片。到此,配置位操作完成。緊接著用鼠標鍵點擊界面左上角的“編程器”,即可出現下拉菜單,選擇下拉菜單“端口設置”命令(點擊)即可打開編程器“設置串口”圖標,如圖2所示。然后再點擊你設置的串口(1、2、3、4)號和“確認”命令,又恢復成圖1的桌面。
7 PIC單片機源程序的固化和編程器
V101實驗編程器設計合理,操作十分簡單。上次已介紹了固化PIC單片機源程序部分操作,即在V101編程器上對PIC單片機的項目設置,現繼續介紹固化程序的方法,其操作如下。
續上次操作,用鼠標鍵點擊(窗口)實驗編程器V101左上角的項目“文件”,可出現下拉菜單→再點擊其“打開”命令,則可打開標題為“加載文件”的窗口(如圖1所示)→點擊該窗口中項目“搜尋[I]”右側小窗口的“”符號,則可打開其下拉菜單→點擊盤符C:,則在該窗口中顯示C盤的各種文件→雙擊“Program Files”(程序文件),則該文件置換C盤符位置同時在大窗口中出現“Program Files”的各種文件→點擊該文件窗口右側角“”符號,找出窗口中MPLAB的文件→雙擊“MPLAB”,則MPLAB又置換Program Files的位置,該MPLAB的窗口文件中找到最終需要的“PIC COUN
THEX”文件→單擊PIC CPUNTHEX,則該文件再轉移到文件名窗口中→再點擊“打開[O]命令,則該窗口消失,出現上期圖1的窗口,此時你可觀察到行的數據窗口中的代碼已發生了變化,現已指示出PIC COUNTASM的程序代碼→用鼠標鍵點擊該窗口下方的“寫程序”,則下方(邊界上)會出現小方塊從左→右的閃亮,直到閃亮結束為止。同時,窗口下角“地址:”中的數字不斷變化,直到出現寫配置位為止。至此,PIC COUNTHEX目標碼的固化完成。
使用實驗編程器V101注意的問題:若實驗編程器V101窗口的下方出現“編程錯誤”或“通訊失敗”的提示符,應檢查該編程器是否插上了電源適配器,或編程器的(活動)插座上是否插上了PIC單片機芯片16F84(或16C84)。
8PIC16F84單片機(或16C8C)實驗板
與實驗編程器V101相配套的實驗板電路如圖2所示,該實驗板由以下電路組成。
實驗板電源電路 該電源分兩部分,其一是實驗板電路電源;其二是實驗板交流供電電源(外接電源適配器)。
實驗板電路 由實驗電路和相關的外圍電路組成。但在實驗插座上還需另加芯片PIC16F84(或16C84)供實驗用。IC2的RA0~BA4端上分別外接電阻RRA0~RRA4和對應開關RA0/RST~RA4/RST共同組成PIC16F84端口電路(人工設置的)可設為芯片輸入端。當開關按下時,各端口接地(“0”信號),釋放時,各端口接高電平5V(“1”信號)。IC2的RBO~RB7端口各自外接電阻RRB0~RRB7和DRB0/LED~DRB7/LED,共同組成PIC16F84端口的LED顯示電路(人工設置的)設為芯片輸出端。IC24腳(MCLR)外接上電復位和人工復位電路(開關RST);IC2的{15}、{16}腳外接晶振4MHz(或用戶自配不同頻率的晶振)和RC電路,分別組成PIC16F84/16C84的振蕩電路(供芯片時鐘信號),振蕩方式可由用戶通過電路中的插接件JUMP
1、JUMP2轉換選擇。PIC16F84電源端{14}腳接Vcc/5V電源電壓。整個電路元件安裝在面積為140mm×80mm的印制板上。印制板上留有用戶實驗布線區,作為各端口外接元器件供用戶做有關的實驗。印制板的交流電源供電,由電源AC/AD(12~15V)適配器的插頭直接插到印板的電源插座上,該電源適配器可與V101實驗編程器公用,無需再單獨配制。
當你編制了PIC16F84(或16C84)實驗源程序并在V101實驗編程器上固化了相應的HEX目標碼后,立刻可把芯片16F84轉插到該實驗板的活動插座上看其結果。
電子報單片機公共實驗室已為用戶組織有全套的V101編程器和PIC16F84(或16C84)實驗板,另配有RS232電纜插頭線、電源適配器和相關的軟件(3張V101編程器磁盤軟件和3張MPLAB磁盤軟件共6張磁盤),其價位很低,使用非常方便。