You are on page 1of 17

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 :
Mplab myproj.mcw /nosplash
Workspace 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.
• 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úp
Nế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ếp
Cá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
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 -302
Dướ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ỗi
2 - 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=1
IF temp=0
Movlw 0x0A
ELSE
Movlw 0x1E
ENDIF
#define test
IFDEF test
Movlw 0x01
IFNDEF test
Movlw 0x02
ENDIF
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=0
movlw argl
Movwf mulplr
While i <8
Addwf dest_hi
; đặt mã lập lại i lần ở đây
i+=1
endw
endm
Sắp xếp dữ liệu
Truy 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 temp1
Paging
Bộ 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_routine
goto boot_rountine
Radix
Khi 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 dec
Bê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ân
H ‘1AF’ 0x1F ; thập lục phân
O ‘777’ ; bát phân
B ‘00111001’ ; nhị phân
0B00111001 ; nhị phân
‘A’ ‘C’ ; 7-bit ASCII
dt ‘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\Code
C:\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 MPLINK
Khi 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=16f877a
Include <p16f877a.inc>
_CONFIG CP_OFF &……& _LVP_ON
CODE 0x2100 ; EEDATA
De 1,2,3,5,8,13,21
UDATA 0x020 ; RAM
Temp_count RES 4 ; dành 4 byte bộ nhớ RAM cho biến tempcount 32-bit
RESET_VECTOR CODE 0x0000
GOTO START
INT_VECTOR CODE 0x004
; ….mã ngắt ở đây.
RETFIE
MAIN CODE
Start Clrf temp_count+3
;…mã chương trình chính ở đây.
Nop
END
Đoạn Code thí dụ cho một Project không có MPLINK

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_7H
QUEUESIZE EQU 0x10
CBLOCK 0x080 ; RAM
STATUS_TEMP, WREG_TEMP,BSR_TEMP
queue: QUEUE_SIZE
ENDC
ORG 0xf00000 ; EEDATA
DE "Test Data",0,1,2,3,4,5
ORG 0x0000
goto Main
ORG 0x0008
bra HighInt
LowInt
ORG 0x0018
movff STATUS,STATUS_TEMP
movff WREG,WREG_TEMP
movff BSR,BSR_TEMP

movff BSR_TEMP,BSR
movff WREG_TEMP,WREG
movff STATUS_TEMP,STATUS
retfie
HighInt:
movlw 0xFF
;…
retfie FAST
Main:
clrf REG_TEMP
END
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 SIM
Click 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 IDE
Thông tin liên quan đến việc bố trí của MPLAB IDE được lưu như sau:
WorkSpaces
Mộ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 .
Projects
Mộ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.”
Registry
Registry 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 INI
Nhữ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 1
Var2 res 2
Global var1,var2
Ngoà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)


( 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 EEADR
movlw data_ee_data ; dữ liệu được ghi
movwf EEDATA
bcf EECON1, EEPGD ; trỏ tới EEdata
bsf EECON1, WREN
bcf INTCON, GIE ; cấm tất cả các ngắt
movlw 0x55 ; bắt đầu ghi
movwf EECON2
movlw 0xAA
movwf EECON2
bsf EECON1,WR ; cho phép tất cả các ngắt
bsf INTCON, GIE
sleep ; chờ đến lúc ghi xong
bcf 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 :

movlw data_ee_addr ; địa chỉ của EEdata


movwf EEADR
bcf EECON1,EEPGD ; trỏ tới EEdata
bsf EECON1,RD ; đọc EEdata
movf EEDATA,W ; chuyển data tới thanh ghi W
Quả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 0


MOVF offset,W ; w reg = offset
CALL Table
. . .
ORG 0x20 ; Page 0
Table
ADDWF PCL,F ; tính Offset
DT "ABCD" ; “khai triển” RETLW
TableEnd ; trang 0
IF((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 0x0100
data code_pack 0x1200
my_strings idata 0x0280
my_ram udata
my_access udata_acs 0x40
my_ov udata_ovr
my_shared udata_shr 0xE0
Title Description Possible Entries,
Notes
Thanh 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 )

Công cụ Mạch Tên Vị trí Giá Bit Cho Số hàng , số Chèn


gỡ rối nạp chip của con phép
đang
trị trạng cột của cửa / ghi
hiện tại trỏ break
dùng của thái sổ giao diện đè
chương tòan
thanh
trình cục (*)
ghi W

Tần
số bộ Cho ghi / Chỉ đọc
Check
xử lý Sum

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 Thiết lập bằng cách vào MPLAB SIM, MPLAB ICD 2
tại Debugger  Select tool hay MPLAB ICE
Mạch nạp đang dùng Programmer  Select PRO MATE II, PICSTART
Programmer 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ỏ Thay đổi từng bướckhi Thường là 0 khi Reset
chương trình chương trình chạy .Click đôi lên để xem
bảng Change Program
Counter
Giá trị thanh ghi W ( Thay đổi bằng mã chương Có thể lấy giá trị từ 0x00
Working Register) trình đang chạy  0xff
Bit trạng thái Cao = 1= Set Ví dụ như : z dc c
Thấp=0= Reset OV= Overflow , z=zero ,
dc= decimal carry, c=
carry
Cho phép Break toàn Thiết lập : Debugger  EN/DIS : bật / tắt tất cả
cục Settings các điểm dừng hiện tại.
Những lựa chọn cho Điểm dừng vẫn còn ,
phép : nhưng có thể được bật /
EN= Tất cả các điểm dừng tắt nhờ cái “công tắc”
đều được phép này.
DIS=Tất cả điểm dừng
đều bị cấm
Tần số bộ xử lý Thiết lập : Debugger  Ví dụ như : 20 Mhz.
Settings Đó là tần số của thiết bị
Nhờ xung hay nhờ ICE đo hoạt động chứ không phải
tự động 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ể Thiết lập bằng mã trong Ví dụ: 0xF125
( checksum) bộ nhớ chương trình và Là checksum 16 bit hiện
những bit cấu hình tại của bộ nhớ chương
( configuration bits) 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 Là số cột và hàng hiện tại Ví dụ Ln 23, Col 14 .
cửa sổ giao diện trong file Chỉ xuất hiện khi đang ở
cửa sổ soạn thảo
Chèn / ghi đè Thay đổi cách soạn thảo INS/OVR
INS= chèn kí tự vào vị trí
con trỏ chuột
OVR=ghi đè lên kí tự có
trước đó.
Cho ghi / Chỉ đọc Trạng thái của file : WR/RO.
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 )

• (*) 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
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).
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ôù
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:

You might also like