Vi xử lý - Chương 2: Phần cứng họ mcs-51

Tài liệu Vi xử lý - Chương 2: Phần cứng họ mcs-51: Bài giảng VI XỬ LÝ Chương 2: Phần cứng họ MCS-51 1 CHƯƠNG 2: PHẦN CỨNG HỌ MCS-51 I. GIỚI THIỆU CHUNG VỀ VI ĐIỀU KHIỂN Quá trình phát triển nhanh của các loại vi xử lý cho phép ứng dụng chúng trong các quá trình sản xuất như các bộ điều khiển. Khác với các loại vi xử lý sử dụng để xử lý thơng tin (các máy tính PC xử lý văn bản, cơ sở dữ liệu, tính tốn khoa học kỹ thuật), các vi điều khiển (microcontroller) được thiết kế để lắp đặt trực tiếp vào ứng dụng cụ thể. Trong đĩ suốt quá trình vận hành của mình vi điều khiển chỉ thực hiện duy nhất một chức năng. Việc ứng dụng rộng rãi các bộ vi điều khiển dẫn đến yêu cầu sản xuất tất cả các vi mạch trong một vỏ. Việc tích hợp nhiều vi mạch trên một vỏ làm giảm giá thành và làm tăng tính tin cậy của vi điều khiển. Yêu cầu tăng cao tốc độ xử lý dẫn đến các cấu trúc của vi điều khiển khác với các cấu trúc của các bộ vi xử lý như Z80, 8086 và các vi xử lý dùng cho máy tính PC. Cấu trúc của vi điều khiển cho phép...

