intTypePromotion=1
ADSENSE

Giáo trình Vi điều khiển - Nghề: Điện dân dụng - Trình độ: Cao đẳng nghề (Tổng cục Dạy nghề)

Chia sẻ: Cuahuynhde Cuahuynhde | Ngày: | Loại File: PDF | Số trang:110

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

(NB) Giáo trình Vi điều khiển nhằm nâng cao hiệu quả hoạt động, tính năng cho các thiết bị điện tử gia dụng hay công nghiệp đòi hỏi những người thiết kế, lắp ráp các thiết bị đó phải được trang bị những kiến thức cơ bản về vi điện tử.

Chủ đề:
Lưu

Nội dung Text: Giáo trình Vi điều khiển - Nghề: Điện dân dụng - Trình độ: Cao đẳng nghề (Tổng cục Dạy nghề)

  1. BỘ LAO ĐỘNG - THƯƠNG BINH VÀ XÃ HỘI TỔNG CỤC DẠY NGHỀ GIÁO TRÌNH Tên mô đun: Vi điều khiển NGHỀ: ĐIỆN DÂN DỤNG TRÌNH ĐỘ CAO ĐẲNG NGHỀ Ban hành kèm theo Quyết định số: 120 /QĐ- TCDN Ngày 25 tháng 2 năm 2013 của Tổng cục trưởng Tổng cục dạy nghề Hà Nội, năm 2012
  2. TUYÊN BỐ BẢN QUYỀN Tài liệu này thuộc loại sách giáo trình nên các nguồn thông tin có thể được phép dùng nguyên bản hoặc trích dùng cho các mục đích về đào tạo tham khảo. Mọi mục đích khác mang tính lệch lạc hoặc sử dụng với mục đích kinh doanh thiếu lành mạnh sẽ bị nghiêm cấm.
  3. 1 LỜI GIỚI THIỆU Ngày nay cùng với sự phát triển của khoa học công nghệ, các nhà khoa học đã phát minh ra rất nhiều các linh kiện vi điều khiển. Chúng khác nhau không chỉ về cấu tạo; nguyên lý làm việc hay các đặc tính; các thông số kỹ thuật ... mà với các đặc điểm về tính chất và chức năng khác nhau chúng được sản xuất để sử dụng cho nhiều lĩnh vực và môi trường khác nhau. Việc sử dụng các linh kiện vi điều khiển trong các thiết bị điện tử khác nhau một cách hợp lý và hiệu quả, nhằm nâng cao hiệu quả hoạt động, tính năng cho các thiết bị điện tử gia dụng hay công nghiệp đòi hỏi những nguời thiết kế, lắp ráp các thiết bị đó phải đuợc trang bị những kiến thức cơ bản về vi điện tử . Mô đun Vi điều khiển được xây dựng nhằm phục vụ cho các yêu cầu nói trên. Nội dung mô đun bao gồm 5 bài như sau: Bài 1: Các hệ đếm và việc mã hóa thông tin trong máy tính. Bài 2. Cấu trúc họ vi điều khiển 8051. Bài 3. Tập lệnh của 8051. Bài 4. Lập trình I/O. Bài 5. Timer/Counter. Nội dung các bài chủ yếu quan tâm đến việc giúp nguời lắp ráp thiết bị điện tử gia dụng hay công nghiệp sử dụng các hệ vi xử lý hay vi điều khiển nắm bắt giải thích tốt nguyên lý hoạt động của chúng. Mặc dù tác giả đã cố gắng hết sức trong việc cung cấp đầy đủ thông tin liên quan đến họ vi điều khiển 8051. Tuy nhiên, do thời gian hạn hẹp, kiến thức và nguồn tài liệu tham khảo còn hạn chế, nên không thể tránh khỏi những sai sót. Mong nhận được các ý kiến đóng góp để tác giả hoàn thiện hơn nữa nội dung của tài liệu. Mọi ý kiến đóng góp xin gửi về địa chỉ: Trường Cao đẳng nghề Bách Nghệ Hải Phòng Khoa Điện – Điện tử Số 196/143 Đường Trường Chinh - Quận Kiến An - TP Hải Phòng Email: khoadienbn@gmail.com Hà Nội, ngày 20 tháng 11 năm 2012 Nhóm biên soạn: 1. Chủ biên: Ngô Duy Khánh 2. Khúc Anh Phúc 3. Phạm Văn Việt
  4. 2 Mục lục Nội dung Trang Bài 1: Các hệ đếm và việc mã hóa thông tin trong máy tính 5 1. Hệ đếm mười và hệ đếm hai 5 1.1. Hệ đếm mười và hệ đếm hai 5 1.2. Chuyển đổi giữa hai hệ đếm 5 2. Các hệ đếm khác 6 2.1. Số BCD 6 2.2. Hệ 16 7 3. Các phép toán số học với số hệ hai 7 3.1. Phép cộng 7 3.2. Phép trừ và số bù hai 7 3.3. Phép nhân 8 3.4. Phép chia 9 4. Mã hóa thông tin trong máy tính 9 5. Giới thiệu về mã ASCII-mã tiêu chuẩn cho trao đổi thông tin 10 Bài 2. Cấu trúc họ vi điều khiển 8051 13 1. Cấu trúc họ 8051 13 1.1. Cấu trúc tổng quát họ 8051 13 1.2. Khối ALU 14 1.3. Bộ nhớ Ram 15 1.4. Bộ nhớ Rom 17 2. Trao đổi thông tin trong 8051 17 3. Sơ đồ và ý nghĩa các chân của 89C51 19 3.1. Port0 19 3.2. Port1 19 3.3. Port 2 20 3.4. Port 3 20 3.5. Chân chốt địa chỉ ALE 20 3.6. Chân truy suất Rom ngoài 20 3.7. Chân Reset 20 3.8. Các chân XTAL1 và XTAL2 21 4. Các thanh ghi đặc biệt 21
  5. 3 4.1. Thanh ghi PC 21 4.2. Thanh ghi SP 23 4.3. Thanh ghi tích lũy A 24 4.4. Thanh ghi từ trạng thái PSW 24 4.5. Thanh ghi DPTR 25 4.6. Các thanh ghi PORT 26 5. Nguyên lý hoạt động của mạch Reset 26 Bài 3. Tập lệnh của 8051 27 1. Tổng quan về ngôn ngữ assembly 27 2. Cấu trúc câu lệnh và chương trình viết bằng assembly 27 2.1. Cấu trúc câu lệnh assemby 27 2.2. Cấu trúc chương trình viết bằng assembly 28 2.3. Chương trình soạn thảo và biên dịch ngôn ngữ assembly 29 3. Các kiểu đánh địa chỉ của 8051 29 3.1. Chế độ địa chỉ tức thời 30 3.2. Chế độ địa chỉ thanh ghi 31 3.3. Chế độ địa chỉ trực tiếp 31 3.4. Chế độ địa chỉ gián tiếp thành ghi 35 3.5. Chế độ định địa chỉ chỉ số và truy cập bộ nhớ Rom trên chip 37 4. Tập lệnh của 8051 40 5. Thực hành 51 Bài 4. Lập trình I/O 55 1. Các Port của 8051 55 1.1. Port0 55 1.2. Port1 55 1.3. Port2 56 1.4. Port3 56 2. Lập trình điểu khiển nháy Led 57 2.1. Sơ đồ nguyên lý 57 2.2. Lập trình điều khiển 57 3. Lập trình điểu khiển Led matrix 60 3.1. Nguyên lý hoạt động 60 3.2. Lập trình điều khiển 61
  6. 4 4. Lập trình điểu khiển LCD 73 4.1. Sơ đồ nguyên lý 73 4.2. Lập trình điều khiển 85 5. Giao tiếp led 7 đoạn 88 5.1. Sơ đồ nguyên lý 88 5.2. Lập trình điều khiển 92 Bài 5. Timer/Counter 94 1. Tổng quan 94 2. Các thanh ghi liên quan đến các bộ timer 94 2.1. Thanh ghi dữ liệu TH0 , TL0, TH1, TL1 94 2.2. Thanh ghi TMOD 95 2.3. Thanh ghi TCON 97 3 Lập trình cho chế độ 1 97 3.1. Đặc điểm 97 3.2. Các bước lập trình ở chế độ 1 98 3.3. Tìm các giá trị cần được nạp vào bộ định thời 100 3.4 Thực hành 100 4 Lập trình cho chế độ 2 104 4.1. Đặc điểm 104 4. 2. Các bước lập trình cho chế độ 2 105 5. Bộ đếm 106 5.1. Tổng quan 106 5.2. Thực hành 107
  7. 5 Bài 1 CÁC HỆ ĐẾM VÀ VIỆC MÃ HÓA THÔNG TIN TRONG MÁY TÍNH Mã bài: MĐ28.01 Giới thiệu : Trong bài học này, trình bày về các hệ đếm thông dụng trong ngành khoa học máy tính. Mục tiêu: - Sử dụng, chuyển đổi thành thạo giữa các hệ đếm thông dụng. - Thực hiện thành thạo các phép toán trên các hệ đếm nhị phân. Nội dung: 1. Hệ đếm mười và hệ đếm hai Mục tiêu - Phân biệt, chuyển đổi thành thạo giữa hệ đếm mười và hệ đếm hai 1.1. Hệ đếm mười và hệ đếm hai - Trong cuộc sống hàng ngày hệ đếm cơ số mười hay hệ mười đuợc sử dụngrộng rãi, hệ đếm cơ số mười sử dụng các số từ 0..9 để biểu diễn các giá trị số. đi kèm theo tập hợp đó có thể dùng thêm chữ D, trong cuộc sống hàng ngày các số hệ mười đuợc biểu diễn độc lập không kèm theo kí tự, nhưng trong ngôn ngữ máy tính khi sử dụng nhiều hệ đếm khác nhau phải có kí tự biểu diễn hệ đếm đi cùng để phân biệt với các hệ đếm khác. Ví dụ: 13; 14D. - Trong thế giới máy tính thì khác, để biểu diễn một giá trị số chúng ta dùng hệ cơ số hai nói ngắn gọn là hệ hai, trong đó chỉ sử dụng các giá trị 0 và 1 để biểu diễn các giá trị số (ứng với hai trạng thái có điện và không có điện của các mạch điện tử cấu tạo lên máy). Khi dùng nhiều hệ đếm khác nhau các hệ hai thường đi kèm theo chữ B để phân biệt với các hệ đếm khác. Ví dụ cách biểu diễn hệ hai: 0011; 1101B. - Cách biểu diễn số hệ mười theo trọng số 10: Một số hệ mười 12345,67 đuợc biểu diễn theo trọng số 10 12345,67=1.104 +2.103 +3.102 +4.101 +5.100 +6.10-1 +7.10-2 - Tương tự một số hệ hai đuợc biểu diễn theo trọng số 2: 1100B= 1.23+1.22+0.21+0.20=12D 1.2. Chuyển đổi giữa hai hệ đếm - Cách chuyển đổi số nguyên từ hệ mười sang hệ hai Quy tắc: Lấy số cần đổi chia cho 2 và ghi nhớ phần dư, tiếp theo lấy thương của phép chia trước đó chia cho 2 và ghi nhớ phần dư, làm như vậy cho đến khi đuợc thương bằng 0. Đảo ngược thứ tự dãy các số dư sẽ đuợc các chứ số của hệ hai cần tìm Ví dụ : Đổi số 34 sang hệ hai( 100010B.)
  8. 6 34 2 0 17 2 1 8 2 0 4 2 0 2 2 0 1 2 1 0 - Chuyển số thập phân sang hệ hai: Ví dụ: Đổi số 0.125 samg hệ hai: Ta thực hiện theo quy tắc sau: 0,125 * 2 = 0 ,250 0,250 * 2 = 0 ,500 0,500 * 2 = 1 ,000 Kết quả cuối cùng thu đuợc 0,125 = 0,001B . Kết hợp với kết quả của phép chuyển đổi số nguyên 34 ta sẽ có kết quả chuyển dổi số thập phân 34,125 sang hệ đếm hai như sau 34,125 = 100010,001 B. - Cách chuyển đổi từ hệ hai sang hệ mười 1100B= 1.23+1.22+0.21+0.20=12D 2. Các hệ đếm khác Mục tiêu - Sử dụng thành thạo hệ đếm BCD và thập lục phân 2.1. Số BCD Số BCD là số thập phân được mã hóa theo nhị phân. Đây là số rất quen thuộc bởi vì trong thực tế chúng ta thường sử dụng các số từ 0 đến 9 chứ không phải số nhị phân hay số Hexa. Biểu diễn nhị phân các số từ 0 đến 9 được gọi là BCD. Cóhai dạng số BCD là dạng nén và không nén. Số BCD 0 0000 1 0001 2 0010 3 0011 4 0011 5 0101 6 0110 7 0111 8 1000 9 1001
  9. 7 Số BCD không nén có 4 bit thấp biểu diễn số BCD còn bốn bit cao bằng 0. Ví dụ “00001001” và “00000101” là những số BCD không nén của số 9 và số 5. Để biểu diễn số BCD không nén cần dùng 1 byte bộ nhớ hay một thanh ghi 8 bit. Số BCD nén thì một byte chứa được hai số BCD, một số ở 4 bit thấp và số thứ 2 ở 4 bit cao. Ví dụ “0101 1001” là số BCD nén của số 59H. Như vậy chỉ cần 1 byte bộ nhớ có thể lưu được hai toán hạng BCD. Đây là lý do tại sao sử dụng số BCD nén thì hiệu quả lưu dữ liệu tăng gấp đôi. 2.2. Hệ 16 - Hệ đếm 16 dùng các số từ 0 đến 9 và các chữ cái A, B,C, D,E, F tương ứng với giá trị 10 đến 15 để biểu diễn chữ số. - Hệ đếm 16 thường đuợc dùng thay thế cho các số dài khi biểu diễn dưới dạng hệ đếm hai Ví dụ: 255D= 11111111B= FFH 3. Các phép toán số học với số hệ hai Mục tiêu Thực hiện thành thạo các phép toán cộng, trừ, nhân, chia với hệ cơ số hai. 3.1. Phép cộng Phép cộng y= a+b tuân theo quy tắc sau: a b y C 0 0 0 0 0 1 1 0 1 0 1 0 1 1 1 1 C: Nhớ (carry) 3.2. Phép trừ và số bù hai - Biểu diễn số âm bằng bit dấu: Bit có trọng số cao nhất trong một số hệ hai dùng để biểu diễn bit dấu bằng 0 ứng với số dương, bằng 1 ứng với số âm. - Trong các hệ thống vi xử lý số âm được tính theo số bù hai - Các bước để lấy số bù hai của một số hệ hai A:  Biểu diễn A theo dạng mã nhị phân  Lấy mã bù một của A bằng cách đảo ngược các bit của A  Cộng thêm 1 vào mã bù một của A Ví dụ: Tìm mã bù hai của 13. Mã nhị phân của 13: 13 = 0000 1101 B (Mã nhị phân của 13) Số bù một của 13: 1111 0010 B (đảo giá trị các bit) Cộng thêm 1: 1 Số bù hai của 13: 1111 0011 B (tương ứng với giá trị -13)
  10. 8 Số 8 bit Số hệ mười Số hệ mười theo Số hệ mười Hệ hai tương đương mã hệ hai có dấu tính theo mã bù hai 0000 0000 0 +0 +0 0000 0001 1 +1 +1 0000 0010 2 +2 +2 ... ... ... ... 0111 1101 125 + 125 + 125 0111 1110 126 +126 +126 0111 1111 127 +127 +127 1000 0000 128 -0 - 128 1000 0001 129 -1 - 127 1000 0010 130 -2 - 126 ... ... ... ... 1111 1101 125 -125 - 3 1111 1110 126 -126 -2 1111 1111 255 -127 -1 Bảng mô tả cách biểu diễn một số âm có độ dài 8 bit - Phép trừ y = a- b đuợc hiểu theo nghĩa là phép cộng giữa a và số bù hai của b(giá trị âm của b) Ví dụ: 15 - 13 = ? Ta có thể viết lại phép trính trên thành 15 + (-13) và sử dụng kết quả của quá trình tìm số bù hai của 13 ta có: ( 15 ... 0000 1111 (-13) ... 1111 0011 Tổng ... 0000 0010 (nhớ 1) Kết quả cho 2. 3.3. Phép nhân Phép nhân y= a.b tuân theo quy tắc sau: a b y 0 0 0 0 1 0 1 0 0 1 1 1 Ví dụ: 1001 Số bị nhân (9) 0110 Số nhân (6) 0000 Thành phần 1 của tổng tích luỹ 1001 Thành phần 2 của tổng tích luỹ 1001 Thành phần 3 của tổng tích luỹ 0000 Thành phần 4 của tổng tích lũy 0110110 Tổng tích lũy (54)
  11. 9 3.4. Phép chia Các bước thực hiện phép chia số nhị phân: Buớc 1: Đổi số chia ra số bù hai của nó(để bước sau làm tính trừ bằng tính cộng) Bước 2: Lấy số bị chia trừ đi số chia .Nếu kết quả của phép trừ này có bit dấu bằng 0 thì thương tương ứng bằng 1, nếu kết quả có bit dấu bằng 1 thì bit tương ứng của thương bằng 0 và ta buộc phải khôi phục lại giá trị ban đầu của số bị chia bằng cách cộng kết quả này với số chia ở mã hệ hai. Bước 4: Dịch trái kết quả thu đuợc ở trên và làm lại bước 2 cho đến khi kết quả cuối cùng là 0(chia hết) hoặc nhỏ hơn số chia(chia dư). Ví dụ: 36/5 = 7, dư 1. Thực hiện phép chia này trong hệ hai Đầu tiên ta có 5 = 0101B và số bù hai của 5= 1011B. Các bước tính toán tiếp của phép chia theo thuật toán đã nêu ở trên được liệt kê ra như sau: Toán hạng Thương Tên toán hạng, thao tác 0 100100 Số bị chia 1 011000 Số chia ở mã bù hai để cộng 1 111100 0 Tổng kết quả 1 (kq1) 1 111100 kq1 0 101000 Số chia ở mã hệ hai để cộng 0 100100 Số bị chia 1 00100 Số bị chia dịch trái 1 lần 1 01100 Số chia ở mã bù hai để cộng 0 10000 1 Tổng kết quả 2 (kq2) 1 0000 kq2 dịch trái lần 2 1 0110 Số chia ở mã bù hai để cộng 0 0110 1 Tổng kết quả 3 (kq3) 0 110 kq3 dịch trái 3 lần 1 011 Số chia ở mã bù hai để cộng 0 001 1 Tổng kết quả 4 (kq4) Bit dấu Từ đây ta rút ra 36/5 = 7 dư 1. 4. Mã hóa thông tin trong máy tính Mục tiêu Nắm bắt đuợc cách tổ chức thông tin, các đơn vị đo lường thông tinh trong máy tính - Đơn vị thông tin: Các hệ thống máy tính chỉ làm việc với hệ đếm hai, các thông tin đuợc máy tính xử lý phải đuợc mã hóa lưu trữ trong các bộ nhớ bán dẫn duới dạng nhị phân, một giá trị 0 hay 1 sẽ đuợc cất trữ trong một ô nhớ của bộ nhớ (0 ứng với mức điện áp 0V, 1 ứng với mức điện áp 5V) và được gọi là 1bit, Một cụm 4 bit sẽ tạo thành 1 nibble, cụm 8 bit sẽ tạo thành 1 byte, cụm 16 bit thông thường sẽ
  12. 10 trạo thành một từ(word), cụm 32 bit sẽ tạo thành một từ kép. Chữ số đầu tiên bên trái trong dãy các số hệ hai gọi là bít có ý nghĩa lớn nhất, còn bit cuối cùng bên phải trong dãy gọi là bit có ý nghĩa bé nhất. Ứng với việc đếm thứ tự 1,2,3…ở hệ 10 thì ở hệ 2 ta có 1,10,11… Nibble byte word Double Word - Các đơn vị khác: 1kbyte=1024byte= 210 Byte 1Mbyte= 1024Kbyte. 5. Giới thiệu về mã ASCII-mã tiêu chuẩn cho trao đổi thông tin Mục tiêu Nắm bắt đuợc cách mã hóa các kí tự thông thường theo tiêu chuẩn Ascii trong máy tính ASCII (American Standard Code for Information Interchange - Chuẩn mã trao đổi thông tin Hoa Kì), thường được phát âm là át-xơ-ki, là bộ kí tự và bộ mã kí tự dựa trên bảng chữ cái La Tinh được dùng trong tiếng Anh hiện đại và các ngôn ngữ Tây Âu khác. Nó thường được dùng để hiển thị văn bản trong máy tính và các thiết bị thông tin khác. Nó cũng được dùng bởi các thiết bị điều khiển làm việc với văn bản. Cũng như các mã máy tính biểu diễn kí tự khác, ASCII quy định mối tương quan giữa kiểu bit số với kí hiệu/biểu tượng trong ngôn ngữ viết, vì vậy cho phép các thiết bị số liên lạc với nhau và xử lí, lưu trữ, trao đổi thông tin hướng kí tự. Bảng mã kí tự ASCII, hoặc các mở rộng tương thích, được dùng trong hầu hết các máy tính thông thường, đặc biệt là máy tính cá nhân và máy trạm làm việc. Tên MIME thường dùng cho bảng mã này là "US-ASCII". ASCII chính xác là mã 7-bit, tức là nó dùng kiểu bit biểu diễn với 7 số nhị phân (thập phân từ 0 đến 127) để biểu diễn thông tin về kí tự. Vào lúc ASCII được giới thiệu, nhiều máy tính dùng nhóm 8-bit (byte hoặc, chuyên biệt hơn, bộ tám) làm đơn vị thông tin nhỏ nhất; bit thứ tám thường được dùng bit chẵn-lẻ (parity) để kiểm tra lỗi trên các đường thông tin hoặc kiểm tra chức năng đặc hiệu theo thiết bị. Các máy không dùng chẵn-lẻ thường thiết lập bit thứ tám là zero, nhưng một số thiết bị như máy PRIME chạy PRIMOS thiết lập bit thứ tám là một. ASCII được công bố làm tiêu chuẩn lần đầu vào năm 1963 bởi Hiệp hội tiêu chuẩn Hoa Kì (American Standards Association, ASA), sau này đổi thành ANSI. Có nhiều biến thể của ASCII, hiện tại phổ biến nhất là ANSI X3.4-1986, cũng được tiêu chuẩn hoá bởi Hiệp hội nhà sản xuất máy tính châu Âu (European Computer Manufacturers Association) ECMA-6, ISO/IEC 646:1991
  13. 11 Phiên bản tham khảo quốc tế, ITU-T Khuyến cáo T.50 (09/92), và RFC 20 (Request for Comments). Nó được dùng trong Unicode, một thay thế có thể xảy ra của nó, như là 128 kí tự 'thấp nhất'. ASCII được xem là tiêu chuẩn phần mềm thành công nhất từng được công bố từ trước tới nay Hệ 16 Biểu Hệ 2 Hệ 10 (Thập diễn Tên/Ý (Nhị (Thập lục Viết in Truy nhập Tên/Ý nghĩa nghĩa phân) phân) phân) tắt được bàn phím tiếng Anh tiếng Việt 000 0000 0 00 NUL ␀ ^@ Null character Kí tự rỗng Bắt đầu 000 0001 1 01 SOH ␁ ^A Start of Header Header Bắt đầu 000 0010 2 02 STX ␂ ^B Start of Text văn bản Kết thúc 000 0011 3 03 ETX ␃ ^C End of Text văn bản Kết thúc 000 0100 4 04 EOT ␄ ^D End of Transmission truyền 000 0101 5 05 ENQ ␅ ^E Enquiry Truy vấn 000 0110 6 06 ACK ␆ ^F Acknowledgement 000 0111 7 07 BEL ␇ ^G Bell Chuông Xoá 000 1000 8 08 BS ␈ ^H Backspace ngược 000 1001 9 09 HT ␉ ^I Horizontal Tab Tab ngang Xuống 000 1010 10 0A LF ␊ ^J New Line dòng 000 1011 11 0B VT ␋ ^K Vertical Tab Tab dọc 000 1100 12 0C FF ␌ ^L Form feed 000 1101 13 0D CR ␍ ^M Carriage return 000 1110 14 0E SO ␎ ^N Shift Out 000 1111 15 0F SI ␏ ^O Shift In 001 0000 16 10 DLE ␐ ^P Data Link Escape Device Control 1 — 001 0001 17 11 DC1 ␑ ^Q oft. XON 001 0010 18 12 DC2 ␒ ^R Device Control 2 Device Control 3 — 001 0011 19 13 DC3 ␓ ^S oft. XOFF 001 0100 20 14 DC4 ␔ ^T Device Control 4 Negative 001 0101 21 15 NAK ␕ ^U Acknowledgement
  14. 12 001 0110 22 16 SYN ␖ ^V Synchronous Idle 001 0111 23 17 ETB ␗ ^W End of Trans. Block 001 1000 24 18 CAN ␘ ^X Cancel 001 1001 25 19 EM ␙ ^Y End of Medium 001 1010 26 1A SUB ␚ ^Z Substitute 001 1011 27 1B ESC ␛ ^[ hay ESC Escape 001 1100 28 1C FS ␜ ^\ File Separator 001 1101 29 1D GS ␝ ^] Group Separator 001 1110 30 1E RS ␞ ^^ Record Separator 001 1111 31 1F US ␟ ^_ Unit Separator DEL hay 111 1111 127 7F DEL ␡ Delete Backspace
  15. 13 Bài 2 CẤU TRÚC HỌ VI ĐIỀU KHIỂN 8051 Mã bài: MĐ28.02 Giới thiệu : Trong bài học này trình bày về cấu trúc tổng quát của vi điều khiển họ 8051 Mục tiêu: - Giải thích, phân biệt đuợc chức năng tác dụng các thành phần cấu tạo của họ vi điểu khiển 8051. Nội dung: 1. Cấu trúc họ 8051 Mục tiêu Phân biệt được chức năng của các bộ phận cấu tạo bên trong họ 8051 1.1. Cấu trúc tổng quát họ 8051 Cấu trúc tổng quát của 8051
  16. 14 Cấu trúc tổng quát của 8051 gồm các phần chính sau: - ALU : Khôi chuyên thực hiện các phép tính số học và logic . - Bộ tạo dao động Osc: tạo xung nhịp hoạt động cho chip từ nguồn thạch anh ngoài. - Các bộ đệm cổng Port 0 Latch, Port 1 Latch, Port 2 Latch, Port 3 Latch. - Các bộ điều khiển cổng Port 0 Driver, Port 1 Driver, Port 2 Driver, Port 3 Driver. - Khối Timing And Control: Khối điều khiển hoạt động của Bus. - Khối Timer: Điều khiển hoạt động của các bộ Timer. - Bộ nhỡ dữ liệu RAM. - Bộ nhớ chương trình Rom (Flash). - Hệ thống các thanh ghi đặc biệt, gồm các thanh ghi chính sau:  Các thanh ghi tạm TMP1, TMP2 của khối ALU.  Thanh ghi tích lũy Acc.  Thanh ghi trung gian B.  Thanh ghi trạng thái PSW.  Thanh ghi con trỏ ngăn xếp SP (Stack Pointer).  Thanh ghi bộ đếm chương trình PC (Program Counter).  Thanh ghi địa chỉ dữ liệu Ram Addr register.  Thanh ghi mã lệnh Instruction Register.  Thanh ghi truy cập dữ liệu trên ROM Dptr. - Hệ thống đường Bus trao đổi thông tin, bao gồm hai loại bus: đường Bus dữ liệu 8 bit (Data bus) và bus địa chỉ 16 bit (Address bus). Sơ đồ khối 1.2. Khối ALU 8051 ALU là một trong những thành phần chính của chip 8051. ALU chứa các khối logic thực hiện các phép tính số học và logic. Các khối này có tên gọi
  17. 15 tương ứng như: bộ cộng, bộ trừ, bộ dịch, các so sánh, bù 2, tăng, giảm, phép logic hoặc, phép logic và, XOR, đảo NOT, hoặc đảo NOR. ALU có 2 cổng vào (IN) và một cổng ra (OUT). Các cổng IN để nhận từ dữ liệu vào ALU. Cổng OUT để lấy kết quả xử lý dữ liệu của ALU ra ngoài. Các cổng IN đuợc nhớ đệm bằng các thanh ghi tạm thời TMP1 và TMP 2. Những thanh ghi này làm nhiệm vụ nhận dữ liệu từ các nơi khác nhau bên trong chip thông qua bus dữ liệu bên trong và lưu giữ tạm thời dữ liệu cho hai cổng IN trong quá trình xử lý dữ liệu trong ALU. Tương tự cổng OUT đuợc kết nối với bus dữ liệu bên trong, do đó kết quả phép toán có thể được đưa tới các nơi khác nhau. 1.3. Bộ nhớ Ram a. Cấu trúc tổng quảt Bộ nhớ Ram hay còn gọi là bộ nhớ dữ liệu, là nơi cung cấp các dữ liệu cho chương trình phần mềm điều khiển hoạt động của chip. Tùy vào từng dòng chip trong họ 8051 bộ nhớ RAM có các dung lượng khác nhau. Đối với dòng 8051 như 89C51, 89S51 có dung lượng 128 byte, đối với dòng 8052 có dung lượng 256 byte. 8051 có 128 byte RAM, 128 byte Ram bên trong này được gán địa chỉ từ 00 đến 7FH, các ô nhớ này sẽ được truy cập trực tiếp như các ô nhớ có dung lượng 8 bit (vì 8051 là vi điều khiển 8 bit). Các ô nhớ của Ram được cấu tạo từ 8 bit nhớ, đuợc đánh số thứ tự từ phải qua trái lần lượt là D0 cho tới D7, trong đó D0 được gọi là bit có trọng số thấp nhất (LSB), D7 được gọi là bit có trọng số cao nhất (MSB). Do có dung lượng 8 bit nên một ô nhớ chỉ chứa được tối đa 256 giá trị (28). Nếu dữ liệu là số nguyên dương thì một ô nhớ sẽ chứa giá trị từ 0 – 255, nếu giá trị là kí tự thì một ô nhớ sẽ chứa được 256 kí tự trong bảng mã Ascii. Một số ô nhớ trong vùng Ram có thể được truy cập đến từng bit được gọi là vùng Ram địng địa chỉ theo bit. D7 D6 D5 D4 D3 D2 D1 D0 128 byte Ram trong 8051 được phân chia thành từng nhóm như sau:  Từ ngăn nhớ 00 đến 1FH tổng cộng 7F 32 byte, được dành làm các băng Ram bảng nháp thanh ghi và ngăn xếp. 30 2F  Từ ngăn nhớ 20H đến 2FH, tổng Ram định địa chỉ bit cộng 16 byte, được dành làm bộ 20 1F Băng thanh ghi 3 nhớ đọc/ghi định địa chỉ được theo 18 bit. 17 Băng thanh ghi 2  Từ ngăn nhớ 30H đến 7FH, tổng 10 0F cộng 80 byte, được dùng để lưu Băng thanh ghi 1 08 thông tin khi đọc và ghi, hay như 07 vẫn thường gọi là bảng nháp. 80 Băng thanh ghi 0 byte Ram này thường được các lập 00 Tổ chức Ram của 8051
  18. 16 trình viên sử dụng để lưu dữ liệu và tham số. b. Băng thanh ghi của 8051 Như đã nói ở trên, tổng cộng 32 byte Ram được dành riêng cho các băng thanh ghi và ngăn xếp. 32 byte này được chia thành 4 băng thanh ghi, mỗi băng có 8 thanh ghi từ R0 đến R7. Các ngăn nhớ từ ô nhớ 0 đến 7 là băng 0 gồm 8 thanh ghi R0-R7, trong đó R0 ơ ngăn nhớ 0, R1 ở ngăn nhớ 1,R2 ở ngăn nhớ 2... v.v. Băng thanh ghi thứ hai (cũng từ R0 đến R7) bắt đầu từ ngăn nhớ 8 cho đến ngăn nhớ 0FH. Băng thứ 3 bắt đầu từ ngăn nhớ 10H đến 17H và cuối cùng từ ngăn nhớ 18H đến 1FH là dùng cho băng thứ tư. c. Băng thanh ghi mặc định Như đã biết, các ngăn nhớ từ 00 đến 1F được dành cho bốn băng thanh ghi, vậy băng thanh ghi nào cần được truy cập mỗi khi 8051 được cấp nguồn? Câu trả lời là băng thanh ghi 0. Đó là các ngăn nhớ Ram số 0,1,2,3,4,5,6 và 7 được truy cập với tên lập trình là R0,R1,R2,R3,R4,R5,R6 và R7. Dĩ nhiên sử dụng tên để truy cập ngăn nhớ thuận lợi hơn nhiều so với sử dụng trực tiếp các ngăn nhớ đó. Ví dụ: Nội dung của các câu lệnh sau đều là chuyển giá trị 99H vào R0 của băng thanh ghi 0 MOV 00, #99H (00 là địa chỉ của ô nhớ Ram 00) MOV R0, #99H Băng 0 Băng 1 Băng 2 Băng 3 7 R7 F R7 17 R7 1F R7 6 R6 E R6 16 R6 1E R6 5 R5 D R5 15 R5 1D R5 4 R4 C R4 14 R4 1C R4 3 R3 B R3 13 R3 1B R3 2 R2 A R2 12 R2 1A R2 1 R1 9 R1 11 R1 19 R1 0 R0 8 R0 10 R0 18 R0 d. Chuyển băng thanh ghi Như đã nói ở trên, băng thanh ghi 0 là mặc định khi 8051 được cấp nguồn. Chúng ta có thể chuyển sang các băng thanh ghi khác bằng cách sử dụng bit D3 và D4 của thanh ghi PSW. PSW.4 PSW.3 Băng được chọn 0 0 Băng thanh ghi 0 0 1 Băng thanh ghi 1 1 0 Băng thanh ghi 2
  19. 17 1 1 Băng thanh ghi 3 Bit D3 và D4 của thanh ghi PSW còn được viết dưới dạng PSW.3 và PSW.4 và chúng có thể được truy cập bằng các lệnh định địa chỉ theo bit như SETB và CLR. Ví dụ câu lệnh “SETB PSW.3” sẽ thiết lập PSW.3 lên 1 và chọn băng thanh ghi 1 thay băng thanh ghi mặc định 1.4. Bộ nhớ Rom Bộ nhớ chương trình: Hình 2.3. Cấu trúc bộ nhớ chương trình Hình 2.4. Địa chỉ các ngắt trên bộ nhớ chương trình Hình 2.3 mô tả cấu trúc bộ nhớ chương trình. Sau khi khởi động, CPU bắt đầu thực hiện chương trình ở vị trí 0000H. Hình 2.4 mô tả địa chỉ ngắt mặc định trên bộ nhớ chương trình. Mối khi xảy ra ngắt, con trỏ của CPU sẽ nhảy đến đúng địa chỉ ngắt tương ứng và thực thi chương trình tại đó. Ví dụ ngắt ngoài 0 sẽ có địa chỉ là 0003H, khi xảy ra ngắt ngoài 0 thì con trỏ chương trình sẽ nhảy đến đúng địa chỉ 0003H để thực thi chương trình tại đó. Nếu trong chương trình ứng dụng không xử dụng đến ngắt ngoài 0 thì địa chỉ 0003H vẫn có thể dùng cho mục đích khác (sử dụng cho bộ nhớ chương trình). Bởi vậy khi lập trình bằng ngôn ngữ Assembly, phần đầu chương trình bao giờ cũng phải cho chương trình nhảy đến địa chỉ cao hơn địa chỉ chứa các ngắt và mã lệnh viết cho các ngắt thì phải viết đúng địa chỉ của các ngắt tương ứng. 2. Trao đổi thông tin trong 8051
  20. 18 Mục tiêu - Giải thích đuợc nguyên lý trao đổi thông tin giữa các thành phần bên trong họ 8051 Bus RA ALU RO Việc trao đổi thông tin bên trong vi điều khiển được thực hiện chủ yếu giữa ALU với bộ nhớ chương trình ROM và bộ nhớ RAM, thông qua các khối điều khiển, các thanh ghi và hệ thống bus nội bộ gồm bus địa chỉ và bus dữ liệu. Bộ nhớ ROM là nơi lưu giữ nội dung chương trình điều khiển cho 8051 dưới dạng các chuỗi số nhị phân. Việc truy cập thông tin giữa ALU và ROM được thực hiện thông qua thanh ghi bộ đếm chương trình PC, thanh ghi địa chỉ chương trình Program address register, thanh ghi con trỏ Dptr, bộ tăng giá trị PC (PC incrementer). Việc truy cập bộ nhớ dữ liệu được ALU thực hiện thông qua thanh ghi địa chỉ Ram (Ram addr register). Chương trình sau khi được soạn thảo, biên dịch và được nạp vào Rom sẽ tồn tại vĩnh viễn, kể cả khi mất nguồn nuôi, còn dữ liệu trong Ram sẽ mất khi bị mất nguồn nuôi. Khi mới bật nguồn, thông qua thanh ghi địa chỉ chương trình, con trỏ PC sẽ xác định được địa chỉ bắt đầu của chương trình điều khiển, thông qua hệ thống bus địa chỉ nội dung của câu lệnh sẽ được chuyển xuống thanh ghi lệnh (Instruction register). ALU sẽ đọc nội dung của thanh ghi lệnh và thực hiện đúng nội dung của câu lệnh. Trong quá trình thực hiện lệnh nếu cần lấy toán hạng trên Ram, ALU truy cập đến các ô nhớ Ram thông qua thanh ghi địa chỉ Ram. Các toán hạng trước khi được đưa vào ALU xử lý tính toán được lưu trữ tạm thời ở các thanh ghi tạm của ALU, sau khi thực hiện xong phép tính ALU trả kết quả về các thanh ghi chứa kết quả hay thanh ghi tích lũy Acc. Các thành phần khác nhau trong 8051 đều sử dụng chung nguồn tài nguyên bus, do đó việc điều phối hoạt động của bus được thực hiện thông qua khối điều khiển bus (Timing and Control). Khối điều khiển bus hoạt động nhịp nhàng theo xung nhịp của tần số thạch anh, khối điều khiển bus xác định thời điểm các thành phần được phép trao đổi thông tin với ALU và trả kết quả ra ngoài. Mỗi một câu lệnh được thực hiện mất một vài chu kì máy, đối với họ 8051 một chu lì máy gồm 12 chu kì thạch anh. Ví dụ nếu tần số dao động của thạch anh bằng 11,0592Mhz, thì tần số chu kì máy bằng : 11,0592Mhz/12=921,6Khz hay nói cách khác chu kì máy sẽ bằng 1/921,6Khz= 1,085µs.
ADSENSE

CÓ THỂ BẠN MUỐN DOWNLOAD

 

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