intTypePromotion=1
zunia.vn Tuyển sinh 2024 dành cho Gen-Z zunia.vn zunia.vn
ADSENSE

Bài giảng Vi điều khiển: Chapter 2 - Ngô Như Khoa

Chia sẻ: Năm Tháng Tĩnh Lặng | Ngày: | Loại File: PDF | Số trang:23

95
lượt xem
15
download
 
  Download Vui lòng tải xuống để xem tài liệu đầy đủ

Chương 2 của bài giảng Vi điều khiển cung cấp các kiến thức liên quan đến kiến trúc 8051 và giới thiệu về ngôn ngữ lập trình Assembly. Các nội dung được trình bày trong chương này gồm có: Kiến trúc bên trong của 8051, tập các thanh ghi, tập lệnh, bản đồ bộ nhớ, giới thiệu về ngăn xếp, ngôn ngữ lập trình Assembly. Mời các bạn cùng tham khảo để nắm bắt những nội dung chi tiết.

Chủ đề:
Lưu

Nội dung Text: Bài giảng Vi điều khiển: Chapter 2 - Ngô Như Khoa

  1. 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 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ậ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 2 DCE
  3. 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 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 đế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 4 DCE
  5. 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 5 DCE
  6. 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 6 DCE
  7. 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 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 Đượ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 8 DCE
  9. 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 9 DCE
  10. 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 10 DCE
  11. 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 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ủ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 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ề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 14 DCE
  15. 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 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ậ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 18 DCE
  19. 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 19 DCE
  20. 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 20 DCE
ADSENSE

CÓ THỂ BẠN MUỐN DOWNLOAD

 

Đồng bộ tài khoản
2=>2