Cơ sở dữ liệu - Chương 4: Tập lệnh và lập trình Vi điều khiển

pdf 43 trang vanle 2540
Bạn đang xem 20 trang mẫu của tài liệu "Cơ sở dữ liệu - Chương 4: Tập lệnh và lập trình Vi điều khiển", để tải tài liệu gốc về máy bạn click vào nút DOWNLOAD ở trên

Tài liệu đính kèm:

  • pdfco_so_du_lieu_chuong_4_tap_lenh_va_lap_trinh_vi_dieu_khien.pdf

Nội dung text: Cơ sở dữ liệu - Chương 4: Tập lệnh và lập trình Vi điều khiển

  1. dce 2009 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. BK 2.Ngôn ngữ lập trình hổ trợ. TP.HCM 3.Công cụ lập trình vi điều khiển. ©2009, CE Department
  2. dce 2009 Đặ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, CE Department 2
  3. dce 2009 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, CE Department 3
  4. dce 2009 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, CE Department 4
  5. dce 2009 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, CE Department 5
  6. dce 2009 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 ) – Kiểm tra f - bỏ qua lệnh kế nếu f = 0: • TSTFSZ f, a ©2009, CE Department 6
  7. dce 2009 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, CE Department 7
  8. dce 2009 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, CE Department 8
  9. dce 2009 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, CE Department 9
  10. dce 2009 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, CE Department 10
  11. dce 2009 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, CE Department 11
  12. dce 2009 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, CE Department 12
  13. dce 2009 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, CE Department 13
  14. dce 2009 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, CE Department 14
  15. dce 2009 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, CE Department 15
  16. dce 2009 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, CE Department 16
  17. dce 2009 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, CE Department 17
  18. dce 2009 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) ©2009, CE Department 18
  19. Hợp ngữ PIC mpasm
  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 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 Trường ĐH Bách Khoa Tp.HCM Slide 20
  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 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 Trường ĐH Bách Khoa Tp.HCM Slide 21
  22. Giao diện windows (Trực tiếp gọi MPASMWIN.EXE) Khoa Khoa học & Kỹ thuật máy tính 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 Trường ĐH Bách Khoa Tp.HCM Slide 22
  23. Thông số dòng lệnh mpasmwin program.asm program.xrf mpasmwin program.hex ( Absolute code) program.o Xem tài liệu program.lst ( Relocatable code) mpasmwin [ /option1 . . . /optionN ] filename ( Command line ) E:\MPASM\>mpasmwin /p18F4520 /l vidu1.asm ( dùng trong DOS prompt ) Khoa Khoa học & Kỹ thuật máy tính 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 Trường ĐH Bách Khoa Tp.HCM Slide 23
  24. Liên kết mplink (relocatable code) file3.o libraries.lib file2.o mplink file1.o device.lkr (Linker script file) program.cof program.map program.hex program.lst mplink cmdfiles objfiles [ libfiles ] [ options ] ( dùng linker file .LKR ) mplink /ppartnumber objfiles [ libfiles ] [ options ] mplink 18f452.lkr main.o funct.o math.lib /m main.map /o main.out Khoa Khoa học & Kỹ thuật máy tính 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 Trường ĐH Bách Khoa Tp.HCM Slide 24
  25. Mã nguồn Dạng văn bản (ASCII text file). Chứa các dòng lệnh có dạng : Tập lệnh MCU Mã gợi nhớ Nhãn Chỉ thị Toán hạng ;Chú thích Tên Macro Bỏ qua lúc dịch Quy tắc đặt TÊN Hợp ngữ • Số MPASM • Chuỗi ký tự Người sử dụng • Biểu thức định nghĩa • Cách nhau bằng dấu phẩy ( , ) Khoa Khoa học & Kỹ thuật máy tính 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 Trường ĐH Bách Khoa Tp.HCM Slide 25
  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 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 Trường ĐH Bách Khoa Tp.HCM Slide 26
  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 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 Trường ĐH Bách Khoa Tp.HCM Slide 27
  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 27 ký tự 7420 6F75 7470 7574 2073 7472 696E 6700 Byte 00 thêm vào Khoa Khoa học & Kỹ thuật máy tính 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 Trường ĐH Bách Khoa Tp.HCM Slide 28
  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 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 Trường ĐH Bách Khoa Tp.HCM Slide 29
  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 Dấu chấm Hệ 16 : H'hhhh' hoặc 0xhhhh Ví dụ : H'2A0F' 0xBA37 Khoa Khoa học & Kỹ thuật máy tính 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 Trường ĐH Bách Khoa Tp.HCM Slide 30
  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 : > , >= , == , != , >= , &= , |= , ^= Đ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 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 Trường ĐH Bách Khoa Tp.HCM Slide 31
  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 ( >=, >, >=, &=, |=, ^= ) ++ (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 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 Trường ĐH Bách Khoa Tp.HCM Slide 32
  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 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 Trường ĐH Bách Khoa Tp.HCM Slide 33
  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 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 Trường ĐH Bách Khoa Tp.HCM Slide 34
  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 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 Trường ĐH Bách Khoa Tp.HCM Slide 35
  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 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 Trường ĐH Bách Khoa Tp.HCM Slide 36
  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 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 Trường ĐH Bách Khoa Tp.HCM Slide 37
  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 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 Trường ĐH Bách Khoa Tp.HCM Slide 38
  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 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 Trường ĐH Bách Khoa Tp.HCM Slide 39
  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 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 Trường ĐH Bách Khoa Tp.HCM Slide 40
  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 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 Trường ĐH Bách Khoa Tp.HCM Slide 41
  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 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 Trường ĐH Bách Khoa Tp.HCM Slide 42
  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 Khoa Khoa học & Kỹ thuật máy tính 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 Trường ĐH Bách Khoa Tp.HCM Slide 43