Chương I. GIỚI THIỆU CHUNG VỀ BỘ VI XỬ LÝ Trang 8 Điều khiển logic. - Program Counter: Bộ đếm chương trình. - Instructions/Addresses: Các lệnh / địa chỉ.
LỰA CHỌN BỘ VI ĐIỀU KHIỂN KHI THIẾT KẾ: Có bốn họ vi điều khiển thông dụng trên thị trường hiện nay là: 68xxx của Motorola, 80xxx của Intel, Z8xx của Zilog và PIC16xxx của Microchip Technology. Mỗi loại vi điều khiển trên đều có một tập lệnh và thanh ghi riêng nên chúng không tương thích lẫn nhau. Vậy khi ta tiến hành thiết kế một hệ thống sử dụng vi điều khiển thì ta cần dựa trên những tiêu chuẩn nào? Có ba tiêu chẩn chính: 1. Tiêu chuẩn thứ nhất Đáp ứng yêu cầu tính toán một cách hiệu quả và kinh tế.
Do vậy, trước tiên ta cần phải xem xét bộ vi điều khiển 8 bit, 16 bit hay 32 bit là thích hợp nhất. Một số tham số kỹ thuật cần được cân nhắc khi chọn lựa là: - Tốc độ: tốc độ lớn nhất mà vi điều khiển hỗ trợ là bao nhiêu. - Kiểu IC: là kiểu 40 chân DIP, QFP hay là kiểu đóng vỏ khác (DIP: vỏ dạng hai hàng chân, QFP: vỏ vuông dẹt). Kiểu đóng vỏ rất quan trọng khi có yêu cầu về không gian, kiểu lắp ráp và tạo mẫu thử cho sản phẩm cuối cùng.
- Công suất tiêu thụ: là một tiêu chuẩn cần đặc biệt lưu ý nếu sản phẩm dùng pin hoặc điện áp lưới. - Dung lượng bộ nhớ ROM và RAM tích hợp sẵn trên chip. - Số chân vào/ra và bộ định thời trên chip. - Khả năng dễ dàng nâng cao hiệu suất hoặc giảm công suất tiêu thụ.
- Giá thành trên một đơn vị khi mua số lượng lớn. Vì đây là vấn đề có ảnh hưởng đến giá thành cuối cùng của sản phẩm. Tiêu chuẩn thứ hai Có sẵn các công cụ phát triển phần mềm, chẳng hạn như các chương trình mô phỏng, trình biên dịch, trình hợp dịch và gỡ rối. Tiêu chuẩn thứ ba Khả năng đáp ứng về số lượng ở hiện tại cũng như ở tương lai.
Đối với một số nhà thiết kế thì tiêu chuẩn này thậm chí còn quan trọng hơn cả hai tiêu chuẩn trên. Chương II. TỔNG QUAN VỀ VI ĐIỀU KHIỂN MCS-51 Trang 9 Chương II. TỔNG QUAN VỀ VI ĐIỀU KHIỂN MCS-51 Chương này giới thiệu tổng quan về họ vi điều khiển MCS-51(chủ yếu trên AT89C51):cấu trúc phần cứng, sơ đồ chân, các thanh ghi, đặc tính lập trình và các đặc tính về điện.
GIỚI THIỆU Họ vi điều khiển MCS-51 do Intel sản xuất đầu tiên vào năm 1980 là các IC thiết kế cho các ứng dụng hướng điều khiển. Các IC này chính là một hệ thống vi xử lý hoàn chỉnh bao gồm các các thành phần của hệ vi xử lý:CPU, bộ nhớ, các mạch giao tiếp, điều khiển ngắt. MCS-51 là họ vi điều khiển sử dụng cơ chế CISC (Complex Instruction Set Computer), có độ dài và thời gian thực thi của các lệnh khác nhau. Tập lệnh cung cấp cho MCS-51 có các lệnh dùng cho điều khiển xuất / nhập tác động đến từng bit.
MCS-51 bao gồm nhiều vi điều khiển khác nhau, bộ vi điều khiển đầu tiên là 8051 có 4KB ROM, 128 byte RAM và 8031, không có ROM nội, phải sử dụng bộ nhớ ngoài. Sau này, các nhà sản xuất khác như Siemens, Fujitsu, … cũng được cấp phép làm nhà cung cấp thứ hai. MCS-51 bao gồm nhiều phiên bản khác nhau, mỗi phiên bản sau tăng thêm một số thanh ghi điều khiển hoạt động của MCS-51. VI ĐIỀU KHIỂN AT89C51 AT89C51 là vi điều khiển do Atmel sản xuất, chế tạo theo công nghệ CMOS có các đặc tính như sau: - 4 KB FPEROM (Flash Programmable and Erasable Read Only Memory), có khả năng tới 1000 chu kỳ ghi xoá.
- Tần số hoạt động từ: 0Hz đến 24 MHz - 3 mức khóa bộ nhớ lập trình - 128 Byte RAM nội. - 4 Port xuất /nhập I/O 8 bit. - 2 bộ Timer/counter 16 Bit. - Giao tiếp nối tiếp điều khiển bằng phần cứng.
- 64 KB vùng nhớ mã ngoài, 64 KB vùng nhớ dữ liệu ngoài. - Cho phép xử lý bit. - 210 vị trí nhớ có thể định vị bit. - 4 chu kỳ máy (4 µs đối với thạch anh 12MHz) cho hoạt động nhân hoặc chia.
Ngoải ra, một số IC khác của họ MCS-51 có thêm bộ định thời thứ 3 và 256 byte RAM nội. Chương II. TỔNG QUAN VỀ VI ĐIỀU KHIỂN MCS-51 Trang 10 1. Sơ đồ khối AT89C51 Hình 2.1 – Sơ đồ khối của AT89C51 AT89C51 gồm có 40 chân, mô tả như sau: Port 0 là port có 2 chức năng ở các chân 32 – 39 của AT89C51: - Chức năng IO (xuất / nhập): dùng cho các thiết kế nhỏ.
Tuy nhiên, khi dùng chức năng này thì Port 0 phải dùng thêm các điện trở kéo lên (pull-up), giá trị của điện trở phụ thuộc vào thành phần kết nối với Port. Khi dùng làm ngõ ra, Port 0 có thể kéo được 8 ngõ TTL. Khi dùng làm ngõ vào, Port 0 phải được set mức logic 1 trước đó. Chương II.
TỔNG QUAN VỀ VI ĐIỀU KHIỂN MCS-51 Trang 11 Hình 2.2 – Sơ đồ chân của AT89C51 - Chức năng địa chỉ / dữ liệu đa hợp: khi dùng các thiết kế lớn, đòi hỏi phải sử dụng bộ nhớ ngoài thì Port 0 vừa là bus dữ liệu (8 bit) vừa là bus địa chỉ (8 bit thấp). Ngoài ra khi lập trình cho AT89C51, Port 0 còn dùng để nhận mã khi lập trình và xuất mã khi kiểm tra (quá trình kiểm tra đòi hỏi phải có điện trở kéo lên) Port 1: Port1 (chân 1 – 8) chỉ có một chức năng là IO, không dùng cho mục đích khác (chỉ trong 8032/8052/8952 thì dùng thêm P1.1 cho bộ định thời thứ 3). Tại Port 1 đã có điện trở kéo lên nên không cần thêm điện trở ngoài. Port 1 có khả năng kéo được 4 ngõ TTL và còn dùng làm 8 bit địa chỉ thấp trong quá trình lập trình hay kiểm tra.
Khi dùng làm ngõ vào, Port 1 phải được set mức logic 1 trước đó. Port 2: Port 2 (chân 21 – 28) là port có 2 chức năng: - Chức năng IO (xuất / nhập):có khả năng kéo được 4 ngõ TTL. - Chức năng địa chỉ:dùng làm 8 bit địa chỉ cao khi cần bộ nhớ ngoài có địa chỉ 16 bit. Khi đó, Port 2 không được dùng cho mục đích IO.
Khi dùng làm ngõ vào, Port 2 phải được set mức logic 1 trước đó. Khi lập trình, Port 2 dùng làm 8 bit địa chỉ cao hay một số tín hiệu điều khiển. Port 3: Port 3 (chân 10 – 17) là port có 2 chức năng: - Chức năng IO: có khả năng kéo được 4 ngõ TTL. Chương II.
TỔNG QUAN VỀ VI ĐIỀU KHIỂN MCS-51 Trang 12 Khi dùng làm ngõ vào, Port 3 phải được set mức logic 1 trước đó. - Chức năng khác: mô tả như Bảng 2.1: Chức năng các chân của Port 3 Bit Tên Chức năng P3.0 RxD Ngõ vào port nối tiếp P3.1 TxD Ngõ ra port nối tiếp P3.2 INT0 Ngắt ngoài 0 P3.3 INT1 Ngắt ngoài 1 P3.4 T0 Ngõ vào của bộ định thời 0 P3.5 T1 Ngõ vào của bộ định thời 1 P3.6 WR Tín hiệu điều khiển ghi dữ liệu lên bộ nhớ ngoài.7 RD Tín hiệu điều khiển đọc từ bộ nhớ dữ liệu ngoài. Nguồn: Chân 40:VCC = 5V ± 20% Chân 20:GND PSEN (Program Store Enable): PSEN (chân 29) cho phép đọc bộ nhớ chương trình mở rộng đối với các ứng dụng sử dụng ROM ngoài, thường được nối đến chân OC (Output Control) của ROM để đọc các byte mã lệnh. PSEN sẽ ở mức logic 0 trong thời gian AT89C51 lấy lệnh.Trong quá trình này, PSEN sẽ tích cực 2 lần trong 1 chu kỳ máy.
Mã lệnh của chương trình được đọc từ ROM thông qua bus dữ liệu (Port0) và bus địa chỉ (Port0 + Port2). Khi 8951 thi hành chương trình trong ROM nội, PSEN sẽ ở mức logic 1. ALE/ PROG (Address Latch Enable / Program): ALE/ PROG (chân 30) cho phép tách các đường địa chỉ và dữ liệu tại Port 0 khi truy xuất bộ nhớ ngoài. ALE thường nối với chân Clock của IC chốt (74373, 74573).
Các xung tín hiệu ALE có tốc độ bằng 1/6 lần tần số dao động trên chip và có thể được dùng làm tín hiệu clock cho các phần khác của hệ thống. Xung này có thể cấm bằng cách set bit 0 của SFR tại địa chỉ 8Eh lên 1. Khi đó, ALE chỉ có tác dụng khi dùng lệnh MOVX hay MOVC. Ngoài ra, chân này còn được dùng làm ngõ vào xung lập trình cho ROM nội ( PROG ).
EA /VPP (External Access): EA (chân 31) dùng để cho phép thực thi chương trình từ ROM ngoài. Khi nối chân 31 với Vcc, AT89C51 sẽ thực thi chương trình từ ROM nội (tối đa 8KB), ngược lại thì thực thi từ ROM ngoài (tối đa 64KB). Chương II. TỔNG QUAN VỀ VI ĐIỀU KHIỂN MCS-51 Trang 13 Ngoài ra, chân EA được lấy làm chân cấp nguồn 12V khi lập trình cho ROM.
RST (Reset): RST (chân 9) cho phép reset AT89C51 khi ngõ vào tín hiệu đưa lên mức 1 trong ít nhất là 2 chu kỳ máy. X1,X2: Ngõ vào và ngõ ra bộ dao động, khi sử dụng có thể chỉ cần kết nối thêm thạch anh và các tụ như hình vẽ trong sơ đồ. Tần số thạch anh thường sử dụng cho AT89C51 là 12Mhz. Giá trị C1, C2 = 30 pF ± 10 pF Hình 2.3 – Sơ đồ kết nối thạch anh 2.
Định thì chu kỳ máy Một chu kỳ máy bao gồm 6 trạng thái (12 xung clock). Một trạng thái bao gồm 2 phần ứng với 12 xung clock: Phase 1 và Phase 2. Như vậy, một chu kỳ máy bao gồm 12 xung clock được biểu diễn từ S1P1 đến S6P2 (State 1, Phase 1 - State 6, Phase 2). Chu kỳ lấy lệnh và thực thi lệnh mô tả như Hình 2.
Tín hiệu chốt địa chỉ ALE tích cực 2 lần trong một chu kỳ máy (trong khoảng thời gian S1P2 đến S2P1 và từ S4P2 đến S5P1). Từ đó tần số xung tại chân ALE bằng 1/6 tần số thạch anh. Đối với các lệnh thực thi trong 1 chu kỳ: - Lệnh 1 byte: được thực thi tại thời điểm S1P2 sau khi mã lệnh được chốt vào thanh ghi lệnh tại S1P1. - Lệnh 2 byte: byte thứ 2 được đọc tại thời điểm S4 và sẽ được thực thi tại thời điểm S4.
Đối với các lệnh thực thi trong 2 chu kỳ: Quá trình lấy lệnh thực hiện tại thời điểm S1 của chu kỳ đầu tiên. Nếu lệnh có nhiều hơn 1 byte thì sẽ được lấy ở các thời điểm tiếp theo giống như các lệnh thực thi trong 1 chu kỳ. Chương II. TỔNG QUAN VỀ VI ĐIỀU KHIỂN MCS-51 Trang 14 Hình 2.4 – Chu kỳ lệnh 3.
Tổ chức bộ nhớ Hình 2.5 - Các vùng nhớ trong AT89C51 Chương II.