pdf16 trang | Chia sẻ: tranhong10 | Lượt xem: 2080 | Lượt tải: 0download
Bạn đang xem nội dung tài liệu Vi xử lý - Chương 2: Phần cứng họ mcs-51, để tải tài liệu về máy bạn click vào nút DOWNLOAD ở trên
Bài giảng VI XỬ LÝ Chương 2: Phần cứng họ MCS-51 1 CHƯƠNG 2: PHẦN CỨNG HỌ MCS-51 I. GIỚI THIỆU CHUNG VỀ VI ĐIỀU KHIỂN Quá trình phát triển nhanh của các loại vi xử lý cho phép ứng dụng chúng trong các quá trình sản xuất như các bộ điều khiển. Khác với các loại vi xử lý sử dụng để xử lý thơng tin (các máy tính PC xử lý văn bản, cơ sở dữ liệu, tính tốn khoa học kỹ thuật), các vi điều khiển (microcontroller) được thiết kế để lắp đặt trực tiếp vào ứng dụng cụ thể. Trong đĩ suốt quá trình vận hành của mình vi điều khiển chỉ thực hiện duy nhất một chức năng. Việc ứng dụng rộng rãi các bộ vi điều khiển dẫn đến yêu cầu sản xuất tất cả các vi mạch trong một vỏ. Việc tích hợp nhiều vi mạch trên một vỏ làm giảm giá thành và làm tăng tính tin cậy của vi điều khiển. Yêu cầu tăng cao tốc độ xử lý dẫn đến các cấu trúc của vi điều khiển khác với các cấu trúc của các bộ vi xử lý như Z80, 8086 và các vi xử lý dùng cho máy tính PC. Cấu trúc của vi điều khiển cho phép truy cập nhanh bộ nhớ dữ liệu, truy cập và xử lý nhanh các dữ liệu, truy cập nhanh các thiết bị (phép nhân và chia dấu phẩy đứng, các phép tốn đại số Boole với 1 bit ) Tổng quát ta cĩ thể nĩi rằng vi điều khiển là một máy tính trong một chip (monolithic microcomputer). Trong đĩ đã bao gồm CPU, bộ nhớ, các thiết vị vào/ra phổ biến. Cấu trúc của vi điều khiển được thiết kế để phục vụ một mục đích cụ thể mà chỉ cần tối thiểu các mạch phụ trợ. Chức năng của vi điều khiển được xác định bởi chương trình lưu trong bộ nhớ ROM hoặc EPROM. Chương trình được nạp một lần và khơng thay đổi trong suốt quá trình hoạt động. Bộ nhớ của các vi điều khiển cĩ cấu trúc khác với bộ nhớ của vi xử lý Z80 cùng loại. Tại các họ vi xử lý ta dùng cấu trúc bộ nhớ Neuman, trong đĩ bản đồ bộ nhớ dùng chung cho cả chương trình (thường trong ROM- Read only memory) và dữ liệu (RWM – read write memory). Các bộ vi điều khiển sử dụng cấu trúc Harward. Tại đây bộ nhớ được chia làm hai loại: bộ nhớ chương trình (ROM) và bộ nhớ dữ liệu (RWM). Hình 2.1: Cấu trúc Neuman Hình 2.2: Cấu trúc Harward Việc phân biệt này được suy ra từ thực tế rằng bộ nhớ ROM dùng để lưu chương trình khơng thể ghi vào được, và bộ nhớ này thường cĩ độ dài vài kB (yêu cầu 10 đến 16 bit địa chỉ). CPU truy cập bộ nhớ này chủ yếu để đọc lệnh. Bộ nhớ dữ liệu để lưu các kết quả tạm thời thơng thường bé hơn, chỉ cần 8 bit địa chỉ hoặc thậm chí 4 bit địa chỉ. Với địa chỉ bộ nhớ dữ liệu nhỏ, tốn hạng sẽ cĩ địa chỉ ngắn và nhiều khi cĩ thể lọt vào vào mã lệnh (object code) cĩ độ dài 8 bit. Cấu trúc bộ nhớ Harward là cơ sở cho việc xử lý nhanh thơng tin trong các ứng dụng điều khiển. Cấu trúc khơng đổi của các loại vi điều khiển lại là giới hạn đối với việc áp dụng trong thực tế. Tuy vậy trên thị trường cĩ rất nhiều loại vi điều khiển cho các loại ứng dụng cụ thể khác nhau, mỗi loại tự phân biệt bằng lượng tối thiểu thiết bị được tích hợp bên trong. CPU Bộ nhớ chương trình + Bộ nhớ dữ liệu CPU Bộ nhớ chương trình Bộ nhớ dữ liệu Bài giảng VI XỬ LÝ Chương 2: Phần cứng họ MCS-51 2 * HỌ VI ĐIỀU KHIỂN X51 Vi điều khiển 8051 ra đời vào năm 1980 và đã là loại vi điều khiển tương đối “lớn tuổi”. Tuy vậy 8051 đã nhận được sự mến chuộng đặc biệt của các nhà thiết kế hệ thống đến nỗi hiện nay tồn tại rất nhiều nhà sản xuất tập trung phát triển các sản phẩm trên cơ sở 8051 và phát triển thêm các thiết bị ngoại vi khác. Ví dụ chỉ riêng Philips đã sản xuất 24 loại vi điều khiển trên cơ sở 8051 như được thể hiện trên hình 2.1. Các vi điều khiển này khác nhau như sau: bộ nhớ chương trình từ 2kB đến 32 kB, bộ nhớ này cĩ loại cĩ thể nạp một lần hoặc nhiều lần (EPROM), bộ nhớ EEPROM để nhớ các hằng số, bộ nhớ dữ liệu mở rộng đến 256 kB, bộ ADC 8 hoặc 10 bit với bộ chọn 8 kênh, các cổng vào/ra mở rộng, bộ so sánh hoặc lưu dữ liệu, bus 2 dây I2C. Các nhà sản xuất cung cấp các vi điều khiển cĩ tần số từ 12MHz đến 33 MHz với loại vỏ DIL, PLCC đến loại nhỏ PQFP. Một số nhà sản xuất tập trung vào các vi điều khiển với các phép tính số học (Siemens 80C537) hoặc việc định thời khác nhau (Dallas DS80C320). Tổng kết các hướng phát triển cụ thể của vi điều khiển trên cơ sở 8051 được tổng kết như trên hình 2.3. Hình 2.3: Các thành phần mở rộng của họ vi điều khiển trên cơ sở 8051 Trên thị trường Việt nam hiện tại loại vi điều khiển AT89C51 của hãng Atmel rất được phổ biến. Vi điều khiển này cĩ thể mua được với giá 25,000 đ/1đv. Kèm theo với vi điều khiển này là rất nhiều các thiết bị phụ trợ như bộ lập trình, các board mạch cơ bản, các phần mềm phụ trợ Vi điều khiển AT89C51 và các loại cùng họ của hãng Atmael cĩ bộ nhớ chương trình bên trong là EEPROM là bộ nhớ cĩ thể xố là nạp được bằng tín hiệu điện. Điều này cho phép người lập trình cĩ thể thử nghiệm, nạp chương trình vào vi điều khiển nhiều lần. Thiết bị nạp chương trình (programmer) cho vi điều khiển này là tương đối đơn giản và cĩ thể tự làm được. Cĩ thể tham khảo tại trang chủ của hãng Atmel tại địa chỉ www.atmel.com. Bài giảng VI XỬ LÝ Chương 2: Phần cứng họ MCS-51 3 II. CẤU TRÚC CỦA VI ĐIỀU KHIỂN 8051 Các vi mạch của họ MCS-51 gồm: 8031/8032, 8051/8052, 8751/8752, 8951/8952, 892051 Vi mạch tiêu biểu của họ MCS-51 là 8031/8051 có các đặc điểm sau: - 4 KB ROM nội (0 KB đối với 8031). - 128 byte RAM nội. - 4 port nhập/xuất 8 bit (I/O port). - 2 bộ định thời 16 bit (timer). - Mạch giao tiếp nối tiếp (serial port) 2 chiều. - Bộ điều khiển ngắt xử lý 5 nguồn yêu cầu ngắt trong đó có 2 nguồn ngắt ngoài, 2 nguồn ngắt bên trong từ hai timer và 1 nguồn ngắt từ kênh nối tiếp. Mức độ ưu tiên của các ngắt được quy định cụ thể. - 64 KB không gian bộ nhớ chương trình ngoài. - 64 KB không gian bộ nhớ dữ liệu ngoài. - 210 bit được địa chỉ hoá. - Bộ nhân/chia 4 μs (với tần số thạch anh 12MHz). Chip Bộ nhớ chương trình trên chip Bộ nhớ dữ liệu trên chip Số bộ định thời (timer) 8031 0 KB 128 byte 2 8051 4 KB ROM 128 byte 2 8751 4 KB EPROM 128 byte 2 8951 4 KB Flash ROM 128 byte 2 8032 0 KB 256 byte 3 8052 8 KB ROM 256 byte 3 8752 8 KB EPROM 256 byte 3 8952 8 KB Flash ROM 256 byte 3 Bảng 2.1: Một số thông số của các chip tiêu biểu của họ MCS-51. III. SƠ LƯỢC CÁC CHÂN (PINOUT) CỦA 8051 Sơ đồ chân 8031/8051: 8051 29 30 40 20 31 19 18 9 39 38 37 36 35 34 33 32 1 2 3 4 5 6 7 8 21 22 23 24 25 26 27 28 10 11 12 13 14 15 16 17 PSEN ALE VCC VSS EA XTAL1 XTAL2 RST P0.0/AD0 P0.1/AD1 P0.2/AD2 P0.3/AD3 P0.4/AD4 P0.5/AD5 P0.6/AD6 P0.7/AD7 P1.0 P1.1 P1.2 P1.3 P1.4 P1.5 P1.6 P1.7 P2.0/A8 P2.1/A9 P2.2/A10 P2.3/A11 P2.4/A12 P2.5/A13 P2.6/A14 P2.7/A15 P3.0/RXD P3.1/TXD P3.2/INT0 P3.3/INT1 P3.4/T0 P3.5/T1 P3.6/WR P3.7/RD Hình 2.4 Bài giảng VI XỬ LÝ Chương 2: Phần cứng họ MCS-51 4 Sơ đồ khối của 8051: Hình 2.5 1. Port 0 Port 0 (P0.0 ÷ P0.7) là port hai chức năng trên các chân từ 32 đến 39. Trong các thiết kế cỡ nhỏ (không dùng bộ nhớ ngoài) nó có chức năng như các đường I/O. Đối với các thiết kế lớn với bộ nhớ ngoài, port 0 được dồn kênh giữa bus dữ liệu (D0 ÷ D7) và byte thấp của bus địa chỉ (A0 ÷ A7). 2. Port 1 Port 1 (P1.0 ÷ P1.7) là một port I/O trên các chân từ 1 đến 8. Port 1 không có chức năng khác, nó chỉ được dùng cho giao tiếp với thiết bị ngoài. 3. Port 2 Port 2 (P2.0 ÷ P2.7) là port có công dụng kép trên các chân từ 21 đến 28. Nó được dùng như các đường I/O hoặc là byte cao của bus địa chỉ (A8 ÷ A15) đối với các thiết kế dùng bộ nhớ ngoài. 4. Port 3 Port 3 (P3.0 ÷ P3.7) là một port công dụng kép trên các chân từ 10 đến 17. Các chân của port này vừa có chức năng là các đường I/O vừa có chức năng riêng khác tùy từng chân. Bảng sau mô tả các chức năng riêng của từng chân: Bit Tên Chức năng P3.0 RXD Dữ liệu nhận cho port nối tiếp P3.1 TXD Dữ liệu phát cho port nối tiếp P3.2 INT0 Ngắt ngoài 0 P3.3 INT1 Ngắt ngoài 1 Bài giảng VI XỬ LÝ Chương 2: Phần cứng họ MCS-51 5 P3.4 T0 Ngõ vào timer/counter 0 P3.5 T1 Ngõ vào timer/counter 1 P3.6 WR Xung ghi bộ nhớ dữ liệu ngoài P3.7 RD Xung đọc bộ nhớ dữ liệu ngoài Bảng 2.2: Chức năng của các chân của port 3. 5. PSEN (Program Store Enable) - PSEN là tín hiệu ra trên chân 29. Nó là tín hiệu điều khiển để cho phép đọc bộ nhớ chương trình ngoài và thường được nối đến chân OE (Output Enable) của bộ nhớ này. - PSEN sẽ ở mức 0 (mức tích cực) trong thời gian lấy lệnh. Các mã nhị phân của chương trình được đọc từ bộ nhớ qua bus dữ liệu và được chốt vào thanh ghi lệnh của 8051 để giải mã. Khi thực thi chương trình trong ROM nội, PSEN được duy trì ở mức 1 (mức không tích cực). 6. ALE (Address Latch Enable) - ALE là tín hiệu ra trên chân 30. Nó là tín hiệu ra cho phép chốt địa chỉ để phân kênh cho bus dữ liệu (D0 ÷ D7) và byte thấp của bus địa chỉ (A0 ÷ A7) trên port 0: trong nửa đầu của chu kỳ bộ nhớ, xung ALE cho phép chốt địa chỉ vào một thanh ghi bên ngoài, trong nửa sau của chu kỳ bộ nhớ, các đường port 0 như là các đường xuất/nhập dữ liệu. - Các xung tín hiệu ALE có tốc độ bằng 1/6 lần tần số của mạch dao động trên chip và có thể được dùng làm nguồn xung nhịp cho các thành phần khác của hệ thống. Ví dụ, nếu xung nhịp mạch dao động trên 8051 là 12 MHz thì ALE có tần số là 2 MHz. Chỉ trừ khi thi hành lệnh MOVX, một xung ALE sẽ bị mất đi. Chân này cũng được làm ngõ vào của xung lập trình cho EPROM trong 8051. 7. EA (External Access) EA là tín hiệu vào trên chân 31. Nó thường được nối với +5V (mức 1) hay GND (mức 0). Nếu ở mức 1, 8051 thực thi chương trình từ ROM nội trong khoảng địa chỉ thấp (4 KB). Nếu ở mức 0, 8051 chỉ thực thi chương trình từ bộ nhớ chương trình ngoài. Trong 8031, chân này luôn được nối GND vì không có bộ nhớ chương trình trên chip. 8. RST (Reset) RST là ngõ vào trên chân 9. Khi tín hiệu này được đưa lên mức cao (trong ít nhất là 2 chu kỳ máy), hệ thống sẽ khởi động lại. 9. XTAL1 và XTAL2 XTAL1 và XTAL2 là ngõ vào và ngõ ra của mạch dao động trên chip ở chân 18 và 19. Chúng thường được nối với một thạch anh ngoài và các tụ như hình 2.6 để tạo xung clock. Tần số thạch anh thông thường là 12 MHz. Chu kì máy (TM) = 1 / (fOSC/12) = 12 / fOSC Nếu tần số thạch anh là 12 MHz thì chu kì máy bằng 1 μs. Hình 2.6 10. VCC và VSS Là các chân nguồn trên chân 40 và20. VCC = +5V, VSS nối đất. Mạch dao động trên chip fosc XTAL 12 MHz C2 30p 0 XTAL2 C1 30p XTAL1 Bài giảng VI XỬ LÝ Chương 2: Phần cứng họ MCS-51 6 IV. CẤU TRÚC CỦA PORT I/O Sơ đồ mạch bên trong của các chân port I/O được vẽ đơn giản như sau: Hình 2.7 Việc ghi ra một chân port sẽ nạp dữ liệu từ bus nội vào chốt port. Ngõ ra của chốt được nối qua một cổng đảo đến cực G của FET và ngõ ra của FET nối đến chân port. Khi ghi mức 1 đến chốt port, ngõ ra cổng đảo sẽ là mức 0 làm FET tắt, ngõ ra chân port sẽ là mức 1. Ngược lại, khi ghi mức 0 đến chốt port sẽ làm FET dẫn nên ngõ ra chân port sẽ là mức 0. Các câu lệnh yêu cầu hoạt động đọc-sửa-ghi (ví dụ lệnh CPL P1.5), sẽ đọc ở chân chốt port để tránh hiểu nhầm mức điện áp ở chân port do ảnh hưởng tải. Các câu lệnh nhập một bit từ port (ví dụ MOV C,P1.5) sẽ đọc chân port. Trong trường hợp này, chốt port phải ở mức 1, nếu không thì FET sẽ dẫn và kéo ngõ ra xuống mức 0. Khi reset hệ thống, tất cả các chốt port được cài bằng 1, vì thế các chân port có thể được dùng như là các ngõ nhập ngay mà không cần phải cài các chốt port nữa. Tuy nhiên nếu một chốt port bị xoá (ví dụ lệnh CLR P1.5), và sau đó muốn nhập vào từ chân port thì bộ chốt phải được thiết lập lên mức 1 trước (ví dụ phải dùng lệnh SETB P1.5 trước). Chú ý: điện trở kéo lên (pull up) không có ở port 0 (trừ khi port này làm nhiệm vụ dồn kênh bus địa chỉ/dữ liệu). Do đó khi port này được dùng làm I/O thì cần có điện trở kéo lên bên ngoài. V. TỔ CHỨC BỘ NHỚ - 8051 có không gian bộ nhớ riêng bên trong cho chương trình (ROM) và dữ liệu (RAM). - Có thể mở rộng đến 64K bộ nhớ chương trình ngoài và 64K bộ nhớ dữ liệu ngoài (tương ứng với 16 bit địa chỉ). - Có 256 byte RAM nội ( địa chỉ 00H ÷ FFH): + 128 byte RAM nội địa chỉ 00H ÷ 7FH: là các bank (dãy) thanh ghi, vùng RAM định vị bit và vùng RAM đa dụng. + 128 byte RAM nội địa chỉ 80H ÷ FFH: là các thanh ghi chức năng đặc biệt. 1. Các bank thanh ghi - Địa chỉ từ 00H ÷ 1FH. - Có 4 bank thanh ghi: 0, 1, 2, 3. - Mỗi bank có 8 thanh ghi: từ R0 ÷ R7. - Tại mỗi thời điểm, chỉ có một bank thanh ghi tích cực (thông qua việc cài các bit chọn bank trong thanh ghi PSW). Bank thanh ghi tích cực mặc nhiên sau khi reset hệ thống là bank 0. 2. Vùng RAM định vị bit - Địa chỉ từ 20H ÷ 2FH. Ghi vào chốt Chốt port Bus nội của 8051 Vcc chân port Điện trở nội kéo lên Đọc chân port D CLK Q Q Đọc chốt port 0 Bài giảng VI XỬ LÝ Chương 2: Phần cứng họ MCS-51 7 - Gồm 128 bit được định địa chỉ từ 00H đến 7FH trong các byte địa chỉ từ 20H ÷ 2FH. - Có thể truy xuất từng byte hay từng bit. Ý tưởng truy xuất từng bit riêng rẽ bằng phần mềm là một đặc tính mạnh của các vi điều khiển, đặc biệt đối với các ứng dụng điều khiển. Các bit có thể được đặt, xóa, AND, OR với một lệnh đơn. 3. Vùng RAM đa dụng - Địa chỉ từ 30 ÷ 7FH. - Gồm 80 byte được định địa chỉ từ 30H ÷ 7FH, được sử dụng tùy mục đích của người dùng. Hình 2.8 Địa chỉ byte Địa chỉ bit 7F 30 RAM đa dụng 2F 7F 7E 7D 7C 7B 7A 79 78 2E 77 76 75 74 73 72 71 70 2D 6F 6E 6D 6C 6B 6A 69 68 2C 67 66 65 64 63 62 61 60 2B 5F 5E 5D 5C 5B 5A 59 58 2A 57 56 55 54 53 52 51 50 29 4F 4E 4D 4C 4B 4A 49 48 28 47 46 45 44 43 42 41 40 27 3F 3E 3D 3C 3B 3A 39 38 26 37 36 35 34 33 32 31 30 25 2F 2E 2D 2C 2B 2A 29 28 24 27 26 25 24 23 22 21 20 23 1F 1E 1D 1C 1B 1A 19 18 22 17 16 15 14 13 12 11 10 21 0F 0E 0D 0C 0B 0A 09 08 20 07 06 05 04 03 02 01 00 1F 18 Bank 3 17 10 Bank 2 0F 08 Bank 1 07 00 Bank thanh ghi mặc định cho R0 – R7 (Bank 0) RAM Địa chỉ byte Địa chỉ bit Ký hiệu (tên) FF F0 F7 F6 F5 F4 F3 F2 F1 F0 B E0 E7 E6 E5 E4 E3 E2 E1 E0 ACC D0 D7 D6 D5 D4 D3 D2 - D0 PSW B8 - - - BC BB BA B9 B8 IP B0 B7 B6 B5 B4 B3 B2 B1 B0 P3 A8 AF - - AC AB AA A9 A8 IE A0 A7 A6 A5 A4 A3 A2 A1 A0 P2 99 Không được địa chỉ hóa bit SBUF 98 9F 9E 9D 9C 9B 9A 99 98 SCON 90 97 96 95 94 93 92 91 90 P1 8D Không được địa chỉ hóa bit TH1 8C Không được địa chỉ hóa bit TH0 8B Không được địa chỉ hóa bit TL1 8A Không được địa chỉ hóa bit TL0 89 Không được địa chỉ hóa bit TMOD 88 8F 8F 8D 8C 8B 8A 89 88 TCON 87 Không được địa chỉ hóa bit PCON 83 Không được địa chỉ hóa bit DPH 82 Không được địa chỉ hóa bit DPL 81 Không được địa chỉ hóa bit SP 80 87 86 85 84 83 82 81 80 P0 CÁC THANH GHI CHỨC NĂNG ĐẶC BIỆT Bài giảng VI XỬ LÝ Chương 2: Phần cứng họ MCS-51 8 VI. CÁC THANH GHI CHỨC NĂNG ĐẶC BIỆT (SFRs – SPECIAL FUNCTION REGISTERS) 1. Thanh ghi tích luỹ A (Accummulator) - Còn kí hiệu là ACC (tương ứng với địa chỉ E0H), được định địa chỉ từng bit. - Thường là toán hạng đích trong các lệnh số học và logic, kết quả của lệnh chứa trong thanh ghi A. Ví dụ: 2. Thanh ghi trạng thái chương trình PSW (Program Status Word) Địa chỉ là D0H, chứa các bit trạng thái như sau: CY AC F0 RS1 RS0 OV - P - Cờ nhớ CY (C) Có hai công dụng: + Được đặt bằng 1 nếu có một số nhớ sinh ra bởi phép cộng hoặc có một số mượn bởi phép trừ. Ví dụ, nếu thanh ghi tích luỹ chứa FFH, thì lệnh sau: ADD A, #1 sẽ trả về thanh ghi A kết quả là 00H và đặt cờ nhớ C = 1. + Là “thanh ghi tích lũy” 1 bit trong các lệnh logic thao tác trên bit. Ví dụ, lệnh sau sẽ AND bit 25H với cờ nhớ và đặt kết quả trở vào cờ nhớ: ANL C, 25H - Cờ nhớ phụ AC (Auxiliary Carry) + Cờ nhớ AC được đặt bằng 1 nếu có số nhớ sinh ra từ bit 3 sang bit 4 trong phép cộng. Ví dụ: 78 0111 1000 + 69 + 0110 1001 E1 1110 0001 + Được dùng khi cộng các giá trị BCD. - Cờ F0 : là một bit cờ đa dụng, được dùng tùy mục đích của người sử dụng. - RS1 và RS0 Là các bit dùng để chọn bank thanh ghi tích cực. Chúng được xóa sau khi reset hệ thống và được thay đổi bằng phần mềm nếu cần. RS1 RS0 Bank 0 0 0: địa chỉ 00H ÷ 07H 0 1 1: địa chỉ 08H ÷ 0FH 1 0 2: địa chỉ 10H ÷ 17H 1 1 3: địa chỉ 18H ÷ 1FH Bảng 2.3: Chọn bank thanh ghi. - Cờ tràn OV (Overflow) Được đặt bằng 1 sau một lệnh cộng hoặc lệnh trừ nếu có một phép toán bị tràn số học. Khi các số có dấu được cộng hoặc trừ với nhau, phần mềm có thể kiểm tra bit này để A + Toán hạng nguồn = Kết quả Bài giảng VI XỬ LÝ Chương 2: Phần cứng họ MCS-51 9 xác định xem kết quả có nằm trong tầm xác định không. Khi các số không dấu được cộng, bit OV có thể được bỏ qua. Các kết quả lớn hơn +127 hoặc lớn hơn –128 sẽ đặt bit OV. Ví dụ, phép cộng sau bị tràn và bit OV được đặt: Hex: 0F Thập phân: 15 + 7F + 127 8E 142 Kết quả là một số có dấu 8EH được xem như –114, không phải là kết quả đúng (142), vì vậy bit OV được đặt. - Cờ kiểm tra chẵn lẻ P (Parity) Được tự động tạo ra theo phương pháp kiểm tra chẵn đối với dữ liệu trong thanh ghi A. + Kiểm tra chẵn (even parity): tổng số các bit 1 trong thanh ghi A và cờ P là chẵn. + Kiểm tra lẻ (odd parity): tổng số các bit 1 trong thanh ghi A và cờ P là lẻ. 3. Thanh ghi B - Địa chỉ là F0H, được định địa chỉ từng bit. - Được dùng kèm với thanh ghi A trong các phép toán nhân, chia hay dùng như một thanh ghi đa dụng. 4. Con trỏ stack SP (Stack Pointer) - Stack (ngăn xếp) là vùng nhớ trên RAM mà μP dùng để lưu thông tin tạm thời. - Con trỏ stack SP có địa chỉ là 81H, là thanh ghi chứa địa chỉ của byte dữ liệu hiện hành trên đỉnh của stack. - Các lệnh trên stack bao gồm các thao tác cất dữ liệu vào stack và lấy dữ liệu ra khỏi vùng stack. Lệnh cất dữ liệu vào stack (PUSH) sẽ làm tăng nội dung SP trước khi ghi dữ liệu và lệnh lấy dữ liệu ra khỏi vùng stack (POP) sẽ đọc dữ liệu và giảm nội dung SP. Việc cất và lấy dữ liệu trên vùng stack tuân theo nguyên tắc First In Last Out (FILO). - Vùng stack của 8051 được giữ trong RAM nội. Khi khởi động, nội dung mặc định của SP là 07H. Do đó vùng stack là 08H ÷ 7FH. Trong trường hợp này, bank thanh ghi 1 (có thể cả 2 và 3) sẽ không dùng được vì vùng RAM này đã được dùng làm stack. Vì vậy, cần khởi động lại giá trị cho SP, thường lấy vùng nhớ phía trên từ 60H ÷ 7FH. - Trước khi thực hiện một chương trình con hoặc chương trình phục vụ ngắt, địa chỉ của lệnh kế tiếp của lệnh hiện hành sẽ được tự động lưu vào vùng stack. Sau khi thực thi xong và thoát khỏi chương trình con hoặc chương trình phục vụ ngắt, địa chỉ của lệnh kế tiếp được lưu trong vùng stack sẽ được đưa vào PC và chương trình sẽ tiếp tục thực thi tại điểm mà nó đã ngưng trước đó. Trong trường hợp có nhiều chương trình con lồng nhau hoặc ngắt trong ngắt, quy tắc FILO sẽ đảm bảo cho việc thực thi chương trình theo đúng trình tự. 5. Thanh ghi con trỏ dữ liệu DPTR (Data Pointer) - Là thanh ghi 16 bit, gồm hai thanh ghi 8 bit là DPL (byte thấp) và DPH (byte cao). - Được dùng để xác định địa chỉ bộ nhớ ngoài (bộ nhớ chương trình ngoài hay bộ nhớ dữ liệu ngoài). 6. Các thanh ghi port - Gồm 4 thanh ghi tương ứng với 4 port: P0 Ù Port 0 : ở địa chỉ 80H P1 Ù Port 1 : ở địa chỉ 90H P2 Ù Port 2 : ở địa chỉ A0H P3 Ù Port 3 : ở địa chỉ B0H - Để truy xuất port ta truy xuất các thanh ghi port tương ứng. Bài giảng VI XỬ LÝ Chương 2: Phần cứng họ MCS-51 10 - Các thanh ghi này được định địa chỉ từng bit. Ví dụ: P1.0 : bit 0 của thanh ghi P1 P2.7 : bit 7 của thanh ghi P2 7. Các thanh ghi bộ định thời (Timer) - 8051 có hai bộ định thời/đếm 16 bit được dùng cho việc định thời hoặc đếm sự kiện: + Timer 0 gồm TL0 (byte thấp) ở địa chỉ 8AH và TH0 (byte cao) ở địa chỉ 8BH. + Timer 1 gồm TL1 (byte thấp) ở địa chỉ 8CH và TH1 (byte cao) ở địa chỉ 8DH. - Việc vận hành timer được điều khiển bởi thanh ghi chế độ timer TMOD (ở địa chỉ 89H) và thanh ghi điều khiển timer TCON (ở địa chỉ 88H). - Chỉ có TCON được định địa chỉ từng bit. 8. Các thanh ghi port nối tiếp (Serial port) - 8051 chứa một port nối tiếp trên chip dành cho việc trao đổi thông tin với các thiết bị nối tiếp như máy tính, modem hoặc cho việc giao tiếp với các IC khác có giao tiếp nối tiếp (các bộ chuyển đổi A/D, các thanh ghi dịch ). - Thanh ghi SBUF (Serial Buffer) ở địa chỉ 99H là bộ đệm nhập/xuất nối tiếp. Khi xuất dữ liệu thì ghi lên SBUF, khi nhập dữ liệu thì đọc từ SBUF. - Các chế độ hoạt động khác nhau của port nội tiếp được lập trình thông qua thanh ghi điều khiển port nối tiếp SCON (Serial Control) ở địa chỉ 98H. Đây là thanh ghi được định địa chỉ từng bit. 9. Các thanh ghi ngắt (Interrupt) - 8051 có 5 nguồn ngắt, 2 mức ưu tiên ngắt. - Các ngắt bị cấm sau khi reset hệ thống và sẽ được cho phép bằng cách lập trình cho thanh ghi cho phép ngắt IE (Interrupt Enable) ở địa chỉ A8H. Đây là thanh ghi định địa chỉ từng bit. -Việc xác lập chế độ ưu tiên ngắt được lập trình thông qua thanh ghi ưu tiên ngắt IP (Interrupt Priority). 10. Thanh ghi điều khiển nguồn PCON (Power Control) - Không được định địa chỉ từng bit. - Chứa các bit điều khiển như sau: SMOD - - - GF1 GF0 PD IDL + SMOD:bit tăng gấp đôi tốc độ baud của port nối tiếp nếu được đặt (SMOD = 1). + GF1, GF0: các bit cờ đa dụng. + PD: thiết lập chế độ nguồn giảm khi được đặt, chỉ thoát khi reset. + IDL: thiết lập chế độ nguồn nghỉ khi được đặt, chỉ thoát nếu có ngắt hoặc reset. • Chế độ nguồn giảm (PD =1): cần cỡ 2V + Mạch dao động trên chip ngừng hoạt động. + Mọi chức năng ngừng hoạt động. + Nội dung các RAM trên chip được duy trì. + Các chân port được duy trì ở mức logic của chúng. + ALE và PSEN được giữ ở mức thấp. • Chế độ nghỉ (IDL = 1) + Tín hiệu clock nội khóa không cho đến CPU nhưng không khóa đối với các chức năng ngắt, định thời và port nối tiếp. + Nội dung của tất cả các thanh ghi được duy trì. + ALE và PSEN được giữ ở mức cao. Bài giảng VI XỬ LÝ Chương 2: Phần cứng họ MCS-51 11 VII. BỘ NHỚ NGOÀI - 8051 có khả năng mở rộng bộ nhớ lên đến 64K bộ nhớ chương trình ngoài và 64K bộ nhớ dữ liệu ngoài. Do đó có thể dùng thêm ROM, RAM và các IC giao tiếp ngoại vi như 74573, 74244, 74245 nếu cần. - Khi dùng bộ ngớ ngoài, port 0 được dồn kênh giữa bus địa chỉ (A0 ÷ A7) và bus dữ liệu (D0 ÷ D7), port 2 thường dùng làm byte cao của bus địa chỉ (A8 ÷ A15). - Ngõ ra ALE chốt byte thấp của địa chỉ ở mỗi nửa đầu chu kỳ bộ nhớ (nửa sau chu kỳ bộ nhớ port 0 được dùng làm bus dữ liệu). Hình 2.9 1. Truy xuất bộ nhớ chương trình ngoài - Tín hiệu EA được tích cực ( EA = 0). - Tín hiệu PSEN nối với OE để cho phép đọc bộ nhớ chương trình ngoài. Ví dụ: Kết nối phần cứng 8051 với bộ nhớ ngoài EPROM 64K như sau: Hình 2.10 - Trong một chu kỳ máy điển hình, ALE có 2 xung và do đó có thể đọc 2 byte của lệnh từ bộ nhớ chương trình (nếu lệnh chỉ có 1 byte thì byte thứ hai được loại bỏ). Giản đồ thời gian của chu kỳ tìm-nạp lệnh ở bộ nhớ chương trình ngoài như sau: Hình 2.11 A8 ÷ A15 A0 ÷ A7 D0 ÷ D7 Port 2 Port 0 1 chu kỳ bộ nhớ 74HC373 A7-A0 A15-A8 D Q GALE 2Port EA 0Port PSEN OE EPROM D7-D0 8051 CS Bài giảng VI XỬ LÝ Chương 2: Phần cứng họ MCS-51 12 2. Truy xuất bộ nhớ dữ liệu ngoài - Cho phép đọc/ghi bởi các tín hiệu RD / WR . - Lệnh dùng để truy xuất bộ nhớ dữ liệu ngoài là MOVX, sử dụng DPTR hay R0/R1 để chứa địa chỉ dữ liệu. - RAM ngoài có thể giao tiếp với 8051 theo cùng cách như EPROM ngoại trừ đường RD nối với đường cho phép xuất OE và đường WR nối với đường ghi WR của RAM. - Trong trường hợp chỉ có một lượng nhỏ bộ nhớ dữ liệu ngoài (không có bộ nhớ chương trình ngoài) có thể dùng địa chỉ 8 bit để tạo trang bộ nhớ 256 byte. Ví dụ: Giao tiếp giữa 8051 và RAM 1K ngoài được kết nối như sau: Hình 2.12 Giản đồ thời gian của chu kỳ đọc và ghi bộ nhớ dữ liệu ngoài như sau: Hình 2.13 Hình 2.14 A7-A0D Q G 74HC373 D7-D0 ALE EA 0Port P2.0 PSEN CS (1KB) RAM8051 P2.1 WR RD WR OE A8 A9 NC Bài giảng VI XỬ LÝ Chương 2: Phần cứng họ MCS-51 13 3. Giải mã địa chỉ Hình 2.15 - Được dùng trong trường hợp cần phải giao tiếp nhiều ROM và/hoặc nhiều RAM. Do các chip cùng nối vào bus dữ liệu của vi điều khiển nên cần có mạch giải mã để đảm bảo tại mỗi thời điểm chỉ có một chip được chọn nối với bus dữ liệu, các chip khác xem như hở mạch. - Một IC giải mã điển hình là 74138 (giải mã 3 → 8). 4. Xếp chồng không gian bộ nhớ chương trình và dữ liệu - Dùng RAM vừa làm bộ nhớ chương trình vừa làm bộ nhớ dữ liệu. - Mạch trình bày ở hình sau cho phép RAM được ghi như là bộ nhớ dữ liệu và được đọc như là bộ nhớ chương trình hoặc dữ liệu. Do đó một chương trình có thể được nạp vào RAM (bằng cách ghi vào RAM như bộ nhớ dữ liệu) và được thực thi (bằng cách truy xuất như bộ nhớ chương trình). Vì PSEN được dùng để đọc bộ nhớ chương trình và RD được dùng để đọc bộ nhớ dữ liệu nên một RAM có thể dùng làm không gian nhớ chương trình và dữ liệu bằng cách nối chân OE tới ngõ ra cổng AND có các ngõ vào là PSEN và RD . VIII. HOẠT ĐỘNG RESET - 8051 được reset bằng cách giữ chân RST ở mức cao tối thiểu 2 chu kỳ máy và sau đó chuyển về mức thấp. - Bảng trạng thái các thanh ghi sau khi reset: Thanh ghi Nội dung Bộ đếm chương trình PC 0000H Thanh ghi tích luỹ A 00H Thanh ghi B 00H RAM PSEN RD WR OE WR Hình 2.16 Bus dữ liệu Bus địa chỉ A0-A12 D0-D7 A0-A12 2764 EPROM (8KB) CS OE D0-D7 A0-A12 6264 RAM (8KB) WR CS OE A14 74LS138 A B C Y0 Y1 Y2 Y3 Y4 Y5 Y6 Y7 G1 G2A G2B CS A15 VCC A13 0 A0-A12 CS CSCS /WR /RD/PSEN Chọn các EPROM/RAM khác Bài giảng VI XỬ LÝ Chương 2: Phần cứng họ MCS-51 14 Từ trạng thái chương trình PSW 00H Con trỏ stack SP 07H Con trỏ dữ liệu DPTR 0000H Port 0 – 3 FFH Thanh ghi ưu tiên ngắt IP xxx00000B (8031/8051) xx000000B (8032/8052) Thanh ghi cho phép ngắt IE 0xx00000B (8031/8051) 0x000000B (8032/8052) Các thanh ghi định thời 00H Thanh ghi điều khiển nối tiếp SCON 00H Bộ đệm dữ liệu nối tiếp SBUF 00H Thanh ghi điều khiển nguồn PCON (HMOS) (CMOS) 0xxxxxxxB 0xxx0000B Bảng 2.4: Trạng thái các thanh ghi sau khi reset. - Mạch reset tiêu biểu: IX. CÁC CẢI TIẾN CỦA 8032/8052 Các vi mạch 8032/8052 có hai cải tiến so với 8031/8051. Một là có thêm 128 byte RAM trên chip. Các địa chỉ này trùng với các thanh ghi chức năng đặc biệt, tuy nhiên không xảy ra xung đột vì các byte RAM này chỉ có thể truy xuất bằng cách dùng kiểu định địa chỉ gián tiếp. Ví dụ: MOV A,0F0H ; chép nội dung thanh ghi B vào thanh ghi A MOV R0,#0F0H MOV A,@R0 ; chép nội dung tại địa chỉ RAM là F0H vào thanh ghi A Cải tiến thứ hai là có thêm một bộ định thời 16-bit. Bộ định thời 2 này được lập trình nhờ vào 5 thanh ghi chức năng đặc biệt thêm vào. Thanh ghi Địa chỉ Mô tả Địa chỉ bit T2CON C8H Điều khiển Có RCAP2L CAH Nhận byte thấp Không RCAP2H CBH Nhận byte cao Không TL2 CCH Byte thấp của timer 2 Không TH2 CDH Byte cao của timer 2 Không Bảng 2.5: Các thanh ghi của bộ định thời 2. +5V 8.2K Reset 100 0 + 10uF RST a/ Tác động bằng tay + 10uF +5V RST 8.2K 0 b/ Tác động khi mở nguồn Hình 2.17 Bài giảng VI XỬ LÝ Chương 2: Phần cứng họ MCS-51 15 CÂU HỎI VÀ BÀI TẬP CHƯƠNG 2 2.1. Giá trị của con trỏ stack (SP) của 8051 ngay sau khi khởi động hệ thống là bao nhiêu? Vùng stack bắt đầu từ đâu? 2.2. Mô tả cách để chọn bank thanh ghi tích cực là bank 3? 2.3. Nếu tần số dao động thạch anh cấp cho 8051 là 4MHz thì thời gian của một chu kỳ máy (TM) là bao nhiêu? 2.4. Nếu tần số dao động thạch anh cấp cho 8051 là 10MHz thì tần số của tín hiệu trên chân ALE là bao nhiêu (nếu không dùng lệnh MOVX)? 2.5. Nếu tần số dao động thạch anh cấp cho 8051 là 8MHz thì thời gian tối thiểu mà chân RST phải ở mức cao là bao nhiêu để tạo tín hiệu reset hệ thống? 2.6. Kể tên các tín hiệu điều khiển của 8051 được dùng để truy xuất EPROM ngoài và RAM ngoài. 2.7. Địa chỉ bit của bit MSB tại địa chỉ byte 25H trong RAM nội của 8051 là gì? 2.8. Nêu sự khác nhau giữa chế độ nguồn nghỉ và chế độ nguồn giảm của 8051? 2.9. Xác định bảng phân vùng địa chỉ cho mỗi chip nhớ trong hệ thống sau (ghi rõ địa chỉ bắt đầu và địa chỉ kết thúc) : − 1 ROM 16 KB bắt đầu từ địa chỉ 0000H − 2 RAM 8 KB bắt đầu từ địa chỉ 4000H − 2 ROM 4 KB bắt đầu từ địa chỉ 8000H − 4 RAM 2 KB bắt đầu từ địa chỉ A000H − 8 RAM 1 KB bắt đầu từ địa chỉ C000H 2.10. Xác định bảng phân vùng địa chỉ cho các tín hiệu chọn chip ( CSx ) ứng với các mạch giải mã địa chỉ sau : 2.11. Thiết kế kit 8031 với 1 chip ROM chương trình ngoài 8 KB và 2 chip RAM dữ liệu ngoài 8KB: − Vẽ sơ đồ mạch giải mã địa chỉ tạo tín hiệu chọn chip (tích cực mức thấp) và bảng phân vùng địa chỉ tương ứng. − Vẽ sơ đồ kết nối hoàn chỉnh của kit trên. 2.12. Thiết kế kit 8051 với 4 chip RAM 16KB: 0CS CS1 CS2 CS3 CS4 CS5 CS6 CS7 A10 A11 A12 A15 A14 A13 74LS138 1 2 3 15 14 13 12 11 10 9 7 6 4 5 A B C Y0 Y1 Y2 Y3 Y4 Y5 Y6 Y7 G1 G2A G2B U1 Hình a Bài giảng VI XỬ LÝ Chương 2: Phần cứng họ MCS-51 16 − Vẽ sơ đồ mạch giải mã địa chỉ tạo tín hiệu chọn chip (tích cực mức thấp) và bảng phân vùng địa chỉ tương ứng. − Vẽ sơ đồ kết nối hoàn chỉnh của kit trên. 2.13. Thiết kế kit 8031 với 1 chip ROM chương trình ngoài 8 KB, 2 chip RAM 8 KB, 2 I/O xuất (2 IC 74373) và 1 I/O nhập (IC 74244): − Vẽ sơ đồ mạch giải mã địa chỉ tạo tín hiệu chọn chip (tích cực mức thấp) và bảng phân vùng địa chỉ tương ứng. − Vẽ sơ đồ kết nối hoàn chỉnh của kit trên. Sơ đồ chân và bảng hoạt động tương ứng của các IC 74244 và 74373: 2.14. Thiết kế mạch giải mã và xác định bảng phân vùng địa chỉ cho bộ nhớ gồm: 2 ROM 2 KB, 1 ROM 4 KB và 1 RAM 8 KB. 2.15. Thiết kế mạch giải mã địa chỉ tạo tín hiệu chọn chip (tích cực mức thấp) cho các bộ nhớ RAM theo bảng phân vùng địa chỉ: Tín hiệu chọn chip Vùng địa chỉ CS0 0000H ÷ 0FFFH CS1 1000H ÷ 2FFFH CS2 3000H ÷ 6FFFH CS3 7000H ÷ EFFFH 2.16. Sử dụng IC 74138 và các cổng logic cần thiết để thiết kế mạch giải mã địa chỉ tạo tín hiệu chọn chip (tích cực mức thấp) theo bảng phân vùng địa chỉ sau (không quan tâm đến đặc tính truy xuất): Tín hiệu chọn chip Vùng địa chỉ CS0 F000H ÷ F3FFH CS1 F400H ÷ F7FFH CS2 F800H ÷ FBFFH CS3 FC00H ÷ FFFFH

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

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