Kiến trúc 8051 và giới thiệu về ngôn ngữ lập trình Assembly

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

pdf23 trang | Chia sẻ: Mr Hưng | Lượt xem: 678 | Lượt tải: 0download
Bạn đang xem trước 20 trang nội dung tài liệu Kiến trúc 8051 và giới thiệu về ngôn ngữ lập trình Assembly, để 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:

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