mplab

21
Phát triển ứng dụng vớI MPLAB IDE Cài đặt Đối với vài hệ điều hành Windows, truy cập vào administrative là cần thiết để cài đặt phần mềm. MPLAB IDE phải được cài đặt lên ổ cứng máy tính, không thể chạy từ máy chủ. Cài đặt bằng CD-ROM: Cho đĩa CD vào ổ đĩa. Theo hướng dẫn trên màn hình để cài đặt MPLAB IDE. Nếu không thấy, dùng Explorer để tìm và mở file MPxxx.exe (xxx là phiên bản của phần mềm) trong thư mục gốc của CD Cài đặt bằng Download: Từ trang web của Microchip (www.microchip.com ), double-click vào tập tin download để cài đặt. Chú ý: Đối với Win NT, Microsoft khuyến cáo hãy cài đặt lại service pack sau khi cài đặt bất kì phần mềm hay driver nào. Cấu hình tối thiểu: Tương thích với hệ thống Intel Pentium Hỗ trợ hệ điều hành Windows (xem danh sách dưới) 32 MB bộ nhớ (đề nghị 128 MB) 85 MB ổ cứng trống Internet Explorer 5.0 trở lên để cài đặt và trợ giúp trực tiến Lưu ý khi cài đặt: Hệ điều hành: Windows 98 SE Windows ME Windows NT 4.0 SP6a Wordstations (NOT Servers) Windows 2000 SP2 Windows XP Home and Professional Những thiết bị làm việc với MPLAB IDE có thể không hỗ trợ cùng hệ điều hành như MPLAB IDE. Xem file README để biết thêm chi tiết Gọi MPLAB IDE với 1 dòng lệnh MPLAB IDE có thể được gọi bằng 1 dòng lệnh như sau: Mplab [<file>] [/<option>] Mở vùng làm việc <file> trong MPLAB IDE. Bất kỳ project nào trong vùng làm việc cũng được mở. Không muốn nhìn thấy màn hình khởi động ? gõ như sau :

Upload: duyphuoc

Post on 24-Jun-2015

703 views

Category:

Documents


5 download

TRANSCRIPT

Page 1: MPLAB

Phát triển ứng dụng vớI MPLAB IDECài đặtĐối với vài hệ điều hành Windows, truy cập vào administrative là cần thiết để cài đặt phần mềm. MPLAB IDE phải được cài đặt lên ổ cứng máy tính, không thể chạy từ máy chủ.Cài đặt bằng CD-ROM:Cho đĩa CD vào ổ đĩa. Theo hướng dẫn trên màn hình để cài đặt MPLAB IDE. Nếu không thấy, dùng Explorer để tìm và mở file MPxxx.exe (xxx là phiên bản của phần mềm) trong thư mục gốc của CDCài đặt bằng Download:Từ trang web của Microchip (www.microchip.com), double-click vào tập tin download để cài đặt.Chú ý: Đối với Win NT, Microsoft khuyến cáo hãy cài đặt lại service pack sau khi cài đặt bất kì phần mềm hay driver nào.Cấu hình tối thiểu:

Tương thích với hệ thống Intel Pentium Hỗ trợ hệ điều hành Windows (xem danh sách dưới) 32 MB bộ nhớ (đề nghị 128 MB) 85 MB ổ cứng trống Internet Explorer 5.0 trở lên để cài đặt và trợ giúp trực tiến

Lưu ý khi cài đặt:Hệ điều hành:

Windows 98 SE Windows ME Windows NT 4.0 SP6a Wordstations (NOT Servers) Windows 2000 SP2 Windows XP Home and Professional

Những thiết bị làm việc với MPLAB IDE có thể không hỗ trợ cùng hệ điều hành như MPLAB IDE. Xem file README để biết thêm chi tiếtGọi MPLAB IDE với 1 dòng lệnhMPLAB IDE có thể được gọi bằng 1 dòng lệnh như sau:Mplab [<file>] [/<option>]Mở vùng làm việc <file> trong MPLAB IDE. Bất kỳ project nào trong vùng làm việc cũng được mở. Không muốn nhìn thấy màn hình khởi động ? gõ như sau :Mplab myproj.mcw /nosplashWorkspace sẽ được mở mà không có màn hình khởi động ( splash screen)Các mục cần kiểm tra để bắt đầu với MPLAB IDE

Khi sử dụng emulators, in-circuit debuggers hay programmers, phải đảm bảo đã cài đúng driver và trình tự cấp nguồn được tiến hành chính xác (xem Help, phần Getting Started cho từng loại)

Đảm bảo thiết bị (chip) thích hợp được chọn trong Configure>Select Device Đảm bảo bộ công cụ ngôn ngữ hoạt động và chỉ đến đúng vị trí của bộ công cụ

(Project>Set Language Toolsuite). Sử dụng Project Wizard để tạo một project. Đặt đường dẫn và thư mục mặc định cho các thành phần language tool bằng cách

sử dụng Project Wizard hoặc Project>Set Language Tool Locations.

