Sơ lược về lịch sử và hướng phát triển của vi điều khiển
Thuật ngữ…
- Hiểu được nguyên lý cấu tạo của vi điều khiển
- Hiểu được các cấu trúc bộ nhớ của vi điều khiển
3 Đơn vị xử lý trung tâm (CPU) Điểm lưu ý về vi điều khiển là sơ đồ khối cấu tạo của nó Cấu tạo một họ microcontroller chủ yếu dựa trên một kiểu tiêu chuẩn bao gồm các tính năng quan trọng nhất, nhiều chủng loại phù hợp với các lĩnh vực ứng dụng đặc biệt khác nhau, có thể kết hợp thêm thiết bị ngoại vi để tăng khả năng hoặc giảm nhỏ kích thước đến mức tối thiểu trong các ứng dụng chuyên biệt như:Kết nối bus, kết nối video hoặc điều khiển trực tiếp các cơ cấu hiển thịLCD Với kiểu tiêu chuẩn cũng đủ dùng cho hầu hết các ứng dụng.
Hình 32-01-2 Cấu trúc vi điều khiển
Hình 32-01-3 Sơ đồ khối vi điều khiển
Cấu trúc vi điều khiển 8051
Giới thiệu chung
- Biết được lịch sử ra đời của vi điều khiển
- Hiểu được quá trình phát triển của vi điều khiển
Sự ra đời của transistor vào năm 1948 đánh dấu khởi đầu cho sự phát triển của máy tính với tính năng cao hơn và kích thước nhỏ hơn, dẫn đến sự xuất hiện của vi xử lý Máy tính điện tử đầu tiên tại Mỹ, ENIAC, được ra mắt vào năm 1946 với 18.000 bóng đèn điện tử, sau đó được thay thế bởi model 1410 của IBM vào năm 1960 với toàn bộ linh kiện là transistor Để giải quyết vấn đề về độ phức tạp và chi phí lắp ráp, công nghệ vi mạch đã ra đời, với vi mạch đầu tiên được thiết kế bởi Jack Kilby vào năm 1958 theo yêu cầu của NASA Năm 1961, công ty Fairchild giới thiệu vi mạch tích hợp đầu tiên không sử dụng transistor rời Các thế hệ vi mạch đầu tiên chủ yếu sản xuất theo công nghệ lưỡng cực, nhưng nhờ kỹ thuật MOS, mật độ tích hợp đã tăng lên đáng kể Công nghệ CMOS sau đó được phát triển, giúp giảm công suất tiêu thụ Để đáp ứng nhu cầu sản xuất vi mạch với số lượng lớn, ý tưởng về vi mạch lập trình đã xuất hiện, dẫn đến việc INTEL cho ra đời chip vi xử lý đầu tiên vào năm 1974, mở ra kỷ nguyên mới trong ngành công nghệ.
- Hiểu được nguyên lý cấu tạo của vi điều khiển
- Hiểu được các cấu trúc bộ nhớ của vi điều khiển
3 Đơn vị xử lý trung tâm (CPU) Điểm lưu ý về vi điều khiển là sơ đồ khối cấu tạo của nó Cấu tạo một họ microcontroller chủ yếu dựa trên một kiểu tiêu chuẩn bao gồm các tính năng quan trọng nhất, nhiều chủng loại phù hợp với các lĩnh vực ứng dụng đặc biệt khác nhau, có thể kết hợp thêm thiết bị ngoại vi để tăng khả năng hoặc giảm nhỏ kích thước đến mức tối thiểu trong các ứng dụng chuyên biệt như:Kết nối bus, kết nối video hoặc điều khiển trực tiếp các cơ cấu hiển thịLCD Với kiểu tiêu chuẩn cũng đủ dùng cho hầu hết các ứng dụng.
Hình 32-01-2 Cấu trúc vi điều khiển
Hình 32-01-3 Sơ đồ khối vi điều khiển
4 Bộ nhớ bán dẫn: RAM và ROM
Cấu trúc Von Neumann có một vùng địa chỉ tuyến tính duy nhất cho cả dữ liệu và lệnh điều khiển, với kích thước phụ thuộc vào chiều dài của bộ đếm chương trình Nếu không có linh kiện bổ sung, việc định địa chỉ cho bộ nhớ chương trình và bộ nhớ dữ liệu sẽ không độc lập Trong cấu trúc này, chỉ có một bus dữ liệu và một bus địa chỉ, dẫn đến việc không thể thực hiện truy xuất đồng thời bộ nhớ dữ liệu và bộ nhớ chương trình.
Cấu trúc Von Neumann bao gồm hai vùng địa chỉ riêng biệt cho bộ nhớ dữ liệu và bộ nhớ chương trình, cho phép truy xuất song song dữ liệu và lệnh điều khiển, điều này rất phù hợp với các vi điều khiển 16 và 32 bit, từ đó tăng tốc độ làm việc Trong khi vi điều khiển 8 bit thường sử dụng một hệ thống bus duy nhất, việc truy xuất bộ nhớ dữ liệu hoặc chương trình sẽ phụ thuộc vào các tín hiệu điều khiển Nếu không có yêu cầu ghi vào bộ nhớ chương trình, cấu trúc này còn giúp tăng tính an toàn cho chương trình.
- Biết được lĩnh vực ứng dụng của vi điều khiển
Vi điều khiển hiện nay được ứng dụng rộng rãi trong nhiều lĩnh vực như TV, thiết bị HiFi, máy giặt, điện thoại và ôtô, giúp đơn giản hóa quá trình sử dụng với nhiều tính năng và độ an toàn cao Ngoài ra, vi điều khiển còn được sử dụng trong khoa học kỹ thuật cho các thiết bị phân tích và đo lường, trong sản xuất tự động và trong lĩnh vực máy công cụ như CNC, góp phần nâng cao chất lượng sản phẩm.
Hình 32-01-6 Lĩnh vực ứng dụng
6 Các thiết bị xuất/ nhập
Mục tiêu: Nắm được hướng phát triển của vi điều khiển trong tương lai
Yêu cầu hiện nay đối với vi điều khiển là tăng cường ứng dụng với tốc độ xử lý nhanh, kích thước nhỏ gọn và công suất tiêu thụ thấp Câu hỏi đặt ra là liệu vi điều khiển 8 bit còn phù hợp hay cần chuyển sang 16/32 bit trong tương lai Khác với vi xử lý, vi điều khiển 8 bit vẫn đáp ứng tốt cho nhiều ứng dụng, trong khi vi điều khiển 16 bit có thể là thừa thãi Để giảm chi phí, kích thước và công suất tiêu thụ, vi điều khiển 4 bit là giải pháp tối ưu Một số ứng dụng yêu cầu vi điều khiển với nhiều khối ngoại vi, trong khi những ứng dụng khác cần tốc độ cao, do đó, hướng phát triển tương lai sẽ tập trung vào việc nâng cao khả năng của CPU và các khối ngoại vi.
Một cách đơn giản để cải thiện hiệu suất của vi điều khiển là tăng tần số xung đồng hồ, giúp rút ngắn thời gian thực hiện chương trình và giảm thời gian biến đổi A/D Tuy nhiên, cần đảm bảo rằng các linh kiện bên ngoài cũng có khả năng hoạt động ở tần số cao, vì việc tăng tần số đồng cũng đồng nghĩa với việc tăng công suất tiêu thụ Tối ưu hóa cấu trúc chương trình và bộ nhớ cũng rất quan trọng trong việc nâng cao khả năng của hệ thống Trong các ứng dụng đa nhiệm, phương pháp phân đoạn và phân dãy hóa đóng vai trò lớn Công nghệ sản xuất mới cho phép tăng tần số làm việc trong khi giảm công suất tiêu thụ và điện áp nuôi, mở ra nhiều ứng dụng mới với mạch điện đơn giản và tiêu thụ năng lượng thấp Thay đổi cú pháp tập lệnh phù hợp cũng giúp biên dịch dễ dàng từ các ngôn ngữ cấp cao như “C” hoặc “FORTH” sang mã lệnh của vi điều khiển.
Câu 1: Trình bày nguyên lý cấu tạo và cấu trúc của bộ nhớ Vi điều khiển.
Câu 2: Nêu các lĩnh vực ứng dụng của vi điều khiển.
Câu 3: Trình bày Các Bus: địa chỉ,, dữ liệu và điều khiển.
BÀI 2 : CẤU TRÚC PHẦN CỨNG CỦA VI ĐIỀU KHIỂN 8051
Vi điều khiển 8051 là một trong những dòng vi điều khiển phổ biến và cơ bản Hiểu rõ cấu trúc phần cứng cùng các đặc điểm riêng của loại vi điều khiển này là nền tảng quan trọng giúp người học phát triển kỹ năng lập trình hiệu quả trong các nội dung tiếp theo.
- Hiểu được cấu trúc phần cứng vi điều khiển 8051.
- Hiểu được cấu trúc bộ nhớ, biết được cách truy xuất bộ nhớ dữ liệu và bộ nhớ chương trình.
- Hiểu được đặc tính của các thanh ghi đặc biệt.
- Biết cách mở rộng thêm bộ nhớ ngoài.
- Hiểu nguyên lý hoạt động của mạch reset.
Phương pháp giảng dạy và học tập bài mở đầu
Đối với người dạy, việc áp dụng phương pháp giảng dạy tích cực như diễn giảng, vấn đáp và dạy học theo vấn đề là rất quan trọng Bên cạnh đó, giáo viên cần yêu cầu học sinh ghi nhớ các giá trị đại lượng và đơn vị của các đại lượng để nâng cao hiệu quả học tập.
- Đối với người học: Chủ động đọc trước giáo trình trước buổi học Điều kiện thực hiện bài học
- Xưởng vi điều khiển hóa/nhà xưởng: Xưởng vi điều khiển
- Trang thiết bị máy móc: Máy chiếu và các thiết bị dạy học khác
- Học liệu, dụng cụ, nguyên vật liệu: Chương trình môn học, giáo trình, tài liệu tham khảo, giáo án, phim ảnh, và các tài liệu liên quan.
- Các điều kiện khác: Không có
Kiểm tra và đánh giá bài học
Kiến thức: Kiểm tra và đánh giá tất cả nội dung đã nêu trong mục tiêu kiến thức
Kỹ năng: Đánh giá tất cả nội dung đã nêu trong mục tiêu kĩ năng.
+ Nghiên cứu bài trước khi đến lớp
+ Chuẩn bị đầy đủ tài liệu học tập.
+ Tham gia đầy đủ thời lượng môn học.
+ Nghiêm túc trong quá trình học tập.
Điểm kiểm tra thường xuyên: 1 điểm kiểm tra (hình thức: hỏi miệng)
Kiểm tra định kỳ lý thuyết: không có
Kiểm tra định kỳ thực hành: không có
- Hiểu được đặc điểm chung của vi điều khiển
- Hiểu được sơ đồ khối của vi điều khiển
- Biết được chức năng các chân tín hiệu của vi điều khiển
Vi mạch tổng quát chung của họ MCS-51 là chip 8051, linh kiện đầu tiên của họ này được đưa ra thị trường Chip 8051 có các đặc điểm như sau:
4 KB FLASH ROM, 128 Byte RAM nội.
Mạch giao tiếp nối tiếp.
Không gian nhớ chương trình ngoài 64KB.
Không gian nhớ dữ liệu ngoài 64KB.
210 vị trí nhớ được định địa chỉ, mỗi vị trí 1 bit.
Các thành viên khác của họ MCS-51 có các tổ hợp ROM, RAM trên chip khác nhau hoặc có thêm bộ định thời thứ ba
Sơ đồ chân và chức năng của các chân
Port 0 là port có 2 chức năng ở các chân 32 – 39 của 8051 Trong các thiết kế cỡ nhỏ không dùng bộ nhớ mở rộng nó có chức năng như các đường IO Đối với các thiết kế cỡ lớn có bộ nhớ mở rộng, P0 là port đa hợp địa chỉ và dữ liệu.
Port 1 là port IO trên các chân 1-8 Các chân được ký hiệu P1.0, P1.1, , ….P1.7. Port 1 được dùng cho giao tiếp và điều khiển với các thiết bị bên ngoài.
Port 2 là port có tác dụng kép trên các chân 21 - 28 được dùng như các đường xuất nhập hoặc là byte cao của bus địa chỉ đối với thiết kế lớn có mở rộng port và bộ nhơ mở rộng.
Port 3 là port có tác dụng kép trên các chân 10 - 17 Các chân của port này có nhiều chức năng, các công dụng chuyển đổi có liên hệ với các đặc tính đặc biệt của 8051 như ở bảng sau:
Bit Tên Chức năng chuyển đổi
P3.0 RXT Ngõ vào dữ liệu nối tiếp.
P3.1 TXD Ngõ xuất dữ liệu nối tiếp.
P3.2 INT0\ Ngõ vào ngắt cứng thứ 0.
P3.3 INT1\ Ngõ vào ngắt cứng thứ 1.
P3.4 T0 Ngõ vào của timer/counter thứ 0.
P3.5 T1 Ngõ vào của timer/counter thứ 1.
P3.6 WR\ Tín hiệu ghi dữ liệu lên bộ nhớ ngoài.
P3.7 RD\ Tín hiệu đọc bộ nhớ dữ liệu ngoài.
*2.5: Ngõ tín hiệu PSEN (Program store enable)
PSEN là tín hiệu ngõ ra tại chân 29, cho phép đọc bộ nhớ chương trình mở rộng, thường được gọi là chân 0E (output enable) của Eprom Khi PSEN ở mức thấp, vi điều khiển có thể đọc các byte mã lệnh.
8051 thực hiện việc lấy lệnh bằng cách đọc các mã lệnh từ Eprom thông qua bus dữ liệu Những mã lệnh này được lưu trữ trong thanh ghi lệnh bên trong 8051 để tiến hành giải mã Khi 8051 thực thi chương trình trong ROM nội, tín hiệu PSEN sẽ ở mức logic 1.
2.6: Ngõ tín hiệu điều khiển ALE (Address Latch Enable )
Khi 8051 truy xuất bộ nhớ bên ngoài, port 0 đóng vai trò là bus địa chỉ và bus dữ liệu, do đó cần phải phân tách các đường dữ liệu và địa chỉ Tín hiệu ALE được phát ra từ chân thứ.
30 dùng làm tín hiệu điều khiển để giải đa hợp các đường địa chỉ và dữ liệu khi kết nối chúng với IC chốt.
Tín hiệu ra ở chân ALE là một xung trong khoảng thời gian port 0 đóng vai trò là địa chỉ thấp nên chốt địa chỉ hoàn toàn tự động.
Các xung tín hiệu ALE hoạt động với tốc độ 1/6 tần số dao động của chip và có thể được sử dụng làm tín hiệu đồng hồ cho các phần khác trong hệ thống Chân ALE cũng đóng vai trò là ngõ vào xung lập trình cho Eprom trong vi điều khiển 8051.
2.7: Ngõ tín hiệu EA\(External Access)
Tín hiệu vào EA ở chân 31 có thể được kết nối với nguồn 5VDC (mức 1) hoặc GND (mức 0) Khi ở mức 1, vi điều khiển 8051 sẽ thực hiện chương trình từ ROM nội trong khoảng địa chỉ thấp 8 Kbyte Ngược lại, nếu ở mức 0, 8051 sẽ thực hiện chương trình từ bộ nhớ mở rộng.
Chân EA\ được lấy làm chân cấp nguồn 21V khi lập trình cho Eprom trong 8051.
2.8: Ngõ tín hiệu RST (Reset)
Ngõ vào RST ở chân 9 của vi điều khiển 8051 là ngõ vào Reset Khi tín hiệu này được đưa lên cao ít nhất 2 chu kỳ máy, các thanh ghi bên trong sẽ được nạp giá trị thích hợp để khởi động hệ thống Ngoài ra, khi cấp điện, mạch cũng tự động thực hiện Reset.
2.9: Các ngõ vào bộ dao động X1, X2
Bộ dao động tích hợp trong vi điều khiển 8051 cho phép người thiết kế dễ dàng kết nối thêm thạch anh và các tụ điện theo sơ đồ Tần số thạch anh phổ biến sử dụng cho 8051 là 12MHz.
2.10: Chân 40 (Vcc) được nối lên nguồn 5V
3 Tổ chức bộ nhớ vi điều khiển 8051
Mục tiêu: - Biết được tổ chức các bộ nhớ trong vi điều khiển
- Biết được địa chỉ của RAM đa dụng và các thanh ghi
Hình 32-02-3 Tổ chức bộ nhớ 8051 Địa chỉ byte Địa chỉ bit Địa chỉ byte Địa chỉ bit Tên
28 47 46 45 44 43 42 41 40 99 Không được địa chỉ hoá bit SBUF
23 1F 1E 1D 1C 1B 1A 19 18 8D không được địa chỉ hoá bit TH1
22 17 16 15 14 13 12 11 10 8C không được địa chỉ hoá bit TH0
21 0F 0E 0D 0C 0B 0A 09 08 8B không được địa chỉ hoá bit TL1
20 07 06 05 04 03 02 01 00 8A không được địa chỉ hoá bit TL0
89 không được địa chỉ hoá bit TMO
87 không được địa chỉ hoá bit PCO
0F Bank 1 83 không được địa chỉ hoá bit DPH
08 82 không được địa chỉ hoá bit DPL
07 Bank thanh ghi 0 (R0 R7) 81 không được địa chỉ hoá bit SP
Vùng Ram Thanh ghi đặc biệt
Hình 32-02-4 Cấu trúc RAM nội của 8051
Bộ nhớ trong của 8051 bao gồm cả ROM và RAM, trong đó RAM được chia thành nhiều thành phần quan trọng Các thành phần này bao gồm phần lưu trữ đa dụng, phần lưu trữ định địa chỉ theo byte và bit, cùng với các băng thanh ghi và vùng thanh ghi chức năng đặc biệt.
8051 sở hữu 4KByte bộ nhớ ROM nội, nhưng trong các thiết kế yêu cầu dung lượng bộ nhớ lớn hơn, nó cho phép kết nối với 64KByte bộ nhớ chương trình và 64KByte bộ nhớ dữ liệu ngoài.
Trong vùng RAM từ địa chỉ 30 đến 7F, người dùng có thể sử dụng chung để sao chép và lưu trữ dữ liệu tạm thời Dữ liệu có thể được truy xuất một cách tự do thông qua các lệnh trực tiếp hoặc gián tiếp.
3.2 RAM có thể truy xuất từng bit
Vi điều khiển 8051 có 210 bit địa chỉ hóa, trong đó 128 bit chứa các byte từ địa chỉ 20F đến 2FH, và các bit còn lại thuộc nhóm thanh ghi chức năng đặc biệt Khả năng truy xuất từng bit qua phần mềm là một trong những ưu điểm nổi bật của microcontroller này Các bit có thể được thiết lập, xóa, AND, OR, chỉ với một lệnh đơn, trong khi nhiều microcontroller khác yêu cầu chuỗi lệnh đọc – sửa - ghi để thực hiện các thao tác tương tự Hơn nữa, các cổng cũng cho phép truy xuất từng bit, với 128 bit có thể được truy cập dưới dạng byte hoặc bit tùy thuộc vào lệnh sử dụng.
32 byte thấp của bộ nhớ nội được dành cho các bank thanh ghi Bộ lệnh
8051 hổ trợ 8 thanh ghi có tên là R0 đến R7 và theo mặc định sau khi reset hệ thống, các thanh ghi này có các địa chỉ từ 00H đến 07H
Các lệnh sử dụng thanh ghi R0 đến R7 sẽ ngắn gọn và nhanh hơn so với các lệnh tương ứng sử dụng kiểu địa chỉ trực tiếp Việc sử dụng các thanh ghi này cho dữ liệu thường xuyên sẽ tối ưu hóa hiệu suất.
Các thanh ghi chức năng đặc biệt
- Biết được chức năng các thanh ghi đặc biệt
- Biết được địa chỉ, ký hiệu các bit trong các thanh ghi đặc biệt
4.1 Thanh ghi trạng thái chương trình
Từ trạng thái chương trình ở địa chỉ D0H được tóm tắt như sau:
PSW.6 AC D6H Auxiliary Cary Flag
PSW4 RS1 D4H Register Bank Select 1
PSW.3 RS0 D3H Register Bank Select 0
00nk 0; address 00H07H 01nk 1; address 08H0FH 10nk 2; address 10H17H 11nk 3; address 18H1FH
PSW.0 P DOH Even Parity Flag
Chức năng từng bit trạng thái chương trình.
Cờ Carry CY (Cờ nhớ) có chức năng quan trọng trong các phép toán học, với giá trị C=1 khi có sự tràn trong phép cộng hoặc mượn trong phép trừ, và C=0 khi không có tràn hoặc mượn.
Cờ Carry phụ AC (Auxiliary Carry Flag): Khi cộng những giá trị BCD
(Binary Code Decimal), cờ nhớ phụ AC được set nếu kết quả 4 bit thấp nằm trong phạm vi điều khiển 0AH 0FH Ngược lại AC= 0.
Cờ 0 (Flag 0):Cờ 0 (F0) là 1 bit cờ đa dụng dùng cho các ứng dụng của người dùng.
BIT RS0 và RS1 quyết định dãy thanh ghi tích cực bằng cách chọn bank thanh ghi truy xuất Sau khi hệ thống được reset, các bit này sẽ bị xóa và có thể được thay đổi bởi phần mềm khi cần thiết Tùy thuộc vào giá trị của RS1 và RS0 (00, 01, 10, 11), bank tích cực sẽ được chọn tương ứng là Bank 0, Bank 1, Bank 2 và Bank 3.
Cờ tràn OV (Over Flag) được thiết lập khi có sự tràn toán học xảy ra trong quá trình cộng hoặc trừ các số có dấu Phần mềm sẽ kiểm tra bit này để xác định xem kết quả có nằm trong khoảng xác định hay không Đối với các số không có dấu, bit OV sẽ bị bỏ qua Nếu kết quả lớn hơn +127 hoặc nhỏ hơn -128, bit OV sẽ được đặt thành 1.
Bit Parity (P) là bit tự động được thiết lập hoặc xóa trong mỗi chu kỳ máy để đảm bảo số lượng bit 1 trong thanh ghi A luôn chẵn Khi thanh ghi A chứa giá trị 10101101B, bit P sẽ được đặt lên một để tổng số bit 1 của A và P tạo thành số chẵn Bit Parity thường được sử dụng kết hợp với các thủ tục của Port nối tiếp, nhằm tạo ra bit Parity trước khi truyền đi hoặc kiểm tra bit Parity sau khi nhận.
Thanh ghi B tại địa chỉ F0H được sử dụng cùng với thanh ghi A trong các phép toán nhân chia Lệnh MUL AB thực hiện phép nhân các giá trị không dấu 8 bit từ hai thanh ghi A và B, với kết quả 16 bit được lưu vào A (byte cao) và B (byte thấp) Trong khi đó, lệnh DIV AB thực hiện phép chia A cho B, với kết quả nguyên được lưu vào A và số dư vào B Thanh ghi B cũng có thể hoạt động như một thanh ghi đệm trung gian đa mục đích, xác định vị trí thông qua các địa chỉ từ F0H đến F7H.
4.3 Con trỏ Ngăn xếp SP (Stack Pointer)
Con trỏ ngăn xếp là thanh ghi 8 bit tại địa chỉ 81H, chứa địa chỉ byte dữ liệu trên đỉnh ngăn xếp Các lệnh liên quan đến ngăn xếp bao gồm PUSH để cất dữ liệu và POP để lấy dữ liệu Lệnh PUSH sẽ tăng giá trị của SP trước khi ghi dữ liệu, trong khi lệnh POP sẽ giảm giá trị của SP Ngăn xếp của 8031/8051 được lưu trữ trong RAM nội, với khả năng truy xuất giới hạn ở 128 byte đầu của 8951 thông qua địa chỉ gián tiếp.
4.4 Con trỏ dữ liệu DPTR (Data Pointer)
Con trỏ dữ liệu (DPTR) được dùng để truy xuất bộ nhớ ngoài là một thanh ghi 16 bit ở địa chỉ 82H (DPL: byte thấp) và 83H (DPH: byte cao)
4.5 Các thanh ghi Port (Port Register)
Các Port của 8051 bao gồm Port0 (địa chỉ 80H), Port1 (địa chỉ 90H), Port2 (địa chỉ A0H) và Port3 (địa chỉ B0H) Tất cả các Port này cho phép truy xuất từng bit, tạo thuận lợi cho khả năng giao tiếp.
4.6 Các thanh ghi Timer (Timer Register)
Vi điều khiển 8051 có hai bộ định thời/bộ đếm 16 bit, Timer0 và Timer1, dùng để định thời và đếm sự kiện Timer0 được truy cập tại địa chỉ 8AH (TLO: byte thấp) và 8CH (THO: byte cao), trong khi Timer1 tại địa chỉ 8BH (TL1: byte thấp) và 8DH (TH1: byte cao) Việc khởi động các bộ định thời được thực hiện thông qua Timer Mode (TMOD) tại địa chỉ 89H và thanh ghi điều khiển Timer (TCON) tại địa chỉ 88H, với TCON được địa chỉ hóa từng bit.
4.7 Các thanh ghi Port nối tiếp (Serial Port Register)
Vi điều khiển 8051 có một Port nối tiếp cho việc trao đổi thông tin với các thiết bị như máy tính và modem Thanh ghi đệm dữ liệu nối tiếp (SBUF) tại địa chỉ 99H lưu trữ dữ liệu truyền và nhập Để truyền dữ liệu, người dùng ghi vào SBUF, và để nhận dữ liệu, cần đọc từ SBUF Các chế độ vận hành khác nhau được lập trình thông qua thanh ghi điều khiển Port nối tiếp (SCON) tại địa chỉ 98H.
4.8 Các thanh ghi ngắt (Interrupt Register)
Vi điều khiển 8051 có 5 nguồn ngắt và 2 mức ưu tiên Sau khi reset hệ thống, các ngắt sẽ bị cấm và được cho phép bằng cách ghi vào thanh ghi cho phép ngắt (IE) tại địa chỉ A8H Thanh ghi ưu tiên ngắt được lưu tại địa chỉ B8H, cả hai thanh ghi này đều được địa chỉ hóa từng bit.
4 9 Thanh ghi điều khiển nguồn PCON (Power Control Register)
Thanh ghi PCON không có bit định vị Nó ở địa chỉ 87H chứa nhiều bit điều khiển Thanh ghi PCON được tóm tắt như sau:
Bit 7 (SMOD) : Bit có tốc độ Baud ở mode 1, 2, 3 ở Port nối tiếp khi set.
Bit 6, 5, 4 : Không có địa chỉ.
Bit 3 (GF1) : Bit cờ đa năng 1.
Bit 2 (GF0) : Bit cờ đa năng 2
Bit 1 (PD) : Set để khởi động mode Power Down và thoát để reset.
Bit 0 (IDL) : Set để khởi động mode Idle và thoát khi ngắt mạch hoặc reset.
Các bit điều khiển Power Down và Idle có tác dụng chính trong tất cả các
IC họ MSC-51 nhưng chỉ được thi hành trong sự biên dịch của CMOS.
5 Tổ chức bộ nhớ ngoài
- Biết cách truy xuất bộ nhớ chương trình ngoài
- Biết cách truy xuất bộ nhớ dữ liệu ngoài
Các bộ vi điều khiển cần có khả năng mở rộng tài nguyên trên chip như bộ nhớ và I/O để ngăn chặn hiện tượng cổ chai trong thiết kế Cấu trúc của MCS-51 cho phép mở rộng không gian bộ nhớ chương trình lên đến 64 K và không gian bộ nhớ dữ liệu lên đến 64 K, với khả năng thêm ROM và RAM ngoài khi cần thiết.
IC giao tiếp ngoại vi có thể mở rộng khả năng xuất/nhập bằng cách sử dụng định địa chỉ kiểu I/O ánh xạ bộ nhớ Khi sử dụng bộ nhớ ngoài, port 0 không thực hiện chức năng xuất/nhập mà trở thành bus địa chỉ (A0 A7) và bus dữ liệu (D0 D7) đa hợp Ngõ ra ALE chốt một byte thấp của địa chỉ khi bắt đầu chu kỳ bộ nhớ ngoài, trong khi port 2 thường được sử dụng làm byte cao của bus địa chỉ.
Trước khi nghiên cứu cụ thể về bus địa chỉ và dữ liệu đa hợp ý tưởng tổng quat được trình bày ở hình 2.5 a Không đa hợp 24 chân
Bộ nhớ ngoài
Sắp xếp không đa hợp sử dụng tổng cộng 24 đường, bao gồm 16 đường địa chỉ và 8 đường dữ liệu Trong khi đó, sắp xếp đa hợp chỉ cần 16 đường bằng cách kết hợp 8 đường bus dữ liệu với byte thấp của bus địa chỉ Việc này giúp tiết kiệm chân, cho phép đóng gói họ MCS-51 trong vỏ 40 chân.
Sắp xếp đa hợp hoạt động bằng cách sử dụng port 0 để cung cấp byte thấp của địa chỉ trong chu kỳ đầu của chu kỳ bộ nhớ, được chốt nhờ tín hiệu ALE Mạch chốt 74373 giữ cho byte thấp của địa chỉ ổn định trong suốt chu kỳ bộ nhớ Trong chu kỳ sau, Port 0 chuyển sang làm bus dữ liệu để thực hiện việc đọc hoặc ghi dữ liệu.
5.1 Truy xuất bộ nhớ chương trình ngoài
Bộ nhớ chương trình ngoài, được điều khiển bởi tín hiệu PSEN, là loại bộ nhớ chỉ đọc Khi sử dụng ROM ngoài, port 0 và port 2 không còn hoạt động như các port xuất/nhập Kết nối phần cứng với bộ nhớ ngoài được minh họa trong hình 32-02-6.
Một chu kỳ máy của 8051 kéo dài 1us khi bộ dao động trên chip hoạt động ở tần số 12 MHz, với 12 chu kỳ dao động trong mỗi chu kỳ máy Trong chu kỳ máy điển hình, tín hiệu ALE phát ra hai xung và hai byte lệnh được đọc từ bộ nhớ chương trình; nếu lệnh chỉ có một byte, byte thứ hai sẽ bị loại bỏ Giản đồ thời gian của chu kỳ máy này được gọi là chu kỳ tìm-nạp lệnh.
Hình 32-02-7 Chu kỳ tìm nạp lệnh ROM ngoài
5.2 Truy xuất bộ nhớ dữ liệu ngoài
Bộ nhớ dữ liệu ngoài cho phép đọc và ghi thông qua các tín hiệu /RD và /WR trên các chân P3.7 và P3.6 Để truy xuất bộ nhớ này, lệnh sử dụng là MOVX, với con trỏ dữ liệu 16 bit DPTR hoặc các thanh ghi R0, R1 làm địa chỉ.
RAM có thể giao tiếp với 8051 tương tự như EPROM ngoại trừ việc đường /RD kết nối với đường cho phép xuất (/OE) của RAM, trong khi /WR nối với đường ghi (/W) của RAM Các kết nối với bus dữ liệu và bus địa chỉ cũng giống như EPROM Sử dụng port 0 và port 2, ta có thể kết nối RAM ngoài với dung lượng lên tới 64K cho 8051.
Giản đồ thời gian của thao tác đọc dữ liệu ở bộ nhớ dữ liệu ngoài được trình bày ở hình 2.8 cho lệnh MOVX
Hình 32-02-8 Giản đồ thời gian lệnh MOVX
Port 2 trong hệ thống với 1kB RAM giúp giảm bớt chức năng cung cấp byte cao của địa chỉ, phù hợp với các hệ thống tối thiểu hóa thành phần và không sử dụng bộ nhớ chương trình ngoài Hệ thống này chỉ có dung lượng nhỏ bộ nhớ dữ liệu ngoài, với các địa chỉ 8 bít có khả năng truy xuất bộ nhớ dữ liệu theo cấu hình nhỏ hướng trang Nếu có nhiều hơn một trang 256 byte RAM, một vài bít từ port 2 hoặc port khác có thể được sử dụng để chọn trang Ví dụ, với 1kB RAM, hệ thống có thể hỗ trợ 4 trang.
256 byte), ta có thể kết nối RAM này với 8051 như hinh 2.9.
- Hiểu và vẽ được các cách reset ở vi điều khiển
- Biết được giá trị các thanh ghi sau khi 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, có thể thực hiện bằng tay hoặc qua mạch RC khi cấp nguồn Sau khi reset, trạng thái của tất cả các thanh ghi được tóm tắt, trong đó thanh ghi PC (bộ đếm chương trình) được nạp giá trị 0000H Khi RST trở lại mức thấp, chương trình sẽ bắt đầu thực hiện từ địa chỉ 0000H, trong khi nội dung của RAM trên chip không bị ảnh hưởng bởi quá trình reset.
Bảng Giá trị của các thanh ghi sau khi reset hệ thống
00H 00H 0xxxxxxxB 0xxx0000B a Reset bằng tay b Reset khi cấp nguồn Hình 32-02-10 Sơ đồ mạch RESET
Câu 1: Trình bày cấu trúc bộ nhớ vi điều khiển 8051Vi điều khiển.
Câu 2: Nêu cấu trúc phần cứng vi điều khiển 8051 của vi điều khiển?
Câu 3: Trình bày các thanh ghi chức năng đặc biệt của vi điều khiển.
Hoạt động reset
Mã bài: MĐ 15 -03 Giới thiệu :
Vào năm 1981 Hãng Intel giới thiệu một số bộ vi điều khiển được gọi là
Bộ vi điều khiển 8051 tích hợp 128 byte RAM, 4K byte ROM, hai bộ định thời, một cổng nối tiếp và bốn cổng vào ra 8 bit trên một chip, được xem là “hệ thống trên chíp” Là một bộ xử lý 8 bit, CPU của 8051 chỉ xử lý dữ liệu 8 bit tại một thời điểm, và dữ liệu lớn hơn 8 bit sẽ được chia thành các phần 8 bit để xử lý.
8051 có tất cả 4 cổng vào - ra I/O mỗi cổng rộng 8 bit (xem hình 1) Mặc dù
Tập lệnh vi điều khiển 8051
Các nhóm lệnh
- Biết được tập lệnh của vi điều khiển được chia làm mấy loại
- Hiểu và vận dụng được các lệnh của vi điều khiển để viết chương trình
8951 chia ra 5 nhóm lệnh chính:
MULL AB : (A)= LOW [(A) x (B)];có ảnh hưởng cờ OV
: (B)= HIGH [(A) x (B)];cờ Cary được xóa.
DIV AB : (A)= Integer Result of [(A)/(B)]; cờ OV
: (B)= Remainder of [(A)/(B)]; cờ Carry xóa
DA A :Điều chỉnh thanh ghi A thành số BCD đúng
; trong phép cộng BCD (thường DA A đi kèm
Tất cả các lệnh logic sử dụng thanh ghi A đều thực hiện trong một chu kỳ máy, trong khi các lệnh khác mất thêm 2 chu kỳ máy Các hoạt động logic có thể được thực hiện trực tiếp trên bất kỳ byte nào trong bộ nhớ dữ liệu mà không cần thông qua thanh ghi A.
Các hoạt động logic được tóm tắt như sau:
ANL direct, A ; (direct)=(direct) AND (A).
ANL direct, # data ; (direct)=(direct) AND # data.
ORL direct, A ; (direct)=(direct) OR (A).
ORL direct, # data ; (direct)=(direct) OR # data.
XRL direct, A ; (direct)=(direct)Xor(A).
XRL direct, # data ; (direct)=(direct)Xor # data.
RL A ; Quay vòng thanh ghi A qua trái 1 bit
RLC A ; Quay vòng thanh ghi A qua trái 1
;bit có cờ Carry ;bit (An + 1)=(An); n = 06 ;(A0)=(C)
RR A ; Quay vòng thanh ghi A qua phải 1 bit
RRC A ; Quay vòng thanh ghi A qua phải 1
;bit có cờ Carry (An + 1)=(An); n = 06 (A7)=(C)
(C)=(A0) SWAPA ; Đổi chổ 4 bit thấp và 4 bit cao của A cho
2.3 Nhóm lệnh di chuyển dữ liệu
Các lệnh dịch chuyển dữ liệu trong bộ nhớ nội thực hiện trong 1 hoặc 2 chu kỳ máy Lệnh MOV , cho phép di chuyển dữ liệu giữa hai vùng nhớ trong RAM hoặc từ các thanh ghi chức năng đặc biệt mà không cần sử dụng thanh ghi A.
Vùng Ngăn xếp của 8951 chỉ có 128 byte RAM nội, vì vậy nếu con trỏ Ngăn xếp SP vượt quá địa chỉ 7FH, các byte được PUSH vào sẽ bị mất và các byte POP ra sẽ không còn rõ ràng.
Các lệnh dịch chuyển bộ nhớ nội và bộ nhớ ngoại dùng sự định vị gián
DPTR) Tất cả các lệnh dịch chuyển hoạt động trên toàn bộ nhớ ngoài thực thi trong 2 chu kỳ máy và dùng thanh ghi A làm toán hạng DESTINATION.
Trong quá trình thực thi lệnh MOVX, việc đọc và ghi RAM ngoài (RD và WR) chỉ được kích hoạt, trong khi ở trạng thái bình thường, RD và WR không hoạt động (mức 1).
Tất cả các lệnh dịch chuyển đều không ảnh hưởng đến cờ Hoạt động của từng lệnh được tóm tắt như sau:
MOV Rn, direct ; (Rn)= (direct)
MOV Rn, # data ; (Rn)= data
MOV direct, Rn ; (direct)= (Rn)
MOV direct, direct ; (direct)= (direct)
MOV direct, @ Ri ; (direct)= ((Ri))
MOV direct, # data ; (direct)= data
MOV @ Ri, direct ; ((Ri)) = (direct)
MOV @ Ri, # data ; ((Ri))= data
MOV DPTR, # data16 ; (DPTR) # data16
PUSH direct ; Cất dữ liệu vào Ngăn xếp
; (SP)= (Drirect) POP direct ; Lấy từ Ngăn xếp ra direct
;(direct) ((SP)) ;(SP)= (SP) - 1 XCH A, Rn ;Đổi chổ nội dung của A với Rn
XCHD A, @ Ri ;Đổi chổ 4 bit thấp của (A) với ((Ri))
2.4 Nhóm lệnh xử lý bit
Vi điều khiển 8951 sở hữu một bộ xử lý luận lý hoàn chỉnh, cho phép thực hiện các hoạt động bit đơn, điều này tạo ra lợi thế nổi bật cho dòng vi điều khiển MSC-51 so với các dòng vi điều khiển khác.
RAM có cấu trúc 128 bit với các vùng nhớ cho các thanh ghi chức năng đặc biệt lên đến 128 đơn vị Tất cả các đường Port được định vị theo từng bit, cho phép xử lý mỗi đường như một Port riêng biệt Phương pháp truy xuất các bit này không chỉ bao gồm các lệnh rẽ nhánh mà còn là một tập hợp đầy đủ các lệnh khác.
Sự truy xuất của bit sử dụng định vị trực tiếp với các địa chỉ từ 00H - 7FH trong 128 vùng nhớ thấp và từ 80H - FFH trong các vùng thanh ghi chức năng đặc biệt.
Bit Carry trong thanh ghi PSW là một phần quan trọng của từ trạng thái chương trình, đóng vai trò như một sự tích lũy đơn của bộ xử lý logic Bit Carry không chỉ là một bit định vị mà còn có địa chỉ trực tiếp trong PSW Hai lệnh CLR C và CLR CY đều có chức năng xóa bit cờ Carry, tuy nhiên, lệnh CLR C chỉ tiêu tốn 1 byte, trong khi lệnh CLR CY tiêu tốn 2 byte.
Hoạt động của các lệnh luận lý được tóm tắt như sau.
CLR C ; Xóa cờ Carry xuống 0 Có ảnh hưởng cờ Carry.
CLR BIT ; Xóa bit xuống 0 Không ảnh hưởng cờ Carry
SET C ; Set cờ Carry lên 1 Có ảnh hưởng cờ Carry.
SET BIT ; Set bit lên 1 Không ảnh hưởng cờ Carry.
CPL C ; Đảo bit cờ Carry Có ảnh hưởng cờ Carry.
CPL BIT ; Đảo bit Không ảnh hưởng cờ Carry.
ANL C, BIT ; (C) = (C) AND (BIT) : Có ảnh hưởng cờ Carry.
ANL C, /BIT ; (C) = (C) AND NOT (BIT)
;Không ảnh hưởng cờ Carry.
ORL C, BIT ; (C) = (C) OR (BIT) : Tác động cờ Carry.
ORL C, /BIT ; (C) = (C) OR NOT (BIT) : Tác động cờ Carry.
MOV C, BIT ; (C) = (BIT) : Cờ Carry bị tác động.
MOV BIT, C ; (BIT) = (C) : Không ảnh hưởng cờ Carry.
2.5 Nhóm lệnh rẽ nhánh chương trình
Có nhiều lệnh trong lập trình để điều khiển chương trình, bao gồm việc gọi hoặc trả giá trị từ chương trình con, cũng như thực hiện các nhánh điều kiện có hoặc không có điều kiện.
Tất cả lệnh rẽ nhánh không làm thay đổi cờ, cho phép định nhãn cho điểm nhảy mà không cần chỉ rõ địa chỉ Trình biên dịch sẽ tự động chèn địa chỉ của điểm nhảy vào khẩu lệnh tương ứng.
Sau đây là sự tóm tắt từng hoạt động của lệnh nhảy.
JC rel : Nhảy đến “rel” nếu cờ Carry C = 1.
JNC rel : Nhảy đến “rel” nếu cờ Carry C = 0.
JB bit, rel : Nhảy đến “rel” nếu (bit) = 1.
JNB bit, rel : Nhảy đến “rel” nếu (bit) = 0.
JBC bit, rel : Nhảy đến “rel” nếu bit = 1 và xóa bit.
ACALL addr11 : Lệnh gọi tuyệt đối trong page 2K.
(PC) = (PC) + 2 (SP) = (SP) + 1 ((SP))= (PC7PC0) (SP) = (SP) + 1 ((SP)) = (PC15PC8) (PC10PC0) page Address.
LCALL addr16 ;Lệnh gọi dài chương trình con trong 64K.
(PC)= (PC) + 3(SP) = (SP) + 1((SP)) = (PC7PC0)(SP) = (SP) + 1((SP)) = (PC15PC8)(PC) Addr15Addr0.
(PC15PC8) (SP) (SP)= (SP) - 1 (PC7PC0) = ((SP)) (SP)= (SP) -1.
RETI ;Kết thúc thủ tục phục vụ ngắt quay về chương trình
;chính hoạt động tương tự như RET.
AJMP Addr11 ;Nhảy tuyệt đối không điều kiện trong 2K.
LJMP Addr16 : Nhảy dài không điều kiện trong 64K
;Hoạt động tương tự lệnh LCALL.
SJMP rel ;Nhảy ngắn không điều kiện trong
;(-128127) byte (PC)= (PC) + 2 (PC)= (PC) + byte 2 JMP @ A + DPTR ;Nhảy không điều kiện đến địa chỉ
JZ rel : Nhảy đến A = 0 Thực hành lệnh kế nếu A 0.
;(A) = 0 (PC)= (PC) + byte 2 JNZ rel ; Nhảy đến A 0 Thực hành lệnh kế nếu A = 0.
CJNE A, direct, rel ;So sánh và nhảy đến (A) ( direct)
;(A) < > (direct) (PC)= (PC) + Relative ;Address.
;(A) = (direct) Thực hành lệnh kế tiếp CJNE A, # data, rel : Tương tự lệnh CJNE A, ;direct, rel.
CJNE Rn,#data, rel ;Tương tự lệnh CJNE A, direct, rel.
CJNE @Ri,#data,rel ;Tương tự lệnh CJNE A, direct, rel.
DJNZ Rn,rel ;Giảm Rn và nhảy nếu Rn 0.
DJNZ direct, rel ; Tương tự lệnh DJNZ Rn, rel.
NOP ; Không hoạt động gì cả, chỉ tốn 1 byte và 1 chu kỳ máy
THỰC HÀNH VỚI TẬP LỆNH 8051
- Giúp sinh viên làm quen với thiết bị và tìm hiểu một số nhóm lệnh quan trọng trong tập lệnh của 8051
- Hiểu rõ hơn về tập lệnh của vi điều khiển MCS-51
- Biết cách viết các chương trình điều khiển LED đơn ở các chế độ khác nhau
- Hiểu được sơ đồ và nguyên lý hoạt động của khối LED đơn trên mô hình thí nghiệm
II NỘI DUNG THÍ NGHIỆM
Các led tương ứng từ led1 đến led8 sẽ nối với các bit P2.0 đến P2.7 theo hình vẽ sau: b Viết chương các trình ứng dụng:
Chương trình 1.1: Chớp tắt 8 led vô hạn lần
MOV P2,#0FFH ; P1