Bài giảng Lập trình hợp ngữ AVR - Phạm Thế Duy

ppt 34 trang huongle 4210
Bạn đang xem 20 trang mẫu của tài liệu "Bài giảng Lập trình hợp ngữ AVR - Phạm Thế Duy", để 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:

  • pptbai_giang_lap_trinh_hop_ngu_avr_pham_the_duy.ppt

Nội dung text: Bài giảng Lập trình hợp ngữ AVR - Phạm Thế Duy

  1. HỌC VIỆN CÔNG NGHỆ BƯU CHÍNH VIỄN THÔNG LẬP TRÌNH HỢP NGỮ AVR GIẢNG VIÊN: THS. PHẠM THẾ DUY ĐIỆN THOẠI/EMAIL: 0903661501 DUYPT@PTITHCM.EDU.VN BỘ MÔN: ĐIỀU KHIỂN VÀ XỬ LÝ TÍN HIỆU HỌC KỲ/NĂM BIÊN SOẠN: 02/2010
  2. Nội dung 6.1 GIỚI THIỆU TẬP LỆNH AVR 6.2 CẤU TRÚC LỆNH HỢP NGỮ 6.3 HƯỚNG DẪN GIAO DiỆN CODEVISONAVR www.ptit.edu.vn GIẢNG VIÊN: THS. PHẠM THẾ DUY 2 KỸ THUẬT VI XỬ LÝ BỘ MÔN: ĐIỀU KHIỂN VÀ XỬ LÝ TÍN HIỆU
  3. 6.1 GIỚI THIỆU TẬP LỆNH AVR ➢ Ký hiệu các toán hạng (operand) Rd : Các thanh ghi R0 – R31 hoặc R16 – R31 (tuỳ thuộc lệnh). Rr : Các thanh ghi R0 – R31. b : Hằng số ( 0 – 7), có thể là biểu thức hằng. s : Hằng số ( 0 – 7), có thể là biểu thức hằng. P : Hằng số ( 0 – 31/63), có thể là biểu thức hằng. K : Hằng số ( 0 – 63), có thể là biểu thức hằng. k : Hằng số (dải giá trị tuỳ thuộc lệnh), có thể là biểu thức hằng. q : Hằng số ( 0 – 63), có thể là biểu thức hằng. www.ptit.edu.vn GIẢNG VIÊN: THS. PHẠM THẾ DUY 3 KỸ THUẬT VI XỬ LÝ BỘ MÔN: ĐIỀU KHIỂN VÀ XỬ LÝ TÍN HIỆU
  4. CÁC LỆNH SỐ HỌC VÀ LOGIC Gợi nhớ Toán hạng Mô tả Thực hiện Cờ Clock • ADD Rd, Rr Cộng không nhớ Rd ←Rd + Rr Z,C,N,V,H 1 • ADC Rd, Rr Cộng có nhớ Rd ← Rd + Rr + C Z,C,N,V,H 1 • ADIW Rd, K + giá trị tức thời Rd+1:Rd ← Rd+1:Rd + K Z,C,N,V 2 • SUB Rd, Rr Trừ không nhớ Rd ← Rd - Rr Z,C,N,V,H 1 • SUBI Rd, K Trừ giá trị tức thời Rd ← Rd - K Z,C,N,V,H 1 • SBC Rd, Rr Trừ có cờ nhớ Rd ← Rd - Rr - C Z,C,N,V,H 1 • SBCI Rd, K Trừ tức thời có nhớ Rd ← Rd - K - C Z,C,N,V,H 1 • SBIW Rd, K - tức thời theo từ Rd+1:Rd ← Rd+1:Rd – K Z,C,N,V 2 • AND Rd, Rr Logic AND Rd ← Rd AND Rr Z,N,V 1 • ANDI Rd, K AND với số tức thời Rd ← Rd AND K Z,N,V 1 • OR Rd, Rr Logical OR Rd ← Rd OR Rr Z,N,V 1 • ORI Rd, K OR với số tức thời Rd ← Rd OR K Z,N,V 1 • EOR Rd, Rr Exclusive OR Rd ← Rd XOR Rr Z,N,V 1 • COM Rd Bù 1 Rd ← $FF - Rd Z,C,N,V 1 • NEG Rd Bù 2 Rd ← $00 - Rd Z,C,N,V,H 1 • SBR Rd,K Lập bit trong t. ghi Rd ← Rd v K Z,N,V 1 • CBR Rd,K Xóa bit trong t. ghi Rd ← Rd and ($FFh - K) Z,N,V 1 • INC Rd Tăng Rd ← Rd + 1 Z,N,V 1 • DEC Rd Giảm Rd ← Rd - 1 Z,N,V 1 • TST Rd K.tra zero hoặc âm Rd ← Rd and Rd Z,N,V 1 • CLR Rd Xóa thanh ghi Rd ← Rd xor Rd Z,N,V 1 • SER Rd Lập thanh ghi Rd ← $FF None 1 • MUL Rd,Rr Nhân không dấu R1, R0 ← Rd x Rr C 2 www.ptit.edu.vn GIẢNG VIÊN: THS. PHẠM THẾ DUY 4 KỸ THUẬT VI XỬ LÝ BỘ MÔN: ĐIỀU KHIỂN VÀ XỬ LÝ TÍN HIỆU
  5. CÁC LỆNH RẼ NHÁNH • RJMPk Nhảy tương đối PC ← PC + k + 1 None 2 • IJMP nhảy gián tiếp (Z) PC ← Z None 2 • JMP k Nhảy không điều kiện PC ← k None 3 • RCALL k Gọi c.trình con t. đối PC ← PC + k + 1 None 3 • ICALL Gọi gián tiếp (Z) PC ← Z None 3 • CALL k Gọi chương trình con PC ← k None 4 • RET Quay về từ c.trình con PC ← STACK None 4 • RETI Quay về từ ngắt PC ← STACK I 4 • CPSERd,Rr So sánh và 0 nhảy khi bằng if (Rd = Rr) PC ← PC + 2 or 3 None 1 / 2 / 3 • CP Rd,Rr So sánh Rd - Rr Z,C,N,V,H 1 • CPC Rd,Rr So sánh có cờ nhớ Rd - Rr - C Z,C,N,V,H 1 • CPI Rd,K So sánh với số tức thời Rd - K Z,C,N,V,H 1 • SBRCRr, b 0 nhảy khi bit = 0 (Skip) if (Rr(b)=0) PC ← PC + 2or3 None 1 / 2 / 3 • SBRSRr, b 0 nhảy nếu bit = 1 if (Rr(b)=1) PC ← PC + 2or3 None 1 / 2 / 3 • SBIC P, b 0 nhảy nếu bit I/O = 0 if(I/O(P,b)=0) PC←PC+2or3 None 1 / 2 / 3 • SBIS P, b 0 nhảy nếu bit I/O= 1 if(I/O(P,b)=1) PC ← PC+2or3 None 1 / 2 / 3 • BRBSs, k Rẽ nhánh khi cờ trạng thái=1 if (SREG(s) = 1)then PC←PC+k + 1 None 1 / 2 • BRBCs, k Rẽ nhánh khi cờ trạng thái=0 if (SREG(s) = 0) then PC←PC+k + 1 None 1 / 2 www.ptit.edu.vn GIẢNG VIÊN: THS. PHẠM THẾ DUY 5 KỸ THUẬT VI XỬ LÝ BỘ MÔN: ĐIỀU KHIỂN VÀ XỬ LÝ TÍN HIỆU
  6. CÁC LỆNH RẼ NHÁNH • BREQ k Rẽ nhánh nếu bằng if (Z = 1) then PC← PC + k + 1 None 1 / 2 • BRNE k Rẽ nhánh nếu không bằng if (Z = 0) then PC← PC + k + 1 None 1 / 2 • BRCS k Rẽ nhánh nếu CF=1 if (C = 1) then PC← PC + k + 1 None 1 / 2 • BRCC k Rẽ nhánh nếu CF=0 if (C = 0) then PC← PC + k + 1 None 1 / 2 • BRSH k Rẽ nhánh nếu > hoặc = if (C = 0) then PC ← PC + k + 1 None 1 / 2 • BRLO k Rẽ nhánh nếu nhỏ hơn if (C = 1) then PC ← PC + k + 1 None 1 / 2 • BRMI k Rẽ nhánh nếu âm if (N = 1) then PC ← PC + k + 1 None 1 / 2 • BRPL k Rẽ nhánh nếu dương if (N = 0) then PC ← PC + k + 1 None 1 / 2 • BRGE k Rẽ nhánh > hoặc =, có dấu if (NxorV= 0) then PC←PC+ k + 1 None 1 / 2 • BRLT k Rẽ nhánh < hoặc =, có dấu if (NxorV= 1) then PC← PC + k + 1 None 1 / 2 • BRHS k Rẽ nhánh nếu HF = 1 if (H = 1) then PC ← PC + k + 1 None 1 / 2 • BRHC k Rẽ nhánh nếu HF = 0 if (H = 0) then PC ← PC + k + 1 None 1 / 2 • BRTS k Rẽ nhánh nếu TF = 1 if (T = 1) then PC ← PC + k + 1 None 1 / 2 • BRTC k Rẽ nhánh nếu TF = 0 if (T = 0) then PC ← PC + k + 1 None 1 / 2 • BRVS k Rẽ nhánh nếu OF = 1 if (V = 1) then PC ← PC + k + 1 None 1 / 2 • BRVC k Rẽ nhánh nếu OF = 0 if (V = 0) then PC ← PC + k + 1 None 1 / 2 • BRIE k Rẽ nhánh nếu IF = 1 if (I = 1) then PC ← PC + k + 1 None 1 / 2 • BRID k Rẽ nhánh nếu IF = 1 if (I = 0) then PC ← PC + k + 1 None 1 / 2 www.ptit.edu.vn GIẢNG VIÊN: THS. PHẠM THẾ DUY 6 KỸ THUẬT VI XỬ LÝ BỘ MÔN: ĐIỀU KHIỂN VÀ XỬ LÝ TÍN HIỆU
  7. CÁC LỆNH TRUYỀN DỮ LIỆU • MOV Rd, Rr Chép thanh ghi Rd ← Rr None 1 • LDI Rd, K Nạp giá trị tức thời Rd ← K None 1 • LDS Rd, k Nạp trực tiếp từ SRAM Rd ← (k) None 3 • LD Rd, X Nạp gián tiếp Rd ← (X) None 2 • LD Rd, X+ Nạp gián tiếp và tăng Rd ← (X), X ← X + 1 None 2 • LD Rd, -X Giảm và nạp gián tiếp X ← X - 1, Rd ← (X) None 2 • LD Rd, Y Nạp gián tiếp Rd ← (Y) None 2 • LD Rd, Y+ Nạp gián tiếp và tăng Rd ← (Y), Y ← Y + 1 None 2 • LD Rd, -Y Giảm và nạp gián tiếp Y ← Y - 1, Rd ← (Y) None 2 • LDD Rd,Y+q Nạp gián tiếp với độ dời Rd ← (Y + q) None 2 • LD Rd, Z Nạp gián tiếp Rd ← (Z) None 2 • LD Rd, Z+ Nạp gián tiếp và giảm Rd ← (Z), Z ← Z+1 None 2 • LD Rd, -Z Giảm và nạp gián tiếp Z ← Z - 1, Rd ← (Z) None 2 • LDD Rd, Z+q Nạp gián tiếp với độ dời Rd ← (Z + q) None 2 • STS k, Rr Lưu trức tiếp vào SRAM (k) ← Rr None 3 • ST X, Rr Lưu gián tiếp (X) ← Rr None 2 www.ptit.edu.vn GIẢNG VIÊN: THS. PHẠM THẾ DUY 7 KỸ THUẬT VI XỬ LÝ BỘ MÔN: ĐIỀU KHIỂN VÀ XỬ LÝ TÍN HIỆU
  8. CÁC LỆNH TRUYỀN DỮ LIỆU • ST X+, Rr Lưu gián tiếp và giảm (X) ← Rr, X ← X + 1 None 2 • ST -X, Rr Giảm và lưu gián tiếp X ← X - 1, (X) ← Rr None 2 • ST Y, Rr Lưu gián tiếp (Y) ← Rr None 2 • ST Y+, Rr Lưu gián tiếp và tăng (Y) ← Rr, Y ← Y + 1 None 2 • ST -Y, Rr Giảm và lưu gián tiếp Y ← Y - 1, (Y) ← Rr None 2 • STD Y+q,Rr Lưu gián tiếp với độ dời (Y + q) ← Rr None 2 • ST Z, Rr Lưu gián tiếp (Z) ← Rr None 2 • ST Z+, Rr Lưu gián tiếp và tăng (Z)← Rr, Z ← Z + 1 None 2 • ST -Z, Rr Giảm và lưu gián tiếp Z ← Z - 1, (Z) ← Rr None 2 • STD Z+q,Rr Lưu gián tiếp với độ dời (Z + q)← Rr None 2 • LPM Nạp từ bộ nhớ chương trình R0 ← (Z) None 3 • IN Rd, P Đọc cổng vào ra Rd ← P None 1 • OUT P, Rr Ghi cổng vào ra P ← Rr None 1 • PUSHRr Nạp thanh ghi vào đỉnh stack STACK ← Rr None 2 • POP Rd Lấy đỉnh stack ra thanh ghi Rd ← STACK None 2 www.ptit.edu.vn GIẢNG VIÊN: THS. PHẠM THẾ DUY 8 KỸ THUẬT VI XỬ LÝ BỘ MÔN: ĐIỀU KHIỂN VÀ XỬ LÝ TÍN HIỆU
  9. CÁC LỆNH KIỂM TRA BIT • LSL Rd Dịch trái logic Rd(n+1) ← Rd(n),Rd(0) ← 0,C ← Rd(7) Z,C,N,V,H 1 • LSR Rd Dịch phải logic Rd(n) ← Rd(n+1),Rd(7) ← 0,C ← Rd(0) Z,C,N,V 1 • ROL Rd Quay trái qua CF Rd(0) ← C,Rd(n+1) ← Rd(n),C ← Rd(7) Z,C,N,V,H 1 • ROR Rd Quay phải qua CF Rd(7) ← C,Rd(n) ← Rd(n+1),C ← Rd(0) Z,C,N,V 1 • ASR Rd Dịch phải số học Rd(n) ← Rd(n+1), n=0 6 Z,C,N,V 1 • SWAP Rd Chuyển đổi Nibbles Rd(3 0) Rd(7 4) None 1 • BSET s Lập cờ SREG(s) ← 1 SREG(s) 1 • BCLR s Xóa cờ SREG(s) ← 0 SREG(s) 1 • SBI P, b Lập bit I/O I/O(P, b) ← 1 None 2 • CBI P, b Clear Bit in I/O Register I/O(P, b) ← 0 None 2 • BST Rr, b Bit Store from Register to T T ← Rr(b)T 1 • BLD Rd, b Bit load from T to Register Rd(b) ← T None 1 • SEC Lập CF C ← 1 C 1 • CLC Xóa CF C ← 0 C 1 • SEN Lập NF N ← 1 N 1 • CLN Clear Negative Flag N ← 0 N 1 • SEZ Lập ZF Z ← 1 Z 1 • CLZ Xóa ZF Z ← 0 Z 1 www.ptit.edu.vn GIẢNG VIÊN: THS. PHẠM THẾ DUY 9 KỸ THUẬT VI XỬ LÝ BỘ MÔN: ĐIỀU KHIỂN VÀ XỬ LÝ TÍN HIỆU
  10. CÁC LỆNH KIỂM TRA BIT • SEI Cho phép ngắt tổng I ← 1 I 1 • CLI Cấm ngắt cổng I ← 0 I 1 • SES Lập cờ kiểm tra dấu S ← 1 S 1 • CLS Xóa cờ kiểm tra dấu S ← 0 S 1 • SEV Lập cờ tràn bù 2 V ← 1 V 1 • CLV Xóa cờ tràn bù 2 V ← 0 V 1 • SET Lập T trong SREG T ← 1 T 1 • CLT Xóa T trong SREG T ← 0 T 1 • SEH Lập cờ HF trong SREG H ←1 H 1 • CLH Xóa cờ HF trong SREG H ← 0 H 1 • NOP Không họat động None 1 • SLEEP Ngủ None 1 • WDRWatchdog Reset None 1 www.ptit.edu.vn GIẢNG VIÊN: THS. PHẠM THẾ DUY 10 KỸ THUẬT VI XỬ LÝ BỘ MÔN: ĐIỀU KHIỂN VÀ XỬ LÝ TÍN HIỆU
  11. 6.2 CẤU TRÚC LỆNH HỢP NGỮ 6.2.1 Các chỉ thị trong assembler 6.2.2 Cú pháp các chỉ thị của assembler 6.2.3 Các biểu thức trong assembler www.ptit.edu.vn GIẢNG VIÊN: THS. PHẠM THẾ DUY 11 KỸ THUẬT VI XỬ LÝ BỘ MÔN: ĐIỀU KHIỂN VÀ XỬ LÝ TÍN HIỆU
  12. 6.2.1 Các chỉ thị trong assembler ❖ HƯỚNG DẪN TRÌNH DỊCH HỢP NGỮ (ASSEMBLER) Assembler làm việc trên các file nguồn chứa đựng các lệnh gợi nhớ (mnemonic), các nhãn (label) và các chỉ thị (directive). Lệnh gợi nhớ và chỉ thị thường kèm theo các toán hạng (operand). Một dòng mã (code) không được hơn 120 ký tự. Một dòng nhập vào có thể ở 1 trong 4 dạng sau: 1. [Nhãn:] chỉ thị [các toán hạng] [ghi chú] 2. [Nhãn:] lệnh [các toán hạng] [ghi chú] 3. Ghi chú (comment) 4. Dòng trống rỗng Các ghi chú được bắt đầu bằng dấu “;” ở đầu dòng: www.ptit.edu.vn GIẢNG VIÊN: THS. PHẠM THẾ DUY 12 KỸ THUẬT VI XỬ LÝ BỘ MÔN: ĐIỀU KHIỂN VÀ XỬ LÝ TÍN HIỆU
  13. 6.2.1 Các chỉ thị trong assembler (tt) Ví dụ : đoạn chương trình nhỏ ; Doan chuong trinh vi du label: .EQU var1=100 ; Đặt var1 = 100 .EQU var2=200 ; Đặt var2 = 200 test: rjmp test ; Vòng lặp vô hạn www.ptit.edu.vn GIẢNG VIÊN: THS. PHẠM THẾ DUY 13 KỸ THUẬT VI XỬ LÝ BỘ MÔN: ĐIỀU KHIỂN VÀ XỬ LÝ TÍN HIỆU
  14. 6.2.1 Các chỉ thị trong assembler (tt) ❖ Giải thích các chỉ thị Chỉ thị Mô tả BYTE Đặt byte cho biến CSEG Đoạn mã lệnh DB Định nghĩa các byte hằng DEF Đặt tên ký hiệu cho thanh ghi DEVICE Chỉ định CPU sử dụng DSEG Đoạn dữ liệu DW Định nghĩa các từ (word) hằng ENDMACRO Kết thúc macro EQU Đặt một ký hiệu bằng một biểu thức ESEG Đoạn dữ liệu EEPROM EXIT Thoát từ tập tin www.ptit.edu.vn GIẢNG VIÊN: THS. PHẠM THẾ DUY 14 KỸ THUẬT VI XỬ LÝ BỘ MÔN: ĐIỀU KHIỂN VÀ XỬ LÝ TÍN HIỆU
  15. 6.2.1 Các chỉ thị trong assembler (tt) Chỉ thị Mô tả INCLUDE Đọc nguồn từ tập tin khác LIST Mở tập tin thống kê LISTMAC Mở tập tin thống kê của macro MACRO Bắt đầu chương trình macro NOLIST Tắt tập tin thống kê ORG Đặt địa chỉ ban đầu cho chương trình SEG Đặt ký hiệu cho một biểu thức www.ptit.edu.vn GIẢNG VIÊN: THS. PHẠM THẾ DUY 15 KỸ THUẬT VI XỬ LÝ BỘ MÔN: ĐIỀU KHIỂN VÀ XỬ LÝ TÍN HIỆU
  16. 6.2.2 Cú pháp các chỉ thị của assembler • Chỉ thị BYTE: • Cú pháp: Label: .BYTE biểuthức • Ví dụ: .DSEG var1: .BYTE 1 ; reserve 1 byte to var1 table: .BYTE tab_size ; reserve tab_size bytes .CSEG ldi r30, low(var1) ; Load Z register low ldi r31, high(var1) ; Load Z register high ld r1, Z ; Load VAR1 into register 1 www.ptit.edu.vn GIẢNG VIÊN: THS. PHẠM THẾ DUY 16 KỸ THUẬT VI XỬ LÝ BỘ MÔN: ĐIỀU KHIỂN VÀ XỬ LÝ TÍN HIỆU
  17. 6.2.2 Cú pháp các chỉ thị của assembler (tt) • Chỉ thị CSEG: • Cú pháp: .CSEG ; Lưu ý có dấu “.” ở đầu • Chỉ thị DB: để đặt trước bộ nhớ trong bộ nhớ chương trình hoặc bộ nhớ EEPROM. • Cú pháp: .DB biểuthức • Ví dụ: .CSEG consts: .DB 0, 255, 0b01010101, -128, 0xaa .ESEG eeconst: .DB 0xff www.ptit.edu.vn GIẢNG VIÊN: THS. PHẠM THẾ DUY 17 KỸ THUẬT VI XỬ LÝ BỘ MÔN: ĐIỀU KHIỂN VÀ XỬ LÝ TÍN HIỆU
  18. 6.2.2 Cú pháp các chỉ thị của assembler (tt) • Chỉ thị DEF: đặt ký hiệu cho các thanh ghi • Cú pháp: .DEF Symbol = Register • Ví dụ: .DEF temp = R16 .DEF ior = R0 .CSEG ldi temp, 0xf0 ; Load 0xf0 into temp register in ior, 0x3f ; Read SREG into ior register eor temp, ior ; Exclusive or temp and ior www.ptit.edu.vn GIẢNG VIÊN: THS. PHẠM THẾ DUY 18 KỸ THUẬT VI XỬ LÝ BỘ MÔN: ĐIỀU KHIỂN VÀ XỬ LÝ TÍN HIỆU
  19. 6.2.2 Cú pháp các chỉ thị của assembler (tt) • Chỉ thị DEVICE: Chỉ định CPU sử dụng • Cú pháp: .DEVICE TênCPU • Ví dụ: .DEVICE ATMEGA16 • Chỉ thị DSEG: Cho biết bắt đầu đoạn dữ liệu • Cú pháp: .DSEG • Ví dụ: .DSEG ; Start data segment var1: .BYTE 1 ; reserve 1 byte to var1 table: .BYTE tab_size ; reserve tab_size bytes. www.ptit.edu.vn GIẢNG VIÊN: THS. PHẠM THẾ DUY 19 KỸ THUẬT VI XỬ LÝ BỘ MÔN: ĐIỀU KHIỂN VÀ XỬ LÝ TÍN HIỆU
  20. 6.2.2 Cú pháp các chỉ thị của assembler (tt) • Chỉ thị DW: Định nghĩa các từ hằng trong bộ nhớ chương trình hoặc bộ nhớ EEPROM. • Cú pháp: Label: .DW biểuthức • Ví dụ: .CSEG varlist:.DW 0,0xffff,0b1001110001010101,-32768,65535 .ESEG eevar: .DW 0xffff www.ptit.edu.vn GIẢNG VIÊN: THS. PHẠM THẾ DUY 20 KỸ THUẬT VI XỬ LÝ BỘ MÔN: ĐIỀU KHIỂN VÀ XỬ LÝ TÍN HIỆU
  21. 6.2.2 Cú pháp các chỉ thị của assembler (tt) • Chỉ thị ENMACRO: Kết thúc macro • Cú pháp: .ENDMACRO • Ví dụ: .MACRO SUBI16 ; Start macro definition subi r16, low(@0) ; Subtract low byte sbci r17, high(@0) ; Subtract high byte .ENDMACRO ; End macro definition www.ptit.edu.vn GIẢNG VIÊN: THS. PHẠM THẾ DUY 21 KỸ THUẬT VI XỬ LÝ BỘ MÔN: ĐIỀU KHIỂN VÀ XỬ LÝ TÍN HIỆU
  22. 6.2.2 Cú pháp các chỉ thị của assembler (tt) • Chỉ thị EQU: Gán một giá trị • Cú pháp: .EQU label = expression • Ví dụ: .EQU io_offset = 0x23 .EQU porta = io_offset + 2 • Chỉ thị ESEG: Xác định bắt đầu của đoạn dữ liệu EEPROM • Cú pháp: .ESEG • Ví dụ: .DSEG ; Start data segment vartab: .BYTE 4 ; Reserve 4 bytes in SRAM .ESEG www.ptit.edu.vn GIẢNG VIÊN: THS. PHẠM THẾ DUY 22 KỸ THUẬT VI XỬ LÝeevar:BỘ .DWMÔN :0 ĐIxffỀU0 KHIf ; InitializeỂN VÀ XỬ LoneÝ TÍN word HIỆU in EEPROM
  23. 6.2.2 Cú pháp các chỉ thị của assembler (tt) • Chỉ thị EXIT: Dừng hợp dịch • Cú pháp: .EXIT • Chỉ thị INCLUDE: assembler đọc các file được chỉ rõ • Cú pháp: .INCLUDE “filename” • Ví dụ: .INCLUDE “iodefs.asm” ; Include I/O definitions www.ptit.edu.vn GIẢNG VIÊN: THS. PHẠM THẾ DUY 23 KỸ THUẬT VI XỬ LÝ BỘ MÔN: ĐIỀU KHIỂN VÀ XỬ LÝ TÍN HIỆU
  24. 6.2.2 Cú pháp các chỉ thị của assembler (tt) • Chỉ thị LIST: Mở file thống kê • Cú pháp: .LIST • Ví dụ: .NOLIST ; Disable listfile generation .INCLUDE “macro.inc” ; The included files will not .INCLUDE “const.def” ; be shown in the listfile .LIST ; Reenable listfile generation www.ptit.edu.vn GIẢNG VIÊN: THS. PHẠM THẾ DUY 24 KỸ THUẬT VI XỬ LÝ BỘ MÔN: ĐIỀU KHIỂN VÀ XỬ LÝ TÍN HIỆU
  25. 6.2.2 Cú pháp các chỉ thị của assembler (tt) • Chỉ thị LISTMAC: Chỉ thị này báo cho assembler biết khi macro được gọi, sự khai triển macro được cho thấy trong file thống kê được tạo bởi assembler • Cú pháp: .LISTMAC • Ví dụ: .MACRO MACX ; Define an example macro add r0,@0 ; Do something .ENDMACRO ; End macro definition .LISTMAC ; Enable macro expansion MACX r2,r1 ; Call macro, show expansion www.ptit.edu.vn GIẢNG VIÊN: THS. PHẠM THẾ DUY 25 KỸ THUẬT VI XỬ LÝ BỘ MÔN: ĐIỀU KHIỂN VÀ XỬ LÝ TÍN HIỆU
  26. 6.2.2 Cú pháp các chỉ thị của assembler (tt) • Chỉ thị MACRO: Bắt đầu macro • Cú pháp: .MACRO macroname • Ví dụ: .MACRO SUBI16 ; Start macro definition subi @1,low(@0) ; Subtract low byte sbci @2,high(@0) ; Subtract high byte .ENDMACRO ; End macro definition • Chỉ thị NOLIST: Tắt việc phát file thống kê • Cú pháp: .NOLIST www.ptit.edu.vn GIẢNG VIÊN: THS. PHẠM THẾ DUY 26 KỸ THUẬT VI XỬ LÝ BỘ MÔN: ĐIỀU KHIỂN VÀ XỬ LÝ TÍN HIỆU
  27. 6.2.2 Cú pháp các chỉ thị của assembler (tt) • Chỉ thị ORG: Đặt giá trị đếm • Cú pháp: .ORG expression • Ví dụ: .DSEG ; Start data segment .ORG 0x67 ; Set SRAM address to hex 67 variable: .BYTE 1 ; Reserve a byte at SRAM adr.67H .ESEG ; Start EEPROM Segment .ORG 0x20 ; Set EEPROM location counter eevar: .DW 0xfeff ; Initialize one word .CSEG .ORG 0x10 ; Set Program Counter to hex 10 mov r0,r1 ; Do something www.ptit.edu.vn GIẢNG VIÊN: THS. PHẠM THẾ DUY 27 KỸ THUẬT VI XỬ LÝ BỘ MÔN: ĐIỀU KHIỂN VÀ XỬ LÝ TÍN HIỆU
  28. 6.2.2 Cú pháp các chỉ thị của assembler (tt) • Chỉ thị SET: Bắt đầu macro • Cú pháp: .SET label = expression • Ví dụ: .SET io_offset = 0x23 .SET porta = io_offset + 2 www.ptit.edu.vn GIẢNG VIÊN: THS. PHẠM THẾ DUY 28 KỸ THUẬT VI XỬ LÝ BỘ MÔN: ĐIỀU KHIỂN VÀ XỬ LÝ TÍN HIỆU
  29. 6.2.3 Các biểu thức trong assembler Biểu thức có thể bao hàm các toán hạng (operand), các toán tử (operator) và các hàm (function) ❖ Toán hạng: Các dạng toán hạng: • Các nhãn được định nghĩa bởi người dùng mà nó nhận được giá trị của giá trị đếm vị trí ở nơi mà chúng xuất hiện. • Các biến người dùng được định nghĩa bằng chỉ thị SET. • Các hằng số nguyên, các hằng có dạng: - Thập phân: như 10, 255. - Thập lục: như 0x0a, 0xff hoặc $0a, $ff. - Nhị phân: như 0b00001010, 0b11111111. • PC: giá trị hiện hành của bộ đếm vị trí bộ nhớ chương trình. www.ptit.edu.vn GIẢNG VIÊN: THS. PHẠM THẾ DUY 29 KỸ THUẬT VI XỬ LÝ BỘ MÔN: ĐIỀU KHIỂN VÀ XỬ LÝ TÍN HIỆU
  30. 6.2.3 Các biểu thức trong assembler ❖ Hàm: Các dạng của hàm: • LOW(biểu thức) trả lại byte thấp của biểu thức. • HIGH(biểu thức) trả lại byte cao của biểu thức. • BYTE2(biểu thức) là hàm tương tự như HIGH. • BYTE3(biểu thức) trả lại byte thứ 3 của một biểu thức. • BYTE4(biểu thức) trả lại byte thứ 4 của một biểu thức. • LWRD(biểu thức) trả lại các bit 0-15 của một biểu thức. • HWRD(biểu thức) trả lại các bit 16-31 của một biểu thức. • AGE(biểu thức) trả lại các bit 16-21 của một biểu thức. • EXP2(biểu thức) trả lại 2^(biểu thức). • LOG2(biểu thức) trả lại phần số nguyên của log2(biểu thức). www.ptit.edu.vn GIẢNG VIÊN: THS. PHẠM THẾ DUY 30 KỸ THUẬT VI XỬ LÝ BỘ MÔN: ĐIỀU KHIỂN VÀ XỬ LÝ TÍN HIỆU
  31. 6.2.3 Các biểu thức trong assembler Toán tử Ký hiệu Độ ưu tiên Mô tả NOT ! 14 Toán tử nhất nguyên. Kết quả = 1 nếu biểu thức bằng 0, kết quả =0 nếu biểu thức khác 0. ldi r16, !0xf0 ; Load r16 with 0x00 Bitwise NOT ~ 14 Toán tử nhất nguyên. Đảo tất cả các bit trong biểu thức. ldi r16, ~0xf0 ; Load r16 with 0x0f Dấu trừ - 14 Toán tử nhất nguyên. Đảo dấu số học. ldi r16,-2 ; Load -2(0xfe) in r16 Phép nhân * 13 Toán tử nhị phân. Tích số của hai biểu thức. ldi r30,label*2 ; Load r30 with label*2 www.ptit.edu.vn GIẢNG VIÊN: THS. PHẠM THẾ DUY 31 KỸ THUẬT VI XỬ LÝ BỘ MÔN: ĐIỀU KHIỂN VÀ XỬ LÝ TÍN HIỆU
  32. 6.2.3 Các biểu thức trong assembler Toán tử Ký hiệu Độ ưu tiên Mô tả Phép chia / 13 Toán tử nhị phân. Thương số nguyên của 2 biểu thức. ldi r30,label/2 ; Load r30 with label/2 Phép cộng + 12 Toán tử nhị phân. Tổng của 2 biểu thức ldi r30,c1+c2 ; Load r30 with c1+c2 Phép trừ - 12 Toán tử nhị phân. Hiệu của 2 biểu thức. ldi r17,c1-c2 ;Load r17 with c1-c2 Dịch trái << 11 Toán tử nhị phân. Dịch trái biểu thức một số vị trí. ldi r17,1<<bitmask ;Load r17 with 1 shifted left bitmask times www.ptit.edu.vn GIẢNG VIÊN: THS. PHẠM THẾ DUY 32 KỸ THUẬT VI XỬ LÝ BỘ MÔN: ĐIỀU KHIỂN VÀ XỬ LÝ TÍN HIỆU
  33. 6.2.3 Các biểu thức trong assembler Toán tử Ký hiệu Độ ưu tiên Mô tả Dịch phải >> 11 Toán tử nhị phân. Dịch phải biểu thức một số vị trí. ldi r17, c1>>c2 Nhỏ hơn 10 Toán tử nhị phân. Lớn hơn bằng >= 10 Toán tử nhị phân. Bằng == 9 Toán tử nhị phân. Khác != 9 Toán tử nhị phân. www.ptit.edu.vn GIẢNG VIÊN: THS. PHẠM THẾ DUY 33 KỸ THUẬT VI XỬ LÝ BỘ MÔN: ĐIỀU KHIỂN VÀ XỬ LÝ TÍN HIỆU
  34. 6.2.3 Các biểu thức trong assembler Toán tử Ký hiệu Độ ưu tiên Mô tả Bitwise And & 8 Toán tử nhị phân. And từng bit giữa 2 biểu thức. ldi r18,High(c1&c2) ;Load r18 with an expression Bitwise Xor ^ 7 Toán tử nhị phân. Exclusive Or giữa 2 biểu thức. ldi r18,Low(c1^c2) Bitwise Or | 6 Toán tử nhị phân. Or từng bit giữa 2 biểu thức. ldi r18,Low(c1|c2) And && 5 Toán tử nhị phân. Kết quả = 1 nếu cả 2 biểu thức khác 0, ngược lại kết quả = 0 ldi r18,Low(c1&&c2) Or || 4 Toán tử nhị phân. Kết quả = 1 nếu một trong hai biểu thức khác 0, ngược lại kết quả = 0. ldi r18,Low(c1||c2) www.ptit.edu.vn GIẢNG VIÊN: THS. PHẠM THẾ DUY 34 KỸ THUẬT VI XỬ LÝ BỘ MÔN: ĐIỀU KHIỂN VÀ XỬ LÝ TÍN HIỆU