Page 2: MPLAB

Dùng file mẫu hoặc file code trước đó để bắt đầu đoạn code mới. Double-click lên dòng lỗi trong cửa sổ Output để sửa sai Phải đảm bảo configuration bits được chỉnh đúng để gỡ lỗi

(Configure>Configuraion Bits). Để gỡ lỗi, WDT (Watchdog Timer) thường nên đặt về Disabled. Những mục này có thể set trong mã nguồn (source code) với chỉ thị _config

Nếu gặp sự cố, chọn hỗ trợ trực tuyến “Limitaions” cho bộ xử lý và trình gỡ rối được sử dụng (trong đoạn Troubleshooting của trợ giúp trực tuyến cho mỗi công cụ), còn có thể chọn file README

Các nguồn trợ giúpNếu gặp vấn đề với thao tác MPLAB IDE, tham khảo mục Troubleshooting của phần trợ giúp và hướng dẫn sử dụng MPLAB IDE. Truy cập trang www.microchip.com để:

Được hỗ trợ trực tuyến Download các công cụ mở rộng, data sheets, ghi chú ứng dụng, hướng dẫn sử

dụng, bài báo và chương trình mẫu mới nhất Thảo luận qua mạng, các mẹo thiết kế và những lỗi của thiết bị Hệ thống thông báo các thay đổi của Microchip (Microchip Change Notification

System) - tự gởi những bản tin thông báo mới về silicon và thiết bị mới mở rộng cho người đăng ký

Thông tin về phát triển hệ thống và hỗ trợ kỹ thuật:1-800-755-2345 (Mỹ và Canada)1-480-792-7302 (các nước còn lại)

Giao tiếp nối tiếpCác công cụ hỗ trợ : MPLAB ICD 2, PICSTART Plus và PRO MATE II.

Không dùng cổng COM hay cổng ngắt để giao tiếpvới thiết bị khác (ngoài những thiết bị đã nêu) ,nếu không có khả năng gây thiệt hại cho thiết bị đó.

Không dùng driver giao tiếp của hãng khác. Tắt FIFO’s (First In First Out) và thay đổi Điều khiển luồng (Flow Control) phần

cứng. Khởi động lại máy trước khi giao tiếp với công cụ. Bảo đảm cổng COM chọn trong phần mềm (COM1, COM2, v.v…) phù hợp với

kết nối thực của phần cứng Bảo đảm tốc độ máy của cổng COM chọn trong phần mềm phù hợp với tốc độ

khả dĩ của cổng phần cứng. Nếu tốc độ máy 57600 không hoạt động, hãy thử chuyển sang 19200

MPLAB ICD 2: Nếu dùng target clock và/hoặc power, bạn phải chắc chắn nó tồn tại ( vậy mới được chớ !)

Giao tiếp qua USB:Công cụ hỗ trợ: MPLAB ICD 2, PICkit 1, MPLAB ICE 4000

Cài đặt MPLAB IDE trước khi cắm thiết bị USB. Nếu dùng target clock và/hoặc power, bạn phải chắc chắn nó tồn tại ( vậy mới

được chớ !) Windows NT không hổ trợ USB

Cảnh báo:Phải sử dụng driver được hỗ trợ trong MPLAB ICE (trong thư mục con …MPLAB IDE\DriversXX với XX là version của Windows trên máy đang sử dụng). MPLAB ICD 2 sẽ không hoạt động nếu không có driver này và cũng không thể cài đặt driver đúng nếu

Page 3: MPLAB

không xóa driver USB không phù hợp ( vào Control Panel để thực hiện). PICkit 1 sử dụng driver USB chuẩn của Windows.Wizard, Walk-Throughs và Tutorials:Dưới đây là một vài mục được khảo sát khi bắt đầu với MPLAB IDE. Xem xét các đặc điểm sau để quen thuộc chương trình hơn:

MPLAB IDE Walk-Through (MPLAB IDE Help, Quick Start) Project Wizard (Project>Project Wizard) Hướng dẫn MPLAB SIM (MPLAB SIM Help) Hướng dẫn MPLAB30 SIM (MPLAB SIM30 Help) MPLAB ICD 2 Setup Wizard (Debugger> MPLAB ICD 2 Setup Wizard) MPLAB ICE Complex Trigger Walk-Through (MPLAB ICE Help)

Thông báo và cảnh báo (Hướng dẫn sử dụng MPASM-trang 51):Những thông báo và cảnh báo lỗi của MPASM có thể kiểm soát bằng 2 cách:

1. Hộp thoại “Project>Build Options Categories”2. Thư mục MPASM ERRORLEVEL trong mã nguồn. khi sử dụng vi điều khiển

(MCU) PICmicro loại trung bình, thông thường thông báo bank che khuất các thông báo lỗi khác, nếu vậy dòng lệnh sau có thể được sử dụng:

ERRORLEVEL -302Dưới đây là những số liệu thông dụng để điều khiển ERRORLEVEL (chọn các mức độ hiển thị thông báo):

