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
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:
- bai_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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 3. Lược đồ bộ nhớ của 8051( ) 10/1/2005 16 DCE
- 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
- 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
- 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
- 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
- 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
- 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
- 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