Xem mẫu

  1. ỦY BAN NHÂN DÂN THÀNH PHỐ HÀ NỘI TRƯỜNG CAO ĐẲNG NGHỀ VIỆT NAM - HÀN QUỐC THÀNH PHỐ HÀ NỘI TRỊNH THỊ HẠNH(Chủ biên) TẠ VĂN BẰNG – BÙI VĂN CÔNG GIÁO TRÌNH VI ĐIỀU KHIỂN Nghề: Cơ điện tử Trình độ: Cao đẳng (Lưu hành nội bộ) Hà Nội - Năm 2019
  2. LỜI NÓI ĐẦU Để cung cấp tài liệu học tập cho học sinh - sinh viên và tài liệu cho giáo viên khi giảng dạy, Điện tử Trường CĐN Việt Nam - Hàn Quốc thành phố Hà Nội đã chỉnh sửa, biên soạn cuốn giáo trình “VI ĐIỀU KHIỂN” dành riêng cho học sinh - sinh viên nghề Cơ điện tử. Đây là mô đun trong chương trình đào tạo nghề Cơ điện tử trình độ Cao đẳng. Nhóm biên soạn đã tham khảo các tài liệu: “vi điều khiển ” dùng cho sinh viên các Trường Cao đẳng, Đại học kỹ thuật của tác giả. Sổ tay linh kiện điện tử cho người thiết kế mạch. Giáo trình linh kiện điện tử và ứng dụng. Sổ tay tra cứu các tranzito Nhật Bản (Nguyễn Kim Giao, Lê Xuân Thế Kỹ thuật VXL & lập trình ASSEMBLY cho hệ VXL - Đỗ Xuân Tiến – NXB KH&KT - 200. Họ VĐK 8051 - Tống Văn On & Hoàng Đức Hải - NXB LĐXH – 2001 và nhiều tài liệu khác. Mặc dù nhóm biên soạn đã có nhiều cố gắng nhưng không tránh được những thiếu sót. Rất mong đồng nghiệp và độc giả góp ý kiến để giáo trình hoàn thiện hơn. Xin chân thành cảm ơn! Hà Nội, ngày … tháng … năm 2019 Chủ biên: Trịnh Thị Hạnh 1
  3. MỤC LỤC LỜI NÓI ĐẦU ..................................................................................................... 1 MỤC LỤC ............................................................................................................ 2 GIÁO TRÌNH MÔ ĐUN ................................................................................ 4 Bài 1 .................................................................................................................. 7 Cấu trúc họ vi điều khiển 8051 ...................................................................... 7 Mục tiêu......................................................................................................... 7 1.1. Tổng quan............................................................................................... 7 1.2. Sơ đồ chân .............................................................................................. 8 1.3. Cấu trúc Port I/O .................................................................................... 9 1.4. Tổ chức bộ nhớ .................................................................................... 11 1.5. Các thanh ghi chức năng đặc biệt ........................................................ 17 1.7. Các cải tiến của 8032/8052 .................................................................. 28 1.8. Hoạt động Reset ................................................................................... 28 1.9. Thực hành ứng dụng ............................................................................ 29 Bài 2 ................................................................................................................ 36 Tập lệnh 8051................................................................................................. 36 2.1. Mở đầu ................................................................................................. 36 2.2. Các cách định địa chỉ ........................................................................... 39 2.3. Các nhóm lệnh...................................................................................... 45 2.4. Thực hành............................................................................................. 74 Bài 3 ................................................................................................................ 82 Bộ định thời.................................................................................................... 82 3.1. Mở đầu ................................................................................................. 82 3.2. Thanh ghi SFR của timer ..................................................................... 84 3.3. Các chế độ làm việc ............................................................................. 86 3.4. Nguồn cung cấp xung cho Timer ......................................................... 88 2
  4. 3.5. Khởi tạo và truy xuất thanh ghi Timer ................................................. 88 3.6. Thực hành............................................................................................. 91 Bài 4 ................................................................................................................ 97 Cổng nối tiếp .................................................................................................. 97 4.1. Thanh ghi điều khiển............................................................................ 97 4.2. Chế độ làm việc.................................................................................... 98 4.3. Khởi tạo và truy xuất thanh ghi PORT nối tiếp ................................. 104 4.4. Truyền thông đa xử lý ........................................................................ 106 4.5. Thực hành........................................................................................... 113 TÀI LIỆU THAM KHẢO .......................................................................... 127 3
  5. GIÁO TRÌNH MÔ ĐUN Tên mô đun: Vi điều khiển Mã số mô đun: MĐ 43 Thời gian mô đun: 60 giờ (LT: 18 giờ; TH/TT/TN/BT/TL: 42 giờ) I. Vị trí, tính chất mô đun - Vị trí: Mô đun Vi điều khiển là mô đun được bố trí dạy sau khi học xong môn học mô đun: Kỹ thuật xung số điện tử cơ bản, điện tử nâng cao, điện tử công suất, và học trước môn vi mạch số lập trình.. - Tính chất: Là mô đun chuyên môn nghề. II. Mục tiêu của mô đun - Kiến thức: + Vận hành được các thiết bị và dây chuyền sản xuất dùng vi điều khiển + Xác định được các nguyên nhân gây ra hư hỏng xảy ra trong thực tế. - Kỹ năng + Kiểm tra và viết được các chương trình điều kiển. + Trình bày được cấu trúc, ứng dụng cả vi điều khiển trong công nghiệp + Kiểm tra và viết được các chương trình điều kiển. +Vận hành được các thiết bị và dây chuyền sản xuất dùng vi điều khiển + Xác định được các nguyên nhân gây ra hư hỏng xảy ra trong thực tế. - Năng lực tự chủ, trách nhiệm: + Rèn luyện thái độ nghiêm túc, cẩn thận, chính xác trong học tập và thực hiện công việc III. Nội dung mô đun 1. Nội dung tổng quát và phân bổ thời gian 4
  6. Thời gian Số TT Tên các bài trong mô đun Tổng Lý Thực Kiểm số thuyết hành tra+ 1 Cấu trúc họ vi điều khiển 8051 12 6 6 0 1. Tổng quan 2. Sơ đồ chân 3. Cấu trúc Port I/O 4. Tổ chức bộ nhớ 5. Các thanh ghi chức năng đặc biệt 6. Bộ nhớ ngoài 7. Các cải tiến của 8032/8052 8. Hoạt động Reset 9. Thực hành ứng dụng 2 Tập lệnh 8051 18 6 12 1 1. Mở đầu 2. Các cách định địa chỉ 3. Các nhóm lệnh 4. Thực hành Kiểm tra 3 Bộ định thời 18 6 12 1 1. Mở đầu 2. Thanh ghi SFR của timer 3. Các chế độ làm việc 4. Nguồn cung cấp xung cho Timer 5. Khởi động, dừng, điều khiển Timer 6. Thực hành Kiểm tra 5
  7. 4 Cổng nối tiếp 12 11 1 1. Thanh ghi điều khiển 2. Chế độ làm việc 3. Khởi tạo và truy suất thanh ghi PORT nối tiếp 4. Truyền thông đa xử lý 5. Thực hành Kiểm tra Cộng 60 18 39 3 6
  8. Bài 1 Cấu trúc họ vi điều khiển 8051 Mục tiêu - Mô tả được cấu trúc họ vi điều khiển chuẩ công nghiệp - Thực hiện truy xuất bộ nhớ dữ liệu, bộ nhớ chương trình đúng qui trình kỹ thuật - Thực hiện đúng kỹ thuật phương pháp mở rộng bộ nhớ ngoài. - Trình bày được nguyên lý hoạt động của mạch reset - Nghiêm túc, cẩn thận, chính xác trong học tập và thực hiện công việc 1.1. Tổng quan Khoa học kỹ thuật đang ngày càng phát triển rất mạnh mẽ, các công nghệ mới thuộc các lĩnh vực khác nhau cũng nhờ đó đã ra đời nhằm đáp ứng nhu cầu của xã hội và kỹ thuật Vi điều khiển cũng nằm trong số đó. Hiện nay kỹ thuật Vi xử lý đã được giảng dạy rộng rãi ở các trường Đại học và Cao đẳng trong cả nước, tuy nhiên lĩnh vực mới Vi điều khiển vẫn đang còn rất mới mẻ, và những ứng dụng của nó vẫn chưa được khai thác triệt để trong các hệ thống điều khiển, đo lường và điều chỉnh của các dây chuyền công nghiệp. Qua quá trình tham gia giảng dạy tại trường Đại học SPKT Hưng yên và thời gian học tập nâng cao ở CHLB Đức, tác giả đã tập trung nghiên cứu và biên soạn giáo trình kỹ thuật Vi điều khiển nhằm phục vụ công việc giảng dạy lĩnh vực này tại trường. Toàn bộ nội dung giáo trình được chia làm 2 phần. Phần 1 bao gồm các kiến thức cơ bản về phần cứng và các tập lệnh của họ Vi điều khiển 80C51/ AT89C51. ở phần 2 tác giả tập trung trình bày phần cứng họ Vi điều khiển 80C52/ AT89S8252 và kỹ thuật lập trình bằng hợp ngữ. Đối tượng của quyển giáo trình này là các sinh viên ngành Điện, Điện tử, Cơ điện tử, Công nghệ thông tin. Tuy nhiên để tiếp thu tốt nội dung từ quyển giáo trình này, người học cần có kiến thức về kỹ thuật số, kỹ thuật mạch điện tử và đã biết qua một ngôn ngữ lập trình cấp cao như Pascal, C… Mặc dù đã rất cố gắng trong quá trình biên soạn, nhưng do trình độ và thời gian còn bị hạn chế nên chắc chắn quyển giáo trình này không tránh khỏi những thiếu sót, rất mong nhận được những ý kiến đóng góp, phê bình của bạn đọc. 7
  9. 1.2. Sơ đồ chân Hình 1.1. IC 80C51/AT89C51 Hình 1.1. sơ đồ chân 8051 Chức năng của các chân tín hiệu như sau: - P0.0 đến P0.7 là các chân của cổng 0. - P1.0 đến P1.7 là các chân của cổng 1. - P2.0 đến P2.7 là các chân của cổng 2 - P3.0 đến P3.7 là các chân của cổng 3 - RxD: Nhận tín hiệu kiểu nối tiếp. - TxD: Truyền tín hiệu kiểu nối tiếp. - /INT0: Ngắt ngoài 0. 8
  10. - /INT1: Ngắt ngoài 1. - T0: Chân vào 0 của bộ Timer/Counter 0. - T1: Chân vào 1 của bộ Timer/Counter 1. - /Wr: Ghi dữ liệu vào bộ nhớ ngoài. - /Rd: Đọc dữ liệu từ bộ nhớ ngoài. - RST: Chân vào Reset, tích cực ở mức logic cao trong khoảng 2 chu kỳ máy. - XTAL1: Chân vào mạch khuyếch đaị dao động - XTAL2: Chân ra từ mạch khuyếch đaị dao động. - /PSEN : Chân cho phép đọc bộ nhớ chương trình ngoài (ROM ngoài). - ALE (/PROG): Chân tín hiệu cho phép chốt địa chỉ để truy cập bộ nhớ ngoài, khi On-chip xuất ra byte thấp của địa chỉ. Tín hiệu chốt được kích hoạt ở mức cao, tần số xung chốt = 1/6 tần số dao động của bộ VĐK. Nó có thể được dùng cho các bộ Timer ngoài hoặc cho mục đích tạo xung Clock. Đây cũng là chân nhận xung vào để nạp chương trình cho Flash (hoặc EEPROM) bên trong On-chip khi nó ở mức thấp. - /EA/Vpp: Cho phép On-chip truy cập bộ nhớ chương trình ngoài khi /EA=0, nếu /EA=1 thì On-chip sẽ làm việc với bộ nhớ chương trình nội trú. Khi chân này được cấp nguồn điện áp 12V (Vpp) thì On-chip đảm nhận chức năng nạp chương trình cho Flash bên trong nó. - Vcc: Cung cấp dương nguồn cho On-chip (+ 5V). - GND: nối mát. 1.3. Cấu trúc Port I/O 1.3.1. Port 0 - Port 0 (P0.0 – P0.7) có số thứ tự chân từ 32 – 39. Port 0 có hai chức năng: - Port xuất/nhập dữ liệu (P0.0 - P0.7) cho các thiết kế vi điều khiển không sử dụng bộ nhớ bên ngoài. - Bus địa chỉ byte thấp và bus dữ liệu đa hợp (AD0 – AD7) cho các thiết kế vi điều khiển có sử dụng bộ nhớ bên ngoài. - Khi ALE = 0 thì Port 0 đóng vai trò là bus dữ liệu (D0 – D7). 9
  11. - Khi ALE = 1 thì Port 0 đóng vai trò là bus địa chỉ (A0 – A7). - Cần ghi nhớ một vấn đề rất quan trọng là khi Port 0 đóng vai trò là port xuất/nhập dữ liệu thì phải kết nối thêm các điện trở kéo lên bên ngoài (xem hình bên). - Ở chế độ mặc định (hay nói cách khác là sau khi vi điều khiển được reset) thì các chân Port 0 (P0.0 - P0.7) được cấu hình là port xuất dữ liệu. Muốn các chân Port 0 làm port nhập dữ liệu thì cần phải lập trình lại, bằng cách ghi mức logic cao (mức 1) đến tất cả các bit của port trước khi bắt đầu nhập dữ liệu từ port. 1.3.2. Port 1 - Port 1 (P1.0 – P1.7) có số thứ tự chân từ 1 – 8. Port 1 có một chức năng: - Port xuất/nhập dữ liệu (P1.0 – P1.7) cho các thiết kế vi điều khiển có sử dụng hoặc không sử dụng bộ nhớ bên ngoài. - Khác với Port 0, đối với Port 1 thì không cần phải kết nối thêm các điện trở kéo lên bên ngoài vì nó đã được thiết kế sẵn các điện trở kéo lên bên trong. - Ở chế độ mặc định (hay nói cách khác là sau khi vi điều khiển được reset) thì các chân Port 1 (P1.0 – P1.7) được cấu hình là port xuất dữ liệu. Muốn các chân Port 1 làm port nhập dữ liệu thì cần phải lập trình lại, bằng cách ghi mức logic cao (mức 1) đến tất cả các bit của port trước khi bắt đầu nhập dữ liệu từ port. 1.3.3. Port 2 - Port 2 (P2.0 – P2.7) có số thứ tự chân từ 21 – 28. Port 2 có hai chức năng: - Port xuất nhập dữ liệu (P2.0 – P2.7) cho các thiết kế vi điều khiển không sử dụng bộ nhớ bên ngoài. - Bus địa chỉ byte cao (A8 – A15) cho các thiết kế vi điều khiển có sử dụng bộ nhớ chương trình (ROM) bên ngoài hoặc có sử dụng bộ nhớ dữ liệu (RAM) bên ngoài có dung lượng lớn hơn 256 byte. - Khác với Port 0, đối với Port 2 thì không cần phải kết nối thêm các điện trở kéo lên bên ngoài vì nó đã được thiết kế sẵn các điện trở kéo lên bên trong. - Ở chế độ mặc định (hay nói cách khác là sau khi vi điều khiển được reset) thì các chân Port 2 (P2.0 – P2.7) được cấu hình là port xuất dữ liệu. Muốn các chân Port 2 làm port nhập dữ liệu thì cần phải lập trình lại, bằng cách ghi mức logic cao (mức 1) đến tất cả các bit của port trước khi bắt đầu nhập dữ liệu từ port. 10
  12. 1.3.4. Port 3 - Port 3 (P3.0 – P3.7) có số thứ tự chân từ 10 – 17. Port 3 có hai chức năng: - Port xuất nhập dữ liệu (P3.0 – P3.7) cho các thiết kế vi điều khiển không sử dụng bộ nhớ ngoài hoặc các chức năng đặc biệt. - Các tín hiệu điều khiển cho các thiết kế vi điều khiển có sử dụng bộ nhớ ngoài hoặc các chức năng đặc biệt. - Khác với Port 0, đối với Port 3 thì không cần phải kết nối thêm các điện trở kéo lên bên ngoài vì nó đã được thiết kế sẵn các điện trở kéo lên bên trong. - Ở chế độ mặc định (hay nói cách khác là sau khi vi điều khiển được reset) thì các chân Port 3 (P3.0 – P3.7) được cấu hình là port xuất dữ liệu. Muốn các chân Port 3 làm port nhập dữ liệu thì cần phải lập trình lại, bằng cách ghi mức logic cao (mức 1) đến tất cả các bit của port trước khi bắt đầu nhập dữ liệu từ port. 1.4. Tổ chức bộ nhớ Hình 1.2: Không gian bộ nhớ của vi điều khiển 8051. - Hầu hết các vi xử lý đều được bổ sung một không gian bộ nhớ chung cho các chương trình và dữ liệu. Lý do ở đây là các chương trình thường được lưu trữ 11
  13. trên một đĩa và được tải vào RAM để thực thi, vì vậy khi đó cả dữ liệu và các chương trình đều hiện diện trong RAM hệ thống. - Mặt khác, các vi điều khiển thì rất hiếm khi được sử dụng như là CPU trong các "hệ thống máy tính". Thay vào đó, chúng giữ vai trò như là thành phần trung tâm trong các thiết kế hướng điều khiển. Hệ thống vi điều khiển có dung lượng bộ nhớ bị giới hạn và không có đĩa lưu trữ chương trình. Chương trình điều khiển phải được lưu trữ trong ROM. - Vì lý do nêu trên, vi điều khiển 8051 cung cấp một không gian bộ nhớ tách biệt cho các chương trình (mã) và dữ liệu. Như được minh họa trong Hình 2.3.1, cả hai thành phần chương trình và dữ liệu có thể được lưu trữ vào loại bộ nhớ tương ứng bên trong vi điều khiển, tuy nhiên khi cần thiết có thể mở rộng cả hai loại bộ nhớ này lên, bằng cách sử dụng thêm các thành phần linh kiện bên ngoài, có dung lượng tối đa là 64KB bộ nhớ chương trình và 64KB bộ nhớ dữ liệu. - Bộ nhớ bên trong vi điều khiển 8051 gồm có ROM bên trong và RAM bên trong. RAM bên trong được chia ra làm nhiều vùng khác nhau: RAM đa chức năng, RAM định địa chỉ bit, các dãy thanh ghi và các thanh ghi chức năng đặc biệt. Hình 2.3.1 minh họa các không gian bộ nhớ bên trong và bên ngoài (bộ nhớ mở rộng) của vi điều khiển 8051. Hình 2.3.2 minh họa chi tiết của bộ nhớ dữ liệu bên trong, như trong hình thì không gian bộ nhớ dữ liệu bên trong được chia ra thành các vùng như sau: các dãy thanh ghi (00H – 1FH), RAM định địa chỉ bit (20H – 2FH), RAM đa chức năng (30H – 7FH) và các thanh ghi chức năng đặc biệt (80H – FFH). Các vùng không gian bộ nhớ này được trình bày và phân tích như bên dưới đây. 12
  14. Hình 1.3. Bộ nhớ dữ liệu bên trong của vi điều khiển 8051. 13
  15. 1.4.1. RAM đa chức năng Vùng RAM đa chức năng bao gồm 80 byte, có địa chỉ từ 30H – 7FH. Tất cả các vị trí nhớ (ô nhớ) trong vùng RAM đa chức năng này đều có thể được truy xuất bằng cách sử dụng chế độ định địa chỉ trực tiếp, tức thời hoặc gián tiếp (chi tiết về các chế độ định địa chỉ sẽ được trình bày rõ trong "Bài 3: Giới thiệu tập lệnh của vi điều khiển 8051"). Xét một ví dụ đơn giản "Thực hiện thao tác chuyển nội dung của ô nhớ có địa chỉ 5FH vào thanh ghi A", có thể được thực hiện bằng các phương pháp như sau: Phương pháp định địa chỉ trực tiếp: MOV A, 5FH Lệnh trên: Chuyển nội dung của ô nhớ có địa chỉ 5FH vào thanh ghi A. Phương pháp định địa chỉ gián tiếp: MOV R0, #5FH MOV A, @R0 Lệnh thứ 1: Chuyển giá trị 5FH vào thanh ghi R0. Lệnh thứ 2: Chuyển nội dung của ô nhớ có địa chỉ "được trỏ" bởi thanh ghi R0 (trường hợp này là ô nhớ có địa chỉ 5FH) vào thanh ghi A. 1.4.2. RAM định địa chỉ bit Tính năng truy xuất riêng lẻ từng bit một thông qua phần mềm là một tính năng mạnh của hầu hết các vi điều khiển. Các bit có thể được đặt, xóa, AND, OR,… chỉ bằng một lệnh duy nhất. Ngoài ra, các port xuất/nhập của vi điều khiển 8051 được định địa chỉ bit, điều này làm đơn giản hóa chương trình điều khiển giao tiếp với các thiết bị xuất và nhập đơn bit. Vi điều khiển 8051 có 210 vị trí nhớ được định địa chỉ bit, trong đó có 128 vị trí nhớ có địa chỉ byte từ 20H – 2FH và phần còn lại thì nằm trong các thanh ghi chức năng đặc biệt Các địa chỉ này có thể được truy xuất theo các byte (tương tự như vùng RAM đa chức năng đã trình bày ở phần trên) hoặc theo các bit phụ thuộc vào từng lệnh sử dụng. 14
  16. Xét một ví dụ đơn giản "Thực hiện thao tác đặt bit 29H trong RAM bên trong (nghĩa là làm cho bit có địa chỉ 29H nhận giá trị logic cao [1])", có thể được thực hiện bằng các phương pháp như sau: Phương pháp định địa chỉ bit: SETB 29H Lệnh trên: Làm cho bit nhớ có địa chỉ 29H (bit này thuộc ô nhớ có địa chỉ 25H) nhận giá trị logic cao [1]. Các bit nhớ còn lại lân cận bit 29H sẽ không bị ảnh hưởng. Phương pháp định địa chỉ trực tiếp, tức thời: MOV A, 25H ORL A, #00000010B MOV 25H, A Lệnh thứ 1: Chuyển nội dung của ô nhớ có địa chỉ 25H vào thanh ghi A. Lệnh thứ 2: Thực hiện phép OR từng bit của thanh ghi A với giá trị nhị phân 00000010. Việc thực hiện phép OR với giá trị này là có chủ đích, vì bit 29H là bit thứ 1 trong ô nhớ cho nên để bit này nhận giá trị logic cao [1] thì ta sẽ phải OR với giá trị mà trong đó chỉ có bit thứ 1 có giá trị logic cao [1] và các bit còn lại có giá trị logic thấp [0]. Lệnh thứ 3: Chuyển nội dung của thanh ghi A vào ô nhớ có địa chỉ 25H. 1.4.3. Các dãy thanh ghi 32 vị trí nhớ đầu tiên của bộ nhớ dữ liệu bên trong vi điều khiển 8051 chứa các dãy thanh ghi. Tập lệnh của 8051 có hỗ trợ 8 thanh ghi, từ R0 đến R7, và mặc định (sau khi vi điều khiển được reset) cho các thanh ghi này có địa chỉ tương ứng lần lượt từ 00H – 07H. Các vị trí nhớ trong vùng nhớ này có thể được truy xuất theo các kiểu tương tự như vùng RAM đa chức năng đã trình bày ở phần trên hoặc theo kiểu định địa chỉ thanh ghi. Các lệnh sử dụng các thanh ghi R0 – R7 thì ngắn gọn hơn và được thực thi nhanh hơn các lệnh tương đương sử dụng kiểu định địa chỉ trực tiếp. Đối với các giá trị dữ liệu thường hay được sử dụng thì nên sử dụng một trong các thanh ghi này để lưu trữ chúng. 15
  17. Xét một ví dụ đơn giản "Thực hiện thao tác chuyển nội dung của ô nhớ có địa chỉ 05H vào thanh ghi A ", có thể được thực hiện bằng các phương pháp như sau: Phương pháp định địa chỉ thanh ghi: MOV A, R5 Lệnh trên: Chuyển nội dung của thanh ghi R5 vào thanh ghi A, vì mặc định thì thanh ghi R5 tương ứng với ô nhớ có địa chỉ 05H. Vì vậy thao tác của lệnh cũng chính là chuyển nội dung của ô nhớ có địa chỉ 05H vào thanh ghi A. Tuy nhiên với phương pháp định địa chỉ thanh ghi thì lệnh này chỉ có độ dài một byte. - Phương pháp định địa chỉ trực tiếp: MOV A, 05H Lệnh trên: Chuyển nội dung của ô nhớ có địa chỉ 05H vào thanh ghi A. Tuy nhiên với phương pháp định địa chỉ trực tiếp thì lệnh này chỉ có độ dài hai byte. Bảng 0.1: Địa chỉ của các thanh ghi R0 – R7 tương ứng trong từng dãy Vùng RAM dãy thanh ghi này được chia ra làm 4 dãy, mỗi dãy có 8 thanh ghi. Bảng 1.1 minh họa mối quan hệ địa chỉ giữa các thanh ghi R0 – R7 với dãy thanh ghi tích cực (dãy thanh ghi được chọn). Mặc định thì dãy thanh ghi tích cực là Dãy 0 (Bank 0), việc thay đổi dãy thanh ghi tích cực có thể được thực hiện bằng cách thay đổi giá trị của các bit chọn dãy thanh ghi (RS1 và RS0) trong thanh ghi từ trạng thái chương trình (PSW: Program Status Word). Vấn đề này sẽ được trình bày trong các phần tiếp theo. 16
  18. Ví dụ 1: Dựa vào Bảng 2.3.1, hãy cho biết mối quan hệ giữa ký hiệu thanh ghi R4 với các ô nhớ có địa chỉ tương ứng trong dãy thanh ghi tích cực? Nếu Dãy 0 tích cực: Thanh ghi R4 Ô nhớ có địa chỉ 04H. Nếu Dãy 1 tích cực: Thanh ghi R4 Ô nhớ có địa chỉ 0CH. Nếu Dãy 2 tích cực: Thanh ghi R4 Ô nhớ có địa chỉ 14H. Nếu Dãy 3 tích cực: Thanh ghi R4 Ô nhớ có địa chỉ 1CH. Ví dụ 2: Khi vi điều khiển 8051 thực hiện lệnh MOV R4, #1AH thì giá trị "1AH" sẽ được chuyển vào trong ô nhớ có địa chỉ là bao nhiêu thuộc RAM bên trong? Xét riêng cho từng trường hợp dãy thanh ghi tích cực là Dãy 0 và Dãy 3? Hình 1.4: Minh họa việc di chuyển dữ liệu khi Dãy 0 và Dãy 3 tích cực. 1.5. Các thanh ghi chức năng đặc biệt SFR đảm nhiệm các chức năng khác nhau trong On-chip. Chúng nằm ở RAM bên trong On-chip, chiếm vùng không gian nhớ 128 Byte được định địa chỉ từ 80h đến FFh. Cấu trúc của SFR bao gồm các chức năng thể hiện ở bảng 2.3 và bảng 2.4. Thanh Nội dung ghi MSB LSB IE EA - ET2 ES ET1 EX1 ET0 EX0 IP - - PT2 PS PT1 PX1 PT0 PX0 PSW CY AC FO RS1 RS0 OV - P TMOD GAT C/(/T M1 M0 GATE C/(/T M1 M0 E ) ) TCON TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0 SCON SM0 SM1 SM2 REN TB8 RB8 TI RI 17
  19. PCON SMO - - - GF1 GF0 PD IDL D P1 T2 T2E /SS MOS MISO SCK X I P3 RXD TXD /INT /INT1 T0 T1 /WR /RD 0 Bảng 1.2. Chức năng riêng của từng thanh ghi trong SFR Symbol Name Address Reset Values * ACC Thanh ghi tích luỹ 0E0h 00000000b *B Thanh ghi B 0F0h 00000000b * PSW Từ trạng thái chương trình 0D0h 00000000b SP Con trỏ ngăn xếp 81h 00000111b DP0H Byte cao của con trỏ dữ liệu 0 82h 00000000b DP0L Byte thấp của con trỏ dữ liệu 0 83h 00000000b * P0 Cổng 0 80h 11111111b * P1 Cổng 1 90h 11111111b Symbol Name Address Reset Values * P2 Cổng 2 0A0h 11111111b * P3 Cổng 3 0B0h 11111111b * IP TG điều khiển ngắt ưu tiên 0B8h xxx00000b * IE TG điều khiển cho phép ngắt 0A8h 0xx00000b TMOD Điều khiển kiểu Timer/Counter 89h 00000000b * TCON TG điều khiển Timer/Counter 88h 00000000b TH0 Byte cao của Timer/Counter 0 8Ch 00000000b TL0 Byte thấp của Timer/Counter 0 8Ah 00000000b TH1 Byte cao của Timer/Counter 1 8Dh 00000000b TL1 Byte thấp của Timer/Counter 1 8Bh 00000000b * SCON Serial Control 98h 00000000b SBUF Serial Data Buffer 99h indeterminate PCON Power Control 87h 0xxx0000b * : có thể định địa chỉ bit, x: không định nghĩa 18
  20. 1.5.1. Thanh ghi ACC Là thanh ghi tích luỹ, dùng để lưu trữ các toán hạng và kết quả của phép tính. Thanh ghi ACC dài 8 bits. Trong các tập lệnh của On-chip, nó thường được quy ước đơn giản là A. 1.5.2. Thanh ghi B Thanh ghi này được dùng khi thực hiện các phép toán nhân và chia. Đối với các lệnh khác, nó có thể xem như là thanh ghi đệm tạm thời. Thanh ghi B dài 8 bits. Nó thường được dùng chung với thanh ghi A trong các phép toán nhân hoặc chia. 1.5.3. Thanh ghi SP Thanh ghi con trỏ ngăn xếp dài 8 bit. SP chứa địa chỉ của dữ liệu hiện đang ở đỉnh của ngăn xếp. Giá trị của nó được tự động tăng lên khi thực hiện lệnh PUSH trước khi dữ liệu được lưu trữ trong ngăn xếp. SP sẽ tự động giảm xuống khi thực hiện lệnh POP. Ngăn xếp có thể đặt ở bất cứ nơi nào trong RAM on-chip, nhưng sau khi khởi động lại hệ thống thì con trỏ ngăn xếp mặc định sẽ trỏ tới địa chỉ khởi đầu là 07h, vì vậy ngăn xếp sẽ bắt đầu từ địa chỉ 08h. 1.5.4. Thanh ghi DPTR Thanh ghi con trỏ dữ liệu (16 bit) bao gồm 1 thanh ghi byte cao (DPH-8bit) và 1 thanh ghi byte thấp (DPL-8bit). DPTR có thể được dùng như thanh ghi 16 bit hoặc 2 thanh ghi 8 bit độc lập. Thanh ghi này được dùng để truy cập RAM ngoài. 1.5.5. Ports 0 to 3 P0, P1, P2, P3 là các chốt của các cổng 0, 1, 2, 3 tương ứng. Mỗi chốt gồm 8 bit. Khi ghi mức logic 1 vào một bit của chốt, thì chân ra tương ứng của cổng ở mức logic cao. Còn khi ghi mức logic 0 vào mỗi bit của chốt thì chân ra tương ứng của cổng ở mức logic thấp. Khi các cổng đảm nhiệm chức năng như các đầu vào thì trạng thái bên ngoài của các chân cổng sẽ được giữ ở bit chốt tương ứng. Tất cả 4 cổng của on-chip đều là cổng I/O hai chiều, mỗi cổng đều có 8 chân ra, bên trong mỗi chốt bit có bộ “Pullup-tăng cường” do đó nâng cao khả năng nối ghép của cổng với tải (có thể giao tiếp với 4 đến 8 tải loại TTL). 1.5.6. Thanh ghi SBUF Đệm dữ liệu nối tiếp gồm 2 thanh ghi riêng biệt, một thanh ghi đệm phát và một thanh ghi đệm thu. Khi dữ liệu được chuyển tới SBUF, nó sẽ đi vào bộ đệm phát, và được giữ ở đấy để chế biến thành dạng truyền tin nối tiếp. Khi dữ liệu được truyền đi từ SBUF, nó sẽ đi ra từ bộ đệm thu. 19
nguon tai.lieu . vn