0 - tất cả các thông báo và cảnh báo 1 - cảnh báo và lỗi2 - chỉ có lỗi

-306 - không hiển thị trang thông báo-302 - không hiển thị thông báo bank-202 - không hiển thị thông báo dãy đối số

Có thể sử dụng nhiều số liệu cùng lúc như ví dụ:ERRORLEVEL -302, - 306, - 202

Conditional Assembly (MPASM hướng dẫn sử dụng)Conditional Assembly được dùng để kiểm soát việc lựa chọn vùng mã nguồn nào sẽ được biên dịch. Chỉ phần TRUE của biểu thức được biên dịch còn phần FALSE bị bỏ qua. Điều này cho phép các biến điều khiển cách mà cùng mã nguồn có thể được sửa lỗi, kiểm tra và cuối cùng là lập trình cho chip. IF và ELSE không thể được sử dụng trong suốt quá trình chạy (không giống như ngôn ngữ C) để xác định sự kiện xảy ra khi chương trình thực thi – IF/ELSE/ENDIF/IFNDEF/ENDIF chỉ được nhận ra khi đoạn code được biên dịch và không tồn tại như những điều kiện trong đoạn mã đối tượng cuối cùng.

Variable temp=1IF temp=0Movlw 0x0AELSEMovlw 0x1EENDIF#define testIFDEF testMovlw 0x01IFNDEF test

Page 4: MPLAB

Movlw 0x02ENDIF

Macros Macros là những đoạn code ngắn. Đỡ hơn là phải gõ những đoạn code tương tự nhau, một Macros có thể được định nghĩa để tạo ra mã nguồn và điền nó vào những chỗ khác nhau với những tên biến đã được sử dụng ở những điểm khác nhau trong mã. Giống như cấu trúc biên dịch có điều kiện IF, ELSE, Macros không hoạt động đồng bộ với chương trình và chỉ được đánh giá và bung ra trước khi đoạn mã được biên dịch. Không giống như lệnh WHILE trong C, Macro “while” được sử dụng để bung mã vào những dòng khác nhau trước khi mã được dịch.

Multiply macro argl, dest_hi,Local i=0movlw arglMovwf mulplrWhile i <8

Addwf dest_hi; đặt mã lập lại i lần ở đây

i+=1endw

endmSắp xếp dữ liệuTruy cập dữ liệu có thể linh động và được xếp một cách độc lập bằng cách sử dụng hướng dẫn bankse1 Trong cấu trúc của PIC 18XXX, SFRs và các biến trong vùng truy xuất không cần hướng dẫn bankse1 . Bankse1 sẽ được set tất cả các bit bất chấp Bank đang được chọn, và nó chỉ cần khi truy xuất một biến mà nó không có trong bank được chọn hiện thời. bankse1 temp1

movf temp1PagingBộ vi điều khiển PICmicro khác với dòng PIC 18XXX có thể có nhiều hơn một trang nhớ chương trình.Cái hướng dẫn linh động và tiện lợi có thể chuyển qua lại việc thực thi từ trang này tới trang khác. Những đoạn mã chuyển từ PICmicro qua PIC 18XXX sẽ bỏ qua các chỉ dẫn pagese1. Pagese1 đặt tất cả các bit không phụ thuộc trang hiện hành và chỉ cần thiết khi sử dụng lệnh CALL và GOTO mà đích của lệnh không thuộc trang hiện hành.

pagese1 boot_routinegoto boot_rountine

RadixKhi dùng MPASM, các số có thể được biên dịch trong một số các “nền” ( number bases). Mặc định cho file nguồn có thể được set bằng chỉ dẫn Radix:

Radix decBên trong nguồn, giá trị mã có thể được nhập vào cơ sở số hơn là để mặc định bằng cách sử dụng cấu trúc sau:

D ‘123’ .123 ; thập phânH ‘1AF’ 0x1F ; thập lục phânO ‘777’ ; bát phân

Page 5: MPLAB

B ‘00111001’ ; nhị phân0B00111001 ; nhị phân‘A’ ‘C’ ; 7-bit ASCIIdt ‘This is a string’ ; dãy ASCII

Template files (file mẫu)File mẫu cho tất cả vi điều khiển của Microchip được đặt trong thư mục cài đặt MPLAB IDE:

C:\Program Files\MPLAB IDE\MCHIP_Tools\Template\CodeC:\Program Files\MPLAB IDE\MCHIP_Tools\Template\Object

