Bài giảng Vi điều khiển - Chương 2: Kiến trúc 8051 và giới thiệu về ngôn ngữ lập trình Assembly

pdf 23 trang phuongnguyen 2940
Bạn đang xem 20 trang mẫu của tài liệu "Bài giảng Vi điều khiển - Chương 2: Kiến trúc 8051 và giới thiệu về ngôn ngữ lập trình Assembly", để 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:

  • pdfbai_giang_vi_dieu_khien_chuong_2_kien_truc_8051_va_gioi_thie.pdf

Nội dung text: Bài giảng Vi điều khiển - Chương 2: Kiến trúc 8051 và giới thiệu về ngôn ngữ lập trình Assembly

  1. Kiến trúc 8051 và giới thiệuvề ngôn ngữ lập trình Assembly Microcontroller Chapter 2 Ngo Nhu Khoa Department of Computer Engineering DCE ThaiNguyen University of Technology
  2. Các vấn đề chính z Kiến trúc bên trong của 8051 z Tập các thanh ghi z Tậplệnh z Bản đồ bộ nhớ z Giớithiệuvề ngăn xếp, SFRs z Ngôn ngữ lập trình Assembly 10/1/2005 2 DCE
  3. 1. Kiếntrúccủa 8051 z Quan niệmcủangườilậptrình – Tập thanh ghi – Tậplệnh – Bản đồ bộ nhớ z Quan niệmcủangườithiếtkế phầncứng – Sơđồchân ra – Các đặctrưng vềđịnh thời – Các yêu cầuvề dòng/áp 10/1/2005 3 DCE
  4. 2. Tập thanh ghi z Các thanh ghi: – A, B, R0 đến R7 là các thanh ghi 8 bit – DPTR : [DPH:DPL] là thanh ghi 16 bit – PC : Con đếmchương trình (con trỏ lệnh -Instruction Ptr) là thanh ghi 16bit – 4 tập dãy thanh ghi R0-R7 – Thanh ghi con trỏ ngăn xếp SP – PSW : Thanh ghi từ trạng thái (các cờ) – SFR : Các thanh ghi chứcnăng đặcbiệt z Điềukhiểncácthiếtbị ngoại vi trên board 10/1/2005 4 DCE
  5. 2.1. Các khái niệmcơ bản z Định dạng của1 lệnh Assembly – Operation destination source ; comment z Các giá trịđược đặttrướcbởi 1 dấu # – VD: #55, #32, z Các giá trị hệ 16 đượckýhiệuthêm chữ cái H vào cuối. – VD: #55H, #32H z Nếukýtựđầutiên củagiátrị 16 là 1 chữ cái, thì thêm vào trướcnókýtự số 0. – VD: #0FFH, #0C1H, #0D2H 10/1/2005 5 DCE
  6. 2.2. Accumulator A, ACC z Thường đượcsử dụng cho việcdịch chuyểndữ liệu, thựchiện các phép toán số học và logic trên dữ liệu8 bit. z Ví dụ: z mov A, R0 ;copy nội dung của R0 vào A z push ACC ;CấtA vàongăn xếp z mov A, #10 ;A ← 10 z mov B, A ;B ← A z mov A, 10 ;A ← mem(10) z mov A, 0xFF ;A ← 0xFF z mov A, 0FFH ;như trên24 10/1/2005 6 DCE
  7. 2.3. B Register z Thường đượcsử dụng như là 1 thanh ghi nháp, có thể xem như thanh ghi thứ 9 trong tập thanh ghi R z Đượcsử dụng trong 2 mã lệnh: mul AB, div AB – Thanh ghi B lưu toán hạng thứ 2 và sẽ lưu giữ 1 phầnkếtquả: – 8bits cao củakếtquả sau phép nhân – Phầndư của phép chia 10/1/2005 7 DCE
  8. 2.4. R0 to R7 z Tập 8 thanh ghi R0, R1, R7, mỗi thanh ghi có độ rộng 8 bit z Đượcsử dụng rộng rãi như là các thanh ghi nháp z Có mặt ở cả 4 dãy (effectively 4x8 registers) z Mỗidãyđượcchọnnhờ thiếtlập các bit RS1:RS0 trong thanh ghi từ trangh thái PSW z Dãy ngầm định (khi bật nguồn) là dãy 0 (bank0) z Ví dụ: mov R0, A ;R0 ← A mov A, R0 ;A ← R0 mov R1, #45 ;R1 ← 45 10/1/2005 8 DCE
  9. 2.5. DPTR z Thanh ghi 16 bit, đượcgọi là con trỏ dữ liệu z Đượcsử dụng bởicáclệnh truy xuất đếnbộ nhớ ngoài z Có thểđượcsử dụng để lưu trữ các giá trị 16 bit mov DPTR, #data16 ; setup DPTR with 16bit ext address movx A, @DPTR ; copy mem[DPTR] to A z Thanh ghi DPTR rấthữu dụng đốivới các thao tác trên chuỗi, trên các bảng tra 10/1/2005 9 DCE
  10. 2.6. PC z PC là 1 con đếmchương trình z Đượcxemnhư là con trỏ (IP) trong các bộ vi xử lý khác. z PC luôn trỏđếnlệnh kế tiếptrongchương trình. z Sau khi lấy1 lệnh (1 hoặc nhiều byte), PC tựđộng đượctăng lên để trỏđếnlệnh kế tiếp 10/1/2005 10 DCE
  11. 2.7. SP z SP là con trỏ ngăn xếp, nó luôn trỏđến đỉnh củangăn xếp z Lệnh push: làm tăng SP và sau đó copy dữ liệu vào ngăn xếp. z Lệnh pop: copy dữ liệutừđỉnh ngăn xếp, sau đógiảmSP z Trong 8051, ngăn xếpcóhướng phát triển lên trên (từ vùng thấp đếnvùngcaocủabộ nhớ) và chỉ có thể được đặt trong bộ nhớ RAM nội. z Khi bật nguồn, SP có giá trị là 07H z Các dãy thanh ghi 2,3 và 4 (08H to 1FH) là vùng ngăn xếp ngầm định. z Ngăn xếpcóthểđượccấp phát lạibằng cách thiếtlập SP trỏđến vùng nhớ cao hơn (trong vùng từ 30H đến 7FH): mov SP, #32H 10/1/2005 11 DCE
  12. 2.8. PSW z Thanh ghi từ trạng thái là 1 thanh ghi 8 bit, có thểđịa chỉ hoá bit “bit addressable”, mà các bit củanólàcác cờ. z CY - Cờ nhớ (Carry Flag) z Đượclậpkhicó1 số nhớ trong phép toán số học z AC - Cờ nhớ phụ (Aux. Carry Flag): nhớ từ bit D3 sang bit D4; đượcsử dụng cho phép toán BCD. z P - Cờ chẵnlẻ (Parity Flag): P=1 nếu A có số bit 1 là lẻ. z OV - Cờ tràn (Overflow Flag): lậpnếubấtkỳ phép toán số học nào gây ra 1 kếtquả tràn. 10/1/2005 12 DCE
  13. Flags - Illustration z Ví dụ phép cộng: mov A, #38h add A, #2Fh 38h 0011 1000 + 2Fh 0010 1111 67 0110 0111 z CY = 0 z AC = 1 z P = 1 10/1/2005 13 DCE
  14. 2.9. SFRs z Điềukhiểnsự vận hành củacácthiếtbị ngoại vi trên board z Các thanh ghi chức năng đặcbiệt ởđịa chỉ trựctiếp 80H đến FFH z Các dòng 8051 có thể có thêm các thanh ghi chứcnăng đặcbiệt khác. z Tấtcả các thanh ghi đềucó1 địachỉ 10/1/2005 14 DCE
  15. 3. Lược đồ bộ nhớ của 8051 z Tách biệtbộ nhớ mã lệnh và dữ liệu z Bộ nhớ mã lệnh – Lên tới 64K (some maybe onboard) (0x0000 to 0xFFFF) – PSEN là tín hiệu điềukhiển – Chỉ có thể dùng để lưu trữ chương trình (Read only) z Bộ nhớ dữ liệu – Lên tới 64K (0x0000 to 0xFFFF) – RD/WR là các tín hiệu điềukhiển – Chỉ có thể dùng để lưu trữ dữ liệu (Read and Write) z Bộ nhớ RAM nội – 128 bytes 0x00 to 0x7F (includes register banks) – SFRs 0x80 to 0xFF (not all available) 10/1/2005 15 DCE
  16. 3. Lược đồ bộ nhớ của 8051( ) 10/1/2005 16 DCE
  17. 3. Lược đồ bộ nhớ của 8051( ) Memory Start End Signal Instruction Type RAM 0x00 0x7F mov A, xxH mov A, @Ri Data 0x0000 0xFFFF RD, WR movx A, @DPTR Code 0x0000 0xFFFF PSEN movc A,@A+DPTR SFRs 0x80 0xFF mov A, xxH z Internal ROM is vendor dependant z On power-up PC starts at 0000H in ROM space z Clones may have internal memory that may be used as both Code+Data 10/1/2005 17 DCE
  18. 4. Tậplệnh của 8051 z Dịch chuyểndữ liệu - Move/Copy dữ liệutừ vùng này đến vùng khác mov, movc, movx, push, pop, xch, xchd z Các lệnh logic – thựchiện các phép toán logic trên dữ liệu anl, orl, xrl, clr, cpl, rl, rlc, rr, rrc, swap z Các lệnh số học-thựchiện các phép toán số họctrên dữ liệu add, addc, subb, inc, dec, mul, div z Điềukhiểnchương trình - điềukhiển luồng thựchiện củachương trình (jumps, subroutine calls) jmp, ajmp, ljmp, sjmp, jc, jnc, jb, jnb, jbc, jz, jnz, acall, lcall, cjne, djnz, ret, reti z NOP 10/1/2005 18 DCE
  19. 4. Tậplệnh của 8051 ( ) z Đọc qua toàn bộ tậplệnh – Không phảinhớ tấtcả các lệnh – Không phảinhớ tấtcả các trường hợp – Nhớ các loạilệnh z Khi viếtchương trình – Viết ra các thao tác cầnthựchiện(bằng tiếng anh) – Tìm kiếm trong tậplệnh để tìm lệnh tương ứng thực hiện các công việc đó 10/1/2005 19 DCE
  20. Assembly → Opcode z Mỗilệnh assembly dịch thành 1 mã lệnh nhị phân duy nhất – Có thể dài 1, 2 hoặc 3 bytes – Danh sách các lệnh thường có trong tài liệuhướng dẫnlập trình. z Ví dụ 1: mov A, #data 2 bytes, 1 cycles 0111 0100 data8 mov A, 0xAA → 0111 0100 1010 1010 → 74 AA z Ví dụ 2: acall address11 a10 a9 a8 1 0001 a7 a6 a5 a4 a3 a2 a1 a0 acall 0x557 → 1011 0001 0101 0111 → B1 57 10/1/2005 20 DCE
  21. Những định hướng Assembler z Cấutrúclệnh Assembly: [Nhãn:] mã lệnh [các toán hạng] [; chú thích] [label:] opcode [operands] [;comment] Ví dụ: start: mov A, #D0H ;code starts here z Những định hướng chương trình dịch chỉ thỉ cho assembler thựchiện 1 nhiệmvụ riêng biệt – ORG xxxxH : origin, bắt đầuchương trình tại xxxxH – EQU : định nghĩa1 hằng – Ví dụ: count EQU 25 – DB : define byte, định nghĩacấp phát cho việclưu trữ – DATA1: DB 28 – DATA2: DB “hello world” – END : end of assembly file 10/1/2005 21 DCE
  22. Assembly Example #1 z Target 8051 dev ORG 0x30 ;skip the IVT area system Start: mov R0, #10 z Std 8051 device mov R1, #0A5H z 2K on-chip ROM mov R2, #1 running a monitor program mov R3, #0x20 clearA: mov A, #0 ;now A = 0 z 32K external RAM at address 0x0000 to Addup: add A, R0 ;now A = A + R0 0x7FFF add A, R1 add A, R2 z This RAM is both add A, R3 code and data mov R4, A ;store sum in R4 z First 0x30 locations in mov DPTR, #7FFF external RAM is movx @DPTR, A ;store in ext. mem dedicated for the Done: sjmp done ;loop here forever Interrupt Vector Table (IVT) END 10/1/2005 22 DCE
  23. Chương 2. Ôn tập z What are the different views/models of a uP ? z What are the registers available in the 8051 ? z What are the functions of the 8051 registers ? z What is stack, PC, SFR, PSW/Flags ? z What is an instruction set ? z What is a memory map ? Why is it needed ? z What is an assembly language program ? How does it look ? 10/1/2005 23 DCE