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

Lược đồ bộ nhớ của 8051

z Tách biệt bộ 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ều khiể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ều khiể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)

Tập lệnh của 8051

z Dịch chuyển dữ liệu - Move/Copy dữ liệu từ vùng này

đến vùng khác

mov, movc, movx, push, pop, xch, xchd

z Các lệnh logic – thực hiệ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ực hiện các phép toán số học trên

dữ liệu

add, addc, subb, inc, dec, mul, div

z Điều khiển chương trình - điều khiển luồng thực hiện

của chươ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

 

pdf23 trang | Chia sẻ: trungkhoi17 | Lượt xem: 529 | Lượt tải: 0download
Bạn đang xem trước 20 trang tài liệu Bài giảng Microcontroller - Chương 2: Kiến trúc 8051 và giới thiệu về ngôn ngữ lập trình Assembl, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
DCE Kiến trúc 8051 và giới thiệu về ngôn ngữ lập trình Assembly Microcontroller Chapter 2 Ngo Nhu Khoa Department of Computer Engineering ThaiNguyen University of Technology 10/1/2005 2 DCE 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ập lệnh z Bản đồ bộ nhớ z Giới thiệu về ngăn xếp, SFRs z Ngôn ngữ lập trình Assembly 10/1/2005 3 DCE 1. Kiến trúc của 8051 z Quan niệm của người lập trình – Tập thanh ghi – Tập lệnh – Bản đồ bộ nhớ z Quan niệm của người thiết kế phần cứng – Sơ đồ chân ra – Các đặc trưng về định thời – Các yêu cầu về dòng/áp 10/1/2005 4 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 đếm chươ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ức năng đặc biệt z Điều khiển các thiết bị ngoại vi trên board 10/1/2005 5 DCE 2.1. Các khái niệm cơ bản z Định dạng của 1 lệnh Assembly – Operation destination source ; comment z Các giá trị được đặt trước bởi 1 dấu # – VD: #55, #32, z Các giá trị hệ 16 được ký hiệu thêm chữ cái H vào cuối. – VD: #55H, #32H z Nếu ký tự đầu tiên của giá trị 16 là 1 chữ cái, thì thêm vào trước nó ký tự số 0. – VD: #0FFH, #0C1H, #0D2H 10/1/2005 6 DCE 2.2. Accumulator A, ACC z Thường được sử dụng cho việc dịch chuyển dữ liệu, thực hiện các phép toán số học và logic trên dữ liệu 8 bit. z Ví dụ: z mov A, R0 ;copy nội dung của R0 vào A z push ACC ;Cất A vào ngă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 7 DCE 2.3. B Register z Thường được sử dụng như là 1 thanh ghi nháp, có thể xem như thanh ghi thứ 9 trong tập thanh ghi R z Được sử 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ần kết quả: – 8bits cao của kết quả sau phép nhân – Phần dư của phép chia 10/1/2005 8 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 Được sử 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ỗi dãy được chọn nhờ thiết lậ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 9 DCE 2.5. DPTR z Thanh ghi 16 bit, được gọi là con trỏ dữ liệu z Được sử dụng bởi các lệnh truy xuất đến bộ nhớ ngoài z Có thể được sử 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ất hữu dụng đối với các thao tác trên chuỗi, trên các bảng tra 10/1/2005 10 DCE 2.6. PC z PC là 1 con đếm chương trình z Được xem như là con trỏ (IP) trong các bộ vi xử lý khác. z PC luôn trỏ đến lệnh kế tiếp trong chương trình. z Sau khi lấy 1 lệnh (1 hoặc nhiều byte), PC tự động được tăng lên để trỏ đến lệnh kế tiếp 10/1/2005 11 DCE 2.7. SP z SP là con trỏ ngăn xếp, nó luôn trỏ đến đỉnh của ngă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ệu từ đỉnh ngăn xếp, sau đó giảm SP z Trong 8051, ngăn xếp có hướng phát triển lên trên (từ vùng thấp đến vùng cao của bộ 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ếp có thể được cấp phát lại bằng cách thiết lập SP trỏ đến vùng nhớ cao hơn (trong vùng từ 30H đến 7FH): mov SP, #32H 10/1/2005 12 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ủa nó là các cờ. z CY - Cờ nhớ (Carry Flag) z Được lập khi có 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; được sử dụng cho phép toán BCD. z P - Cờ chẵn lẻ (Parity Flag): P=1 nếu A có số bit 1 là lẻ. z OV - Cờ tràn (Overflow Flag): lập nếu bất kỳ phép toán số học nào gây ra 1 kết quả tràn. 10/1/2005 13 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 14 DCE 2.9. SFRs z Điều khiển sự vận hành của các thiết bị ngoại vi trên board z Các thanh ghi chức năng đặc biệt ở địa chỉ trực tiếp 80H đến FFH z Các dòng 8051 có thể có thêm các thanh ghi chức năng đặc biệt khác. z Tất cả các thanh ghi đều có 1 địa chỉ 10/1/2005 15 DCE 3. Lược đồ bộ nhớ của 8051 z Tách biệt bộ 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ều khiể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ều khiể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 16 DCE 3. Lược đồ bộ nhớ của 8051() 10/1/2005 17 DCE 3. Lược đồ bộ nhớ của 8051() 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 mov A, xxH 0xFF 0x80 SFRs PSEN RD, WR Signal movc A,@A+DPTR 0xFFFF 0x0000 Code movx A, @DPTR 0xFFFF 0x0000 Data mov A, xxH mov A, @Ri 0x7F 0x00 RAM Instruction End Start Memory Type 10/1/2005 18 DCE 4. Tập lệnh của 8051 z Dịch chuyển dữ liệu - Move/Copy dữ liệu từ vùng này đến vùng khác mov, movc, movx, push, pop, xch, xchd z Các lệnh logic – thực hiệ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ực hiện các phép toán số học trên dữ liệu add, addc, subb, inc, dec, mul, div z Điều khiển chương trình - điều khiển luồng thực hiện của chươ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 19 DCE 4. Tập lệnh của 8051 () z Đọc qua toàn bộ tập lệnh – Không phải nhớ tất cả các lệnh – Không phải nhớ tất cả các trường hợp – Nhớ các loại lệnh z Khi viết chương trình – Viết ra các thao tác cần thực hiện (bằng tiếng anh) – Tìm kiếm trong tập lệnh để tìm lệnh tương ứng thực hiện các công việc đó 10/1/2005 20 DCE Assembly → Opcode z Mỗi lệ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ệu hướng dẫn lậ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 21 DCE Những định hướng Assembler z Cấu trúc lệ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ực hiện 1 nhiệm vụ riêng biệt – ORG xxxxH : origin, bắt đầu chương trình tại xxxxH – EQU : định nghĩa 1 hằng – Ví dụ: count EQU 25 – DB : define byte, định nghĩa cấp phát cho việc lưu trữ – DATA1: DB 28 – DATA2: DB “hello world” – END : end of assembly file 10/1/2005 22 DCE Assembly Example #1 z Target 8051 dev system z Std 8051 device z 2K on-chip ROM running a monitor program z 32K external RAM at address 0x0000 to 0x7FFF z This RAM is both code and data z First 0x30 locations in external RAM is dedicated for the Interrupt Vector Table (IVT) ORG 0x30 ;skip the IVT area Start: mov R0, #10 mov R1, #0A5H mov R2, #1 mov R3, #0x20 clearA: mov A, #0 ;now A = 0 Addup: add A, R0 ;now A = A + R0 add A, R1 add A, R2 add A, R3 mov R4, A ;store sum in R4 mov DPTR, #7FFF movx @DPTR, A ;store in ext. mem Done: sjmp done ;loop here forever END 10/1/2005 23 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 ?

Các file đính kèm theo tài liệu này:

  • pdfbai_giang_microcontroller_chuong_2_kien_truc_8051_va_gioi_th.pdf