Thư mục Object chứa 1 mẫu cho những file sử dụng MPASM và MPLINK. Thư mục Code thì cho những file MPASM mà không có MPLINK. Những file này như những ví dụ dưới đây, nhưng hoàn chỉnh hơn với giải thích và ví dụ. Chúng có thể được sử dụng để bắt đầu một project. Một file mẫu code sẽ được dựng với MPASM mà không có bất kỳ thay đổi nào. Một file mẫu Object cần một linker nguyên mẫu add vào cái project để build nó. Đoạn mã ví dụ sau đây tương tự với file mẫu nhưng đơn giản hơn.Mã mẫu cho project với MPLINKKhi dự án (project) sử dụng hợp ngữ với MPLINK, thì mẫu lệnh hơi khác với việc sử dụng MPASM mà không có linker. Thay vì sử dụng lệnh ORG, những đoạn được định nghĩa trong linker script xác định vị trí đoạn code. Trong đoạn trích code sau đây, UDATA tạo vùng nhớ cho biến temp_count. EEDATA được định nghĩa bằng việc đặt đoạn code lên 0xF00000 cho con PIC18xxx (0x2100 cho tất cả vi điều khiển PICmicro khác) và sử dụng chỉ dẫn “de”. Những đoạn được set up cho chương trình thực tế sử dụng chỉ dẫn CODE và đặt code này trong những vùng nhớ chương trình khác nhau của thiết bị đích.

List p=16f877aInclude <p16f877a.inc>_CONFIG CP_OFF &……& _LVP_ONCODE 0x2100 ; EEDATADe 1,2,3,5,8,13,21UDATA 0x020 ; RAM

Temp_count RES 4 ; dành 4 byte bộ nhớ RAM cho biến tempcount 32-bitRESET_VECTOR CODE 0x0000

GOTO STARTINT_VECTOR CODE 0x004

; ….mã ngắt ở đây.RETFIE

MAIN CODEStart Clrf temp_count+3

;…mã chương trình chính ở đây.NopEND

Đoạn Code thí dụ cho một Project không có MPLINK

Page 6: MPLAB

Code viết bằng MPASM của một Project không có MPLINK thường là Code “kế thừa” . Hầu hết code mới sẽ được viết sử dụng Linker, vì những tiện ích gỡ rối của MPLAB có thể dùng biến cục bộ ( local variables) và cấu trúc lệnh của ngôn ngữ C. Nếu MPASM được dùng mà không có MPLINK thì tên file phải ngắn hơn 62 kí tự. Đối với chip PIC 18XXX, ngắt cao ( HIGH interrupts) được ưu tiên ngắt trước một ngắt khác. Điểm có lợi ở đây là ngắt cao dùng một ngăn chồng – 3 byte ( three byte stack) để tự động cất và lưu trữ STATUS , BSR và WREG. (Cứ tưởng tượng Stack là một chồng sách và dữ liệu của bạn là những cuốn sách , bạn cất sách vào từ trên và lấy ra cũng từ trên cùng , đúng không ?)

LIST P=18F452#include <P18F452.INC>__CONFIG CONFIG1H, _OSCS_OFF_1H & _HS_OSC_1H__CONFIG CONFIG7H, _EBTRB_OFF_7HQUEUESIZE EQU 0x10CBLOCK 0x080 ; RAMSTATUS_TEMP, WREG_TEMP,BSR_TEMPqueue: QUEUE_SIZEENDCORG 0xf00000 ; EEDATADE "Test Data",0,1,2,3,4,5ORG 0x0000goto MainORG 0x0008bra HighIntLowIntORG 0x0018movff STATUS,STATUS_TEMPmovff WREG,WREG_TEMPmovff BSR,BSR_TEMP…movff BSR_TEMP,BSRmovff WREG_TEMP,WREGmovff STATUS_TEMP,STATUSretfieHighInt:movlw 0xFF;…retfie FASTMain:clrf REG_TEMPEND

Page 7: MPLAB

Dữ liệu trong không gian nhớ của chương trình

Dữ liệu có thể chứa trong bộ nhớ , bằng những dòng lệnh:

DA "abcdef" (14-bit packed)DATA 12, "testing", 'N' (12,14,16-bit)DB 't', 0x0f,'\n' (8-bit)DT "hello" (RETLW 8-bit)DW "diag", 0x12EB (12,14,16-bit)FILL 0x1234, 0x10 (12,14,16-bit)

MPLAB SIMClick Debugger Select tool để chọn công cụ , sau đó chọn MPLAB SIM .Đây là công cụ giả lập dùng để giả lập tín hiệu điện của các chân và trạng thái các thanh ghi của con chip được dùng. Có hai loại : đồng bộ và không đồng bộ.

Đồng bộ : tín hiệu được giả lập đồng bộ với những vòng lệnh của chip. Không Đồng bộ : tín hiệu được áp đặt bởi người dùng trong thời gian thực

( real time) khi MPLAB SIM đang chạy.

File giả lập của MPLAB SIM ( có đuôi là .fsti , .ssti , .rsti )Để có thể giả lập giống thực hơn, MPLAB SIM cung cấp một công cụ gọi là Stimulus

Một Synchronous Stimulus File (*.fsti ) được tạo ra từ 1 hay nhiều file đồng bộ .

Một Asynchronous Stimulus File ( *.ssti) chứa thông tin trong Triggers được dùng cho cả chân PIC lẫn thanh ghi của nó. Muốn tạo ra các file này , bạn click lên Debugger Stimulus , sau đó click tab Stimulus. Một khi file Stimulus đã được tạo ra, nó sẽ giả lập như chương trình đang chạy với MPLAB IDE.Và những “sự kiện” sẽ xảy ra ( sự kiện có thể hiểu là trạng thái cao hay thấp về logic của các chân) khi Triggers hoạt động.

