#include - chèn mã nguồn.
#include include_file
#include "include_file"
#include
Ví dụ: #include P18F4520.inc
Cho phép include lồng nhau đến 5 cấp và lên đến 255 file tối đa.
Nếu include_file có đường dẫn thì chỉ tìm đúng thư mục dẫn đến,
ngược lại MPASM sẽ tìm lần lượt trong : thư mục hiện tại, thư mục chứa
file nguồn và thư mục chạy MPASM.
Bạn đang xem trước 20 trang tài liệu Bài giảng Vi xử lý - Chương 4 Tập lệnh và lập trình Vi điều khiển, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
BK
TP.HCM
2009
dce
©2009, CE Department
Chương 4 - Tập lệnh và lập trình
Vi điều khiển
1.Tập lệnh vi điều khiển PIC 18F2220.
2.Ngôn ngữ lập trình hổ trợ.
3.Công cụ lập trình vi điều khiển.
2009
dce
©2009, CE Department 2
Đặc điểm chung
• Có 75 lệnh.
• 72 lệnh dài 1 từ nhớ (16 bits).
• 3 lệnh dài 2 từ nhớ :
– LFSR f,k
– CALL n,s
– GOTO n
• Thời gian thi hành lệnh mất từ 1 đến 3 chu kỳ
lệnh (chu kỳ lệnh = 4 chu kỳ xung clock).
2009
dce
©2009, CE Department 3
Tập lệnh PIC 18F2220
• Chia thành 4 nhóm:
– Xử lý bộ nhớ dữ liệu byte (trực tiếp, tương đối
theo bank và gián tiếp).
– Xử lý bộ nhớ dữ liệu bit (trực tiếp, tương đối theo
bank và gián tiếp).
– Xử lý dữ liệu tức thời.
– Điều khiển.
• Toán hạng sử dụng trong mỗi nhóm cũng
khác nhau.
2009
dce
©2009, CE Department 4
Xử lý dữ liệu byte
• Các toán hạng sử dụng:
– Ô nhớ RAM (hay còn gọi là thanh ghi) :
• Ký hiệu f = địa chỉ 8 bit (00 - FF).
• Ký hiệu fs hay fd = địa chỉ 12 bit (000 - FFF).
– Nơi chứa kết quả (ký hiệu d):
• d=0 : kết quả chứa trong WREG.
• d=1 : kết quả chứa trong thanh ghi f.
– Cách định địa chỉ (ký hiệu a):
• a=0 : dùng bank truy xuất trực tiếp (bỏ qua BSR).
• a=1 : định địa chỉ gián tiếp theo Bank (dùng BSR).
2009
dce
©2009, CE Department 5
Xử lý dữ liệu byte (tt.1)
• Các lệnh trong nhóm này :
– Chuyển byte:
• MOVF f, d, a
• MOVFF fs, fd
• MOVWF f, a
– Đổi chỗ nửa byte:
• SWAPF f, d, a
– Khởi động:
• SETF f, a
• CLRF f, a
– Tăng/giảm/đảo dấu:
• INCF f, d, a
• DECF f, d, a
• NEGF f, a
2009
dce
©2009, CE Department 6
Xử lý dữ liệu byte (tt.2)
– Cộng/trừ:
• ADDWF f, d, a
• ADDWFC f, d, a (cộng có nhớ)
• SUBWF f, d, a
• SUBWFB f, d, a (trừ có mượn)
• SUBFWB f, d, a (trừ có mượn)
– Nhân WREG với f, kết quả trong PRODH-PRODL:
• MULWF f, a
– So sánh f với WREG - bỏ qua lệnh kế:
• CPFSLT f, a (nếu <)
• CPFSEQ f, a (nếu =)
• CPFSGT f, a (nếu >)
– Kiểm tra f - bỏ qua lệnh kế nếu f = 0:
• TSTFSZ f, a
2009
dce
©2009, CE Department 7
Xử lý dữ liệu byte (tt.3)
– Tăng/giảm - bỏ qua lệnh kế:
• INCFSZ f, d, a (tăng f, bỏ qua nếu = 0)
• INFSNZ f, d, a (tăng f, bỏ qua nếu 0)
• DECFSZ f, d, a (giảm f, bỏ qua nếu = 0)
• DCFSNZ f, d, a (giảm f, bỏ qua nếu 0)
– Luận lý:
• COMF f, d, a (phép NOT f)
• ANDWF f, d, a (phép AND WREG với f)
• IORWF f, d, a (phép OR WREG với f)
• XORWF f, d, a (phép XOR WREG với f)
– Quay :
• RLCF f, d, a (quay trái f qua CF)
• RLNCF f, d, a
• RRCF f, d, a (quay phải f qua CF)
• RRNCF f, d, a
2009
dce
©2009, CE Department 8
Xử lý dữ liệu bit
• Các toán hạng sử dụng:
– Thanh ghi : ký hiệu f (00 - FF).
– Thứ tự bit trong thanh ghi f : ký hiệu b (0 - 7).
– Cách định địa chỉ : ký hiệu a (0 hoặc 1).
2009
dce
©2009, CE Department 9
Xử lý dữ liệu bit (tt.)
• Các lệnh trong nhóm này :
– Xóa bit b của thanh ghi f:
• BCF f, b, a
– Lập bit b của thanh ghi f:
• BSF f, b, a
– Đảo bit b của thanh ghi f:
• BTG f, b, a
– Kiểm bit b của thanh ghi f - bỏ qua lệnh kế:
• BTFSC f, b, a (bỏ qua nếu b=0)
• BTFSS f, b, a (bỏ qua nếu b=1)
2009
dce
©2009, CE Department 10
Xử lý dữ liệu tức thời
• Các toán hạng sử dụng:
– Giá trị tức thời được nạp vào thanh ghi (ký hiệu k).
– Thanh ghi FSR chứa ký tự (ký hiệu f).
– Không có toán hạng (ký hiệu --).
2009
dce
©2009, CE Department 11
Xử lý dữ liệu tức thời (tt.)
• Các lệnh trong nhóm này :
– Chuyển số tức thời vào BSR : MOVLB k
– Chuyển số tức thời vào WREG : MOVLW k
– Chuyển số tức thời vào FSRx : LFSR f, k
– Cộng WREG với giá trị tức thời: ADDLW k
– Trừ WREG với giá trị tức thời: SUBLW k
– Nhân số tức thời với WREG: MULLW k
– Luận lý: ANDLW k
IORLW k
XORLW k
- Trở về từ chương trình con và chuyển k vào WREG: RETLW k
2009
dce
©2009, CE Department 12
Xử lý dữ liệu trong flash ROM
• Dùng định vị gián tiếp:
– Địa chỉ 21 bit chứa trong thanh ghi TBLPTR.
– Dữ liệu chứa trong thanh ghi TABLAT.
• Các lệnh trong nhóm này :
– Đọc bảng : TBLRD*
– Đọc bảng và tăng địa chỉ sau: TBLRD*+
– Đọc bảng và giảm địa chỉ sau: TBLRD*-
– Tăng địa chỉ trước và đọc bảng: TBLRD+*
– Ghi bảng : TBLWT*
– Ghi bảng và tăng địa chỉ sau: TBLWT*+
– Ghi bảng và giảm địa chỉ sau: TBLWT*-
– Tăng địa chỉ trước và ghi bảng: TBLWT+*
2009
dce
©2009, CE Department 13
Xử lý dữ liệu RAM gián tiếp
• Dùng định vị gián tiếp:
– Địa chỉ 12 bit chứa trong các thanh ghi FSR0, FSR1 và FSR2.
– Dữ liệu chứa trong thanh ghi f có địa chỉ trong FSRn.
• Truy xuất dữ liệu gián tiếp theo một trong 5
cách :
– Dùng thanh ghi INDFn : không đổi FSRn sau khi truy xuất.
– Dùng thanh ghi POSTDECn : giảm FSRn sau khi truy xuất.
– Dùng thanh ghi POSTINCn : tăng FSRn sau khi truy xuất.
– Dùng thanh ghi PREINCn : tăng FSRn trước khi truy xuất.
– Dùng thanh ghi PLUSWn : dùng thanh ghi WREG như thanh ghi chỉ số
để truy xuất cùng với FSRn, không thay đổi WREG và FSRn sau khi
truy xuất.
2009
dce
©2009, CE Department 14
Nhóm lệnh điều khiển
• Các toán hạng sử dụng:
– Địa chỉ bộ nhớ chương trình (ký hiệu n).
– Cách thức gọi và trở về (ký hiệu s).
– Cách thức đọc/ghi bảng (ký hiệu m).
– Không dùng toán hạng (ký hiệu --)
2009
dce
©2009, CE Department 15
Nhóm lệnh điều khiển (tt.1)
• Các lệnh trong nhóm này :
– Rẻ nhánh không điều kiện với độ dời k 20 bit:
• GOTO k (địa chỉ nơi đến xác định tuyệt đối: k PC)
– Rẻ nhánh không điều kiện với độ dời n 11 bit:
• BRA n (địa chỉ nơi đến xác định tương đối: (PC)+2+2n PC)
– Rẻ nhánh có điều kiện với độ dời n 8 bit: (PC)+2+2n PC
• BC n (rẻ nhánh nếu CF=1)
• BNC n (rẻ nhánh nếu CF=0)
• BN n (rẻ nhánh nếu NF=1)
• BNN n (rẻ nhánh nếu NF=0)
• BOV n (rẻ nhánh nếu OF=1)
• BNOV n (rẻ nhánh nếu OF=0)
• BZ n (rẻ nhánh nếu ZF=1)
• BNZ n (rẻ nhánh nếu ZF=0)
2009
dce
©2009, CE Department 16
Nhóm lệnh điều khiển (tt.2)
– Gọi chương trình con với độ dời k 20 bit: CALL k, s
• Lưu địa chỉ trở về (PC)+4 vào stack.
• Nếu s=1, lưu WREG, STATUS và BSR vào các thanh ghi WS, STATUSS
và BSRS.
• Rẻ nhánh đến địa chỉ tuyệt đối: k PC
– Gọi chương trình con tương đối với n 11 bit: RCALL n
• Lưu địa chỉ trở về (PC)+2 vào stack.
• Rẻ nhánh đến địa chỉ tương đối: (PC)+2+2n PC
– Trở về từ chương trình con:
• RETURN s
– Trở về từ chương trình con với số tức thời k 8 bit trong WREG:
• RETLW k
• Ví dụ : tra bảng dữ liệu bình phương trong bộ nhớ chương trình
2009
dce
©2009, CE Department 17
Nhóm lệnh điều khiển (tt.2)
MOVLW 3
CALL TABLE ; W chứa độ dời trong bảng (0-255)
. . .
TABLE
ADDWF PCL ; W = độ dời
RETLW 0 ; đầu bảng
RETLW 1
RETLW 4
RETLW 9
RETLW 16
RETLW 25 ; cuối bảng
Sau khi gọi TABLE, WREG có giá trị là 9=32
– Trở về từ chương trình con cho phép ngắt quãng:
• RETFIE s
2009
dce
©2009, CE Department 18
Nhóm lệnh điều khiển (tt.3)
– Lệnh về Stack:
• PUSH ((PC+2) TOS)
• POP (TOS được lấy ra khỏi Stack và bỏ đi)
– Xóa Watchdog timer:
• CLRWDT
– Chỉnh dạng thập phân cho WREG:
• DAW
– Khởi động máy mềm:
• RESET
– Vào chế độ chờ (Standby):
• SLEEP
– Không làm gì cả:
• NOP (có 2 lệnh với opcode 0000 và Fxxx)
Hợp ngữ PIC mpasm
Khoa Khoa học & Kỹ thuật máy tính
Trường ĐH Bách Khoa Tp.HCM
Môn Vi xử lý Vi điều khiển
Chương 4 : Tập lệnh và lập trình vi điều khiển
Slide 20
HỢP NGỮ PIC mpasm
Phần mềm sử dụng :
mpasmwin
mplink
mplib
Dạng sử dụng :
Tích hợp vào MPLAB IDE (thí nghiệm Vxl-Vđk).
Dùng giao diện windows (mpasmwin.exe).
Thông số dòng lệnh (dùng trong command prompt).
Khoa Khoa học & Kỹ thuật máy tính
Trường ĐH Bách Khoa Tp.HCM
Môn Vi xử lý Vi điều khiển
Chương 4 : Tập lệnh và lập trình vi điều khiển
Slide 21
MPLAB IDE
Mã nguồn
Dự án
Kết quả dịch
( Gọi MPLAB IDE )
Khoa Khoa học & Kỹ thuật máy tính
Trường ĐH Bách Khoa Tp.HCM
Môn Vi xử lý Vi điều khiển
Chương 4 : Tập lệnh và lập trình vi điều khiển
Slide 22
Giao diện windows
(Trực tiếp gọi MPASMWIN.EXE)
Khoa Khoa học & Kỹ thuật máy tính
Trường ĐH Bách Khoa Tp.HCM
Môn Vi xử lý Vi điều khiển
Chương 4 : Tập lệnh và lập trình vi điều khiển
Slide 23
Thông số dòng lệnh mpasmwin
mpasmwin [ /option1 . . . /optionN ] filename
E:\MPASM\>mpasmwin /p18F4520 /l vidu1.asm
program.asm
mpasmwin
program.hex
program.lst Xem tài liệu
program.o
program.xrf
( dùng trong DOS prompt )
( Command line )
( Relocatable code)
( Absolute code)
Khoa Khoa học & Kỹ thuật máy tính
Trường ĐH Bách Khoa Tp.HCM
Môn Vi xử lý Vi điều khiển
Chương 4 : Tập lệnh và lập trình vi điều khiển
Slide 24
Liên kết mplink (relocatable code)
file3.o
mplink
program.cof
program.hex
file2.o
file1.o
mplink cmdfiles objfiles [ libfiles ] [ options ]
mplink 18f452.lkr main.o funct.o math.lib /m main.map /o main.out
libraries.lib
program.map
program.lst
mplink /ppartnumber objfiles [ libfiles ] [ options ]
device.lkr
(Linker script file)
( dùng linker file .LKR )
Khoa Khoa học & Kỹ thuật máy tính
Trường ĐH Bách Khoa Tp.HCM
Môn Vi xử lý Vi điều khiển
Chương 4 : Tập lệnh và lập trình vi điều khiển
Slide 25
Mã nguồn
Dạng văn bản (ASCII text file).
Chứa các dòng lệnh có dạng :
Nhãn
Mã gợi nhớ
Chỉ thị
Tên Macro
Toán hạng ;Chú thích
Tập lệnh MCU
Hợp ngữ
MPASM
Người sử dụng
định nghĩa
Quy tắc đặt TÊN
• Số
• Chuỗi ký tự
• Biểu thức
• Cách nhau bằng dấu phẩy ( , )
Bỏ qua
lúc dịch
Khoa Khoa học & Kỹ thuật máy tính
Trường ĐH Bách Khoa Tp.HCM
Môn Vi xử lý Vi điều khiển
Chương 4 : Tập lệnh và lập trình vi điều khiển
Slide 26
Ví dụ
list p=18f452
#include p18f452.inc
Dest equ 0x0B ;Define constant
org 0x0000 ;Reset vector
goto Start
org 0x0020 ;Begin program
Start
movlw 0x0A
movwf Dest
bcf Dest, 3 ;This line uses 2 operands
goto Start
end
Khoa Khoa học & Kỹ thuật máy tính
Trường ĐH Bách Khoa Tp.HCM
Môn Vi xử lý Vi điều khiển
Chương 4 : Tập lệnh và lập trình vi điều khiển
Slide 27
Quy tắc đặt tên
Tên trong chương trình được sử dụng như một nhãn (label),
hằng (constant) hay biến (variable).
Quy tắc đặt tên như sau :
Phân biệt chữ lớn chữ nhỏ (có thể bỏ).
Dài không quá 32 ký tự, bắt đầu bằng chữ (a-z, A-Z) hay dấu gạch
dưới ( _ ), sau đó có thể là chữ, số (0-9), dấu gạch dưới ( _ ) hay
dấu chấm hỏi ( ? ).
Không được bắt đầu bằng 2 dấu gạch dưới (vd: __config ).
Không được bắt đầu bằng dấu gạch dưới và số (vd: _2ndloop).
Không được trùng với từ dành riêng.
Khoa Khoa học & Kỹ thuật máy tính
Trường ĐH Bách Khoa Tp.HCM
Môn Vi xử lý Vi điều khiển
Chương 4 : Tập lệnh và lập trình vi điều khiển
Slide 28
Dữ liệu chuỗi
Là dãy các ký tự ASCII (0 đến 127) đóng trong hai dấu nháy kép
( " ).
Các ký tự đặc biệt được biểu diễn dưới dạng ký tự ESCAPE
nghĩa là dùng dấu " \ " để mô tả theo bảng liệt kê ở slide kế tiếp.
Chuỗi dài không quá 255 ký tự.
Định nghĩa bằng chỉ thị dw của hợp ngữ. Do dw dùng định nghĩa
biến WORD (2 byte) nên nếu số ký tự trong chuỗi là số lẻ thì byte
0x00 được thêm vào cuối chuỗi.
Ví dụ : 7465 7374 696E data “testing first output string”
6720 6669 7273
7420 6F75 7470
7574 2073 7472
696E 6700
27 ký tự
Byte 00 thêm vào
Khoa Khoa học & Kỹ thuật máy tính
Trường ĐH Bách Khoa Tp.HCM
Môn Vi xử lý Vi điều khiển
Chương 4 : Tập lệnh và lập trình vi điều khiển
Slide 29
Các ký tự đặc biệt trong chuỗi
Escape Character Description Hex Value
\a chuông 07
\b lùi 1 ký tự 08
\f sang trang 0C
\n xuống dòng 0A
\r về đầu dòng 0D
\t nhảy cột ngang 09
\v nhảy cột đứng 0B
\\ ký tự ' \ ' 5C
\? ký tự ' ? ' 3F
\' ký tự nháy đơn 27
\" ký tự nháy kép 22
\O00 số bát phân
\xHH số hex
Khoa Khoa học & Kỹ thuật máy tính
Trường ĐH Bách Khoa Tp.HCM
Môn Vi xử lý Vi điều khiển
Chương 4 : Tập lệnh và lập trình vi điều khiển
Slide 30
Dữ liệu số
Hệ 2 : B'bbbbbbbb'
Ví dụ : B'10011101'
Hệ 8 : O'ooo'
Ví dụ : O'713'
Hệ 10 : D'ddddd' hoặc .ddddd
Ví dụ : D'2009'
.65535
Hệ 16 : H'hhhh' hoặc 0xhhhh
Ví dụ : H'2A0F'
0xBA37
Dấu chấm
Khoa Khoa học & Kỹ thuật máy tính
Trường ĐH Bách Khoa Tp.HCM
Môn Vi xử lý Vi điều khiển
Chương 4 : Tập lệnh và lập trình vi điều khiển
Slide 31
Biểu thức hợp ngữ
Biểu thức được xây dựng từ các toán tử và toán hạng.
Toán hạng có thể là biến, hằng số hoặc giá trị.
Toán tử dùng trong biếu thức chia ra thành các nhóm sau :
Đặc biệt : HIGH, LOW, UPPER, ( , ) , $
Số học / bitwise : + , - , * , / , % , ++ , -- , > , ~ , & , | , ^
Luận lý : ! , && , ||
So sánh : > , >= , == , != , <= , <
Gán : = , += , -= , *= , /= ,%= , >= , &= , |= , ^=
Đa số các toán tử có 2 toán hạng. Các toán tử có 1 toán hạng
gồm : - (âm/bù 2), ~ (bù 1), ! (NOT luận lý).
Thứ tự thực hiện các toán tử trong biểu thức căn cứ vào độ ưu
tiên của toán tử.
Khoa Khoa học & Kỹ thuật máy tính
Trường ĐH Bách Khoa Tp.HCM
Môn Vi xử lý Vi điều khiển
Chương 4 : Tập lệnh và lập trình vi điều khiển
Slide 32
Thứ tự ưu tiên của các toán tử
$ (pc hiện tại), ( , )
! (NOT luận lý), - (âm), ~ (bù 1), HIGH , LOW, UPPER
* , / , % (modulus)
+ ,-
> (dịch phải)
so sánh ( >=, >, <, <=, ==, != )
& (bitwise AND), ^ (bitwise XOR), | (bitwise OR)
&& (AND luận lý), || (OR luận lý)
toán tử gán ( =, +=, -=, *=, /=, %=, >=, &=, |=, ^= )
++ (tăng), -- (giảm) [chỉ dùng trên một dòng riêng]
Khoa Khoa học & Kỹ thuật máy tính
Trường ĐH Bách Khoa Tp.HCM
Môn Vi xử lý Vi điều khiển
Chương 4 : Tập lệnh và lập trình vi điều khiển
Slide 33
Chỉ thị hợp ngữ
Các chỉ thị của hợp ngữ MPASM chia ra thành các nhóm :
Điều khiển.
Dịch có điều kiện. (đọc tài liệu)
Dữ liệu.
Phục vụ in ấn. (đọc tài liệu)
Macro. (đọc tài liệu)
Tạo file đối tượng. (đọc tài liệu)
Cách sử dụng chỉ thị hợp ngữ trong các nhóm có tác dụng khác
nhau tùy theo ta chọn phong cách lập trình mã tuyệt đối
(absolute code) hay mã tái định (relocatable code).
Khoa Khoa học & Kỹ thuật máy tính
Trường ĐH Bách Khoa Tp.HCM
Môn Vi xử lý Vi điều khiển
Chương 4 : Tập lệnh và lập trình vi điều khiển
Slide 34
Chỉ thị điều khiển
processor - chọn MCU.
processor processor_type
Ví dụ: processor 18F4520
radix - chọn hệ số đếm mặc định (ban đầu là hex).
radix { hex | dec | oct }
Ví dụ: radix dec
variable - định nghĩa biến dùng trong biểu thức, không cần trị ban
đầu.
variable label [=expr] [ , label [= expr], . . . ]
Ví dụ: variable reclength=16, recnumber=3
variable area
area = reclength * recnumber
MOVLW area
Khoa Khoa học & Kỹ thuật máy tính
Trường ĐH Bách Khoa Tp.HCM
Môn Vi xử lý Vi điều khiển
Chương 4 : Tập lệnh và lập trình vi điều khiển
Slide 35
Chỉ thị điều khiển (2)
constant - định nghĩa hằng số dùng trong biểu thức.
constant label=expr [. . . , label = expr ]
Ví dụ: variable reclen=32
constant buflen=512
variable maxmem = reclen*buflen
MOVLW HIGH maxmem ;WREG=0x40
reclen=64
maxmem=reclen*buflen
MOVLW HIGH maxmem ;WREG=0x80
Khoa Khoa học & Kỹ thuật máy tính
Trường ĐH Bách Khoa Tp.HCM
Môn Vi xử lý Vi điều khiển
Chương 4 : Tập lệnh và lập trình vi điều khiển
Slide 36
Chỉ thị điều khiển (3)
org - đặt địa chỉ dịch chương trình.
label org expr
Ví dụ: org 0x0000
RST goto start
equ - định nghĩa hằng số (không thể thay đổi).
label equ expr
Ví dụ: width equ 12 * 3
set - định nghĩa hằng số có thể được định nghĩa lại.
label set expr
Ví dụ: width set 12
MOVLW width
width set 4
MOVLW width
Khoa Khoa học & Kỹ thuật máy tính
Trường ĐH Bách Khoa Tp.HCM
Môn Vi xử lý Vi điều khiển
Chương 4 : Tập lệnh và lập trình vi điều khiển
Slide 37
Chỉ thị điều khiển (4)
#define - định nghĩa chuỗi thay thế.
#define label [string]
Ví dụ: #define position(X,Y,Z) (Y-(2 * Z +X))
. . .
test_label dw position(1, length, 512)
#undefine - hủy bỏ một tên chuỗi thay thế đã định nghĩa, cho
phép định nghĩa lại.
#undefine label
Ví dụ: #define width 0x12
#undefine width
#define width 0x24
Khoa Khoa học & Kỹ thuật máy tính
Trường ĐH Bách Khoa Tp.HCM
Môn Vi xử lý Vi điều khiển
Chương 4 : Tập lệnh và lập trình vi điều khiển
Slide 38
Chỉ thị điều khiển (5)
#include - chèn mã nguồn.
#include include_file
#include "include_file"
#include
Ví dụ: #include P18F4520.inc
Cho phép include lồng nhau đến 5 cấp và lên đến 255 file tối đa.
Nếu include_file có đường dẫn thì chỉ tìm đúng thư mục dẫn đến,
ngược lại MPASM sẽ tìm lần lượt trong : thư mục hiện tại, thư mục chứa
file nguồn và thư mục chạy MPASM.
end - kết thúc chương trình.
end
Ví dụ: end
Khoa Khoa học & Kỹ thuật máy tính
Trường ĐH Bách Khoa Tp.HCM
Môn Vi xử lý Vi điều khiển
Chương 4 : Tập lệnh và lập trình vi điều khiển
Slide 39
Chỉ thị dữ liệu bộ nhớ
cblock - định nghĩa một khối hằng số
cblock [expr]
label [:increment] [,label [:increment] ]
endc
Ví dụ: CBLOCK 0x20
perimeter: 2 ; ô nhớ 2 byte, địa chỉ 0x20
length ; ô nhớ 1 byte, địa chỉ 0x22
width ; ô nhớ 1 byte, địa chỉ 0x23
ENDC
clrf perimeter+1 ; xóa ô nhớ 0x21
Khoa Khoa học & Kỹ thuật máy tính
Trường ĐH Bách Khoa Tp.HCM
Môn Vi xử lý Vi điều khiển
Chương 4 : Tập lệnh và lập trình vi điều khiển
Slide 40
Chỉ thị dữ liệu bộ nhớ (2)
da - đặt dữ liệu (chuỗi hoặc số) vào bộ nhớ chương trình.
[label] da expr [, expr1, . . ., exprn ]
Ví dụ: Ch_stng da "PICmicro"
data - tạo dữ liệu số và văn bản.
[label] data expr [, expr1, . . ., exprn ]
[label] data "text string" [,"text string", . . .]
Ví dụ: Ch_stng data "MCU" ; lưu chuỗi trong 2 word
Ch_stng data 'M', 'C', 'U' ; lưu 3 ký tự trong 3 word
db / dw - định nghĩa dữ liệu byte / word.
[label] db expr [, expr1, . . ., exprn ]
[label] dw expr [, expr1, . . ., exprn ]
Ví dụ: Ch_stng db 0xFA,'s','r'
dw 39, "diagnostic 39", 0x123
Khoa Khoa học & Kỹ thuật máy tính
Trường ĐH Bách Khoa Tp.HCM
Môn Vi xử lý Vi điều khiển
Chương 4 : Tập lệnh và lập trình vi điều khiển
Slide 41
Chỉ thị dữ liệu bộ nhớ (3)
de - định nghĩa dữ liệu cho EEPROM.
[label] de expr [, expr1, . . ., exprn ]
Ví dụ: #include p18f452.inc
org 0xF00000
ch_tbl2 de "PICmicro"
end
dt - phát ra dãy các lệnh RETLW dùng cho tra bảng.
[label] dt expr [, expr1, . . ., exprn ]
Ví dụ: TABLE addwf PCL
dt 0,1,4,9,16,25,36,49,64,81
. . .
movlw 7
call TABLE
Khoa Khoa học & Kỹ thuật máy tính
Trường ĐH Bách Khoa Tp.HCM
Môn Vi xử lý Vi điều khiển
Chương 4 : Tập lệnh và lập trình vi điều khiển
Slide 42
Chỉ thị dữ liệu bộ nhớ (4)
fill - phát ra khối dữ liệu (giá trị hoặc mã lệnh) giống nhau.
[label] fill expr , count
Ví dụ: #include p18f4520.inc
ORG 0x0000 ; bắt đầu chương trình trong ROM
RST goto start ;(RST vector)
fill 0,HI_INT-$ ;đặt các byte giá trị 0 giữa 2 vector
ORG 0x0008
HI_INT goto INTR_H ;Vector ngắt ưu tiên cao
fill (goto start),6
ORG 0x0018
LO_INT goto INTR_L ;Vector ngắt ưu tiên thấp
fill 0x10a9,start-$
ORG 0x0020
start ;Chương chính thực sự
fill (nop), 4
goto $
Khoa Khoa học & Kỹ thuật máy tính
Trường ĐH Bách Khoa Tp.HCM
Môn Vi xử lý Vi điều khiển
Chương 4 : Tập lệnh và lập trình vi điều khiển
Slide 43
Chỉ thị dữ liệu bộ nhớ (5)
INTR_H ;Chương trình phục vụ ngắt quãng ưu tiên cao
retfie
INTR_L ;Chương trình phục vụ ngắt quãng ưu tiên thấp
retfie
end
res - định vùng bộ nhớ đệm cho bộ nhớ dữ liệu RAM.
[label] res mem_units
Ví dụ: buffer res .64
Các file đính kèm theo tài liệu này:
- slide_vi_xu_li_chuong_4_8803.pdf