Bài giảng Vi xử lý - Chương 4 Tập lệnh và lập trình Vi điều khiển

#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.

pdf43 trang | Chia sẻ: truongthinh92 | Lượt xem: 2504 | Lượt tải: 0download
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:

  • pdfslide_vi_xu_li_chuong_4_8803.pdf
Tài liệu liên quan