MPLAB SIM Pin Stimulus ( file dạng *.psti)Đây là Stimulus đồng bộ hoặc không trên các chân I/O. Một Pin Stimulus file chứa thông tin về trạng thái cao hay thấp của chân tại địa chỉ của con trỏ chương trình. Những địa chỉ có trong danh sách sẽ được thực thi từng cái một cho đến hết.Muốn tạo ra file này , bạn click lên Debugger Stimulus , sau đó click lên tab Pin Stamulus ( chi tiết hơn nên xem trong Help Topics). Khi file đó đã tạo ra, tùy theo nó là đồng bộ hay không mà sẽ có những tác dụng khác nhau:

Đồng bộ : ( type= Synch) Một thông báo sẽ gửi đến MPLAB SIM để cập nhật các Stimulus.

Không đồng bộ : ( type=Asynch) Nhấn button Fire ,

Thông tin của MPLAB IDEThông tin liên quan đến việc bố trí của MPLAB IDE được lưu như sau:

Page 8: MPLAB

WorkSpacesMột WorkSpace chứa những thông tin sau :

Chip được chọn sử dụng, công cụ gỡ rối (debug) và / hoặc là mạch nạp.

Những thiết lập về mạch nạp và công cụ gỡ rối. Cấu hình thiết lập cho các bit. Các cửa sổ IDE đang mở và vị trí của nó . Những thiết lập về hệ thống khác của IDE.

Những thông tin này được giữ trong file có đuôi là *.mcw .ProjectsMột dự án ( Project) chứa những thông tin sau :

Một nhóm những file cần thiết để tổng hợp nên ứng dụng. Sự kết hợp nhiều file thành những công cụ khác nhau. Những chọn lựa. Thông tin được chứa torng file có đuôi *.mcp.Muốn tạo nhiều dự án

tron một WorkSpace , bạn click lên Configure Settings tab Projects , rồi bỏ chọn “Use one-to-one project/workspace model.”

RegistryRegistry của Windows ( muốn thấy nó , bạn nhấn Winkey + R để mở hộp thoại Run , rồi gõ Regedit , nhưng nhớ đừng làm gì ẩu nha ) , chứa những thông tin sau :

Tên ngôn ngữ và vị trí cài đặt MPLAB vào máy . Hầu hết các mục trong Configure Settings WorkSpace tab Tất cả các mục trong Configure Settings Project tab.

File ININhững file khởi tạo ( *.INI ) chứa thông tin về thiết lập của trình soạn thảo ( file mpeditor.ini).

Nơi chứa Biến ( variable)Với MPLINK , hướng dẫn res dùng để tạo chỗ chứa biến trong RAM. Khi có nhiều mã nguồn khác nhau thì mặc định cho tầm vực của biến là cục bộ ( local). Muốn dùng nhiều biến trong nhiều file mã nguồn khác , những biến đó phải được khai báo là extern . Trong file nguồn của chính biến đó , thì nó phải được khai báo toàn cục ( global).Trong những file nguồn nào biến đó ( ví dụ: var1 , var2 ) được định nghĩa , phải có đoạn mã sau :Var1 res 1Var2 res 2Global var1,var2Ngoài ra còn cần đặt đoạn code này ở file nguồn sử dụng những biến global trên :Extern var1,var2

Về trình Watchdog Timer (WDT)

Page 9: MPLAB

( tác dụng chính của nó : “trông nom” chương trình chính , nếu CPU bị kẹt trong vòng lặp nào đó sau một thời gian ( lâu hay mau tùy bạn) chẳng hạn thì lôi nó ra, đưa về lại điểm bắt đầu ( reset), chống treo CPU).Trình này có thể gây trở ngại cho trình gỡ rối, và một số công cụ khác .

Bảo đảm các Bit cấu hình được đặt đúng để gỡ rối .Còn khi bắt đầu gỡ rối , ta nên tắt chức năng WDT này đi. Những mục này được thiết lập ở hướng dẫn _____config. Nếu trong khi gỡ rối mà chương trình được viết lại thì những hướng dẫn ____config sẽ ghi đè lên những thiết lập đã có.Nếu chương trình tự động reset một cách bất ngờ , thì chắc là bạn đã lỡ quên tắt WDT đi.

MPLAB ICD 2 sẽ không chạy nếu WDT còn mở. Phải tắt WDT.Trong khi bạn lập trình , phải bảo đảm những bit cấu hình được đặt đúng.

Khi đã gỡ rối xong, nếu MPLAB ICD 2 và SLEEP đang chạy và bạn muốn dùng WDT để “đánh thức ứng dụng” (khỏi vòng lặp , chẳng hạn), vậy thì bạn phải mở nó lên thôi ,he he !

Cách mở hoặc tắt chức năng WDT :Cái này bạn phải dùng phần mềm , (tức là chương trình của bạn) để enable hay disable ( tức là cho lên 1 hay hạ xuống 0 ấy mà ) các bit cấu hình .Các bit này nằm trên thanh ghi nào thì còn tùy loại PIC , bạn nên tham khảo datasheet tương ứng.

Ghi vào EEPROM ( vùng nhớ ) Bạn nên tham khảo Datasheet của con PIC mình đang dùng để biết chắc nó có EEPROM .Hầu hết PIC 18XXX đều có thể sử dụng đoạn mã sau để ghi EEPROM :

movlw data_ee_addr ; địa chỉ của Eedata (muốn biết cụ thể? datasheet)movwf EEADRmovlw data_ee_data ; dữ liệu được ghimovwf EEDATAbcf EECON1, EEPGD ; trỏ tới EEdatabsf EECON1, WRENbcf INTCON, GIE ; cấm tất cả các ngắtmovlw 0x55 ; bắt đầu ghimovwf EECON2movlw 0xAAmovwf EECON2bsf EECON1,WR ; cho phép tất cả các ngắtbsf INTCON, GIEsleep ; chờ đến lúc ghi xongbcf EECON1,WREN ; cấm ghi Eedata

Đọc EEPROMĐọan mã này thì được dùng để đọc dữ liệu đang chứa trong EEPROM của PIC :

Page 10: MPLAB

movlw data_ee_addr ; địa chỉ của EEdatamovwf EEADRbcf EECON1,EEPGD ; trỏ tới EEdatabsf EECON1,RD ; đọc EEdatamovf EEDATA,W ; chuyển data tới thanh ghi WQuản lý việc “tràn trang” ( crossing page boundary : có thể hiểu tương tự như tràn bộ đệm)Khi sử dụng PIC 16XXX , bạn nên cẩn thận đừng để chương trình mình viết ra quá dài , đến mức có thể gây vượt quá giới hạn 256 word ( 1 word = 14 bit). Đoạn mã sau giúp bạn ngăn ngừa việc này .Khi chương trình vượt giới hạn , nó sẽ hiện thông báo.

ORG 0x10 ; Page 0MOVF offset,W ; w reg = offsetCALL Table. . .ORG 0x20 ; Page 0TableADDWF PCL,F ; tính OffsetDT "ABCD" ; “khai triển” RETLWTableEnd ; trang 0IF((Table&&0xFF00) != (TableEnd-1&&0xFF00))ERROR "Table crosses page boundary"ENDIF

Vùng nối (Linker sections )Một dự án ( project) thường chứa nhiều file khác nhau. Để nó là một dự án thống nhất chứ không chỉ là tập hợp các file riêng rẽ, người lập trình phải sử dụng các vùng nối, để liên kết các file lại một cách có chủ ý.Vùng nối được định nghĩa là đoạn mã liên kết cho dự án (project).Nó có phần mở rộng là *.LKR .Những file kiểu này mô tả các vị trí trong bộ nhớ cho thiết bị đích và cho phép ứng dụng truy xuất cũng như điều khiển vùng nhớ đó ( là vùng chứa dữ liệu và mã lệnh).Trong ứng dụng , những tên vùng đó sẽ được dùng để chuyển qua lại giữa giá trị cố định hay là mã xác định.Địa chỉ sau đó hoặc được đặc tả hoặc để cho Linker giải quyết.main code 0x0100data code_pack 0x1200my_strings idata 0x0280my_ram udatamy_access udata_acs 0x40my_ov udata_ovr

Page 11: MPLAB

my_shared udata_shr 0xE0Title Description Possible Entries,NotesThanh trạng thái (STATUS BAR) của MPLAB IDE (**) Bạn nhìn xuống dưới đáy màn hình sẽ thấy thanh này nè ( cũng tương tự như của Word , Internet Explorer thôi )

STATUS BAR

Tựa Giải thích Ghi chú nếu có hoặc các lựa chọn

Công cụ gỡ rối hiện tại

Thiết lập bằng cách vào Debugger Select tool

MPLAB SIM, MPLAB ICD 2 hay MPLAB ICE

Mạch nạp đang dùng Programmer Select Programmer

PRO MATE II, PICSTART Plus , MPLAB ICD 2 , PIC kit 1

Tên Chip Configure Select Device PIC 16F84, PIC 16F628 , v.v….

Vị trí của con trỏ chương trình

Thay đổi từng bướckhi chương trình chạy

Thường là 0 khi Reset .Click đôi lên để xem bảng Change Program Counter

Giá trị thanh ghi W ( Working Register)

Thay đổi bằng mã chương trình đang chạy

Có thể lấy giá trị từ 0x00 0xff

Bit trạng thái Cao = 1= SetThấp=0= Reset

Ví dụ như : z dc cOV= Overflow , z=zero , dc= decimal carry, c= carry

Cho phép Break toàn cục

Thiết lập : Debugger Settings

EN/DIS : bật / tắt tất cả các điểm dừng hiện tại.

Công cụ gỡ rối

Mạch nạp đang dùng

Tên chip

Vị trí của con trỏ chương trình

Giá trị của thanh ghi W

Bit trạng thái

Cho phép break tòan cục (*)

Tần số bộ xử lý

Check Sum

Số hàng , số cột của cửa sổ giao diện

Chèn / ghi đè

Cho ghi / Chỉ đọc

Page 12: MPLAB

Những lựa chọn cho phép :EN= Tất cả các điểm dừng đều được phépDIS=Tất cả điểm dừng đều bị cấm

Điểm dừng vẫn còn , nhưng có thể được bật / tắt nhờ cái “công tắc” này.

Tần số bộ xử lý Thiết lập : Debugger SettingsNhờ xung hay nhờ ICE đo tự động

Ví dụ như : 20 Mhz.Đó là tần số của thiết bị hoạt động chứ không phải của tinh thể ( thach anh ).Thường với PIC dòng giữa (14 bit ), tần số xung thạch anh đưa vào là 4Mhz.

Kiểm tra tổng thể ( checksum)

Thiết lập bằng mã trong bộ nhớ chương trình và những bit cấu hình ( configuration bits)

Ví dụ: 0xF125Là checksum 16 bit hiện tại của bộ nhớ chương trình hoặc của Eedata ( nếu có) và khu vực các bit cấu hình ( trong memory).

Số hàng , cột của cửa sổ giao diện

Là số cột và hàng hiện tại trong file

Ví dụ Ln 23, Col 14 .Chỉ xuất hiện khi đang ở cửa sổ soạn thảo

Chèn / ghi đè Thay đổi cách soạn thảoINS= chèn kí tự vào vị trí con trỏ chuộtOVR=ghi đè lên kí tự có trước đó.

INS/OVR

Cho ghi / Chỉ đọc Trạng thái của file : WR= File này cho phép ghi ( chỉnh sửa , xóa ,.vv)RO= file này chỉ đọc ( không chỉnh sửa được )

WR/RO.

(*) Suỵt , có thể bạn không hiểu Break trong “cho phép break toàn cục” có nghĩa gì . Break có thể hiểu là ngắt , nhưng đừng nhầm nó với ngắt interrupts .Break là ngắt của con trỏ chương trình , khi nó “run” đến điểm có break , nó sẽ dừng tại đó, chờ lệnh từ người dùng .Tức là Break xảy ra khi bạn debug chương trình chứ không như Interrupts , xảy ra khi đang cho PIC “run” thật sự. Nếu bạn còn muốn tìm hiểu thêm về Break thì nên xem chi tiết trong Help.

(**) Thang trạng thái ( Status bar , đừng nhầm với thanh ghi Status của PIC nha !) nằm dưới đáy màn hình MPLAB và cập nhật thông tin liên tục cho ta về trạng thái ( dĩ nhiên ) của MPLAB .Khi có một ứng dụng nào đó đang chạy , nó hiện ra “running” và một thanh Progress cho ta biết quá trình “chạy” của ứng dụng ( còn bao lâu nữa thì xong).Còn nếu không có ứng dụng nào chạy ? thanh Status sẽ chỉ cho ta biết những thông tin trên thôi. Nó có thể giúp mình làm việc dễ dàng hơn.Cứ lâu

Page 13: MPLAB

lâu nhìn xuống cho nó mừng , mình lại biết là không xài lộn chip chẳng hạn ! ( he he).

Page 14: MPLAB

Meïo&Thuû thuaät: toác ñoä . Khi söû duïng MPLAB ICE hay MPLAB ICD2 ,caùc cöûa soå ñang ñöôïc söû duïng seõ ñöôïc laøm töôi taïi moãi ñieåm ngaét,Ñeå taêng toác khi böôùc töøng böôùc moät ,ta phaûi ñoùng taát caû nhöõng cöûa soå khoâng can thieát.Caùc ñieåm ngaét seõ nhanh hôn neáu caùc bieán maø ta quan taâm ñöôïc add vaøo moät Watch Window hôn la ñöôïc xem ôû File register hoaëc SFR Window. .Khi söû duïng emulator hay MPLAB ICD2 vôùi nhöõng thieát bò coù boä nhôù chöông trình lôùn,haõy chon theû naïp chöông trình Configure>Settings vaø uncheck “Clear Memory after successfully building a project”(xoaù boä nhôù sau khi xaây doing thaønh coâng döï aùn).Toác ñoä taêng leân vì nhöõng ñoaïn coù khaû naêng lôùn cuûa boä nhôù khoâng bò xoùa ñi neáu nhöõng loãi xaây doing bò baét gaëp. .Khi xem files geristers haõyclick phaõi vaø de-select”full memory update”. - nhöõng thanh ghi ñöôïc hieån thò ñöôïc caäp nhaät,thaäm chi ñang cuoän. -nhöõng thanh ghi ñaõ thay ñoåi thì hieän leân trong maøu ñoû.

Meïo&Thuû thuaät:Trình soaïn thaûo vaø Files .Add Header files maø coù trong caùc files nguoàn(source files)vaøo döï aùn ñeå chuùng cuõng coù trong “find in project”search.(tìm kieám döï aùn) .Khi söû duïng “find in files”nhöõng muïc ñöôc tìm kieám coù theå ñöôïc double- clicked ñeå môû file nguoàn tai doøng ñoù. .Nhöõng neùt ñaïc tröng cuûa trình soan thaûo naâng cao thì coù saün trong thöïc ñôn nut chuoät phaûi. .Mot files hieän taïi coù theå ñöôïc add vaøo caùc döï aùn mieãn laø noù ñöôïc löu(save)ít nhaát moät laàn. .Neáu chæ moät file nguoàn MPASM ñöôïc tieán haønhvaø lieân keát khoâng ñöôïc söû duøng,ñöôøng daån thö muïc toång vaø teân file khoâng ñöôïc quùa 62 kí töï.Söû duïng multiple source files(files ña nguoàn) hay söû duïng kieân keát ñeå xoùa boû söï haïn cheá naøy.

Meïo&Thuû thuaät:Shortcuts.Baät saùng nhöõng teân bieán trong maõ nguoàn vaø keùo(drag) vao watch window .Ñoåi choã moät teân bieán baèng con chaïy hay thanh ghi haøm ñaëc bieät trong file nguoàn ñeå hieän thò giaù trò hieän tai cuûa bieán ñoù hay thanh ghi haøm ñaëc bieät..click vao PC treân thanh traïng thaùi ñeå ñeå ñöa ra hoäp hoäi thoaïi”chang programe counter”..Trong nhieàu cöûa soå,döõ lieäu caàn ñöôïcthay ñoåi baèng caùch choïn tröôøng döõ lieäu vaø ñaùnh vaøo nhöõng giaù trò môùi.Thanh ghi file,Thanh ghi haøm ñaëc bieät vaø nhöõng chæ leänh boä nhôù

Page 15: MPLAB

chöông trình coù theå ñöôc thay ñoåi baèng caùch choïn giaù trò hieän taïi cuûa chæ leänh vaø ñaùnh vaøo giaù trò môùi

Meïo&Thuû thuaät:Caûnh baùo vaø loãi.Doudle ckick vao moät thoâng baùo loãi trong output window ñeå môû file nguoàn taïi doøng coù loãi..Nhöõng caûnh baùo cuûaMPLAB ICD2 coù theå ñuôïc xoaù boû moät caùch ñoäc laäp trong theû caûnh baùo Debugger>Setting ..Neáu nhöõng vaán ñeà bò baét gaëp ,haõy ñoïc nhöõng giôùi haïn cuûa Debugger>Setting ñeå baûo ñaûm raèng nhöõng haøm mong muoán khoâng phaûi laø nhöõnggì ñoù maøcoù nhöõng loãi khoâng bieát Double click leân nhöõng caûnh baùo cuûa MPLAB ICD2 hay nhöõng thoâng baùo loãi trong output window ñeå coù theâm thoâng tin veá nhöõng caûnh baùo hay nhöõng loãi cuï theå.

Meïo&Thuû thuaät:Nhöng.Nhöõng thanh ghi haøm ñaëc bieät coù theå ñöôïc saép xeáp baèng ñòa chæ ,teân hay giaù trò baèng caùch double click vaøo tieâu ñeà coät.Keùo vaø thaûtoaøn coät trong SFR window vaø Watch Window ñeå saép ñaët laïi döõ lieäu.click phaûi vaøo tieâu ñeø coät ñeå aån/hieän caùc coät,.Khi lam vieäc vôùi nhöõng loaïi PÍC16C9XX choïn View>LCD Pixel ñeå ñöa ra moät hieån thò ñieåm LCD maø chuùng ta coù theå söû duïng ñeå moâ phoûngLCD.Khi laøm vieäc vôùi nhieàu döï aùn trong moät vuøng laøm vieäc,haõy tôùi theû naïp chöông trình Configure>Setting ñeå uncheck “clear programe memory upon loading a programe”(xoaù boä nhôù chöông trình sau khi naïp chöông trình),ñaëc bieät khi laøm vieäctreân nhöõng chöông trình maø caàn xaây döng va naïp rieâng reõ vaøo boä nhôù,Neáu chæ moät döï aùn ñöôïc naïp vaøo boä nhôù taïi moät thôøi ñieåm,thì cuõng nen xoaù boä nhôù.Söû duïng MPLINK ñeå xaây doing döï aùn hôn laø chæ duøng MPASM.Vì ñieàu naøy giuùp gôû roái toát hôn,vaø noù cuõng khong co nhöõng han cheá nhö laø chieàu daøi ñöôøng daãn.

Meïo&Thuû thuaät:Thöïc ñôn trình soaïn thaûo chuoät phaûi Trong cöûa soå trình soaïn thaûo,click vaøo nuùt chuoät phaûi ñeå ñua ra moät heä thoáng shortcuts:

Page 16: MPLAB