chương 1 [1] Tống Văn On, Họ vi điều khiển 8051, NXB Lao động Xã hội, Hà Nội, 2007. [2] Ngô Diên Tập, Vi điều khiển với lập trình C, NXB Khoa học Kỹ thuật, Hà Nội, 2006. [3] Nguyễn Đình Phú, Trương Ngọc Anh, Giáo trình vi điều khiển, NXB Đại học Sư phạm Kỹ thuật, 2006. HỌ VI ĐIỀU KHIỂN MCS-51 2.
Sơ đồ và chức năng các chân của họ 8051 2. Sơ đồ cấu trúc 8051 là một họ vi điều khiển do Intel phát triển và sản xuất. Một số nhà sản xuất được phép cung cấp các IC tương thích với các sản phẩm 8051 của Intel là Siemens, Advanced Micro Devices, Fujitsu, Philips, Atmel… Các IC của họ 8051 có các đặc trưng chung như sau [2]: 4 port I/O x 8 bit; Giao tiếp nối tiếp; 64K không gian bộ nhớ chương trình mở rộng; 64K không gian bộ nhớ dữ liệu mở rộng; Một bộ xử lý luận lý (thao tác trên các bit đơn); 210 bit được địa chỉ hóa; Bộ nhân/chia 4 s. Ngoài ra, tùy theo số hiệu sản xuất mà chúng có những khác biệt về bộ nhớ và bộ định thời/bộ đếm như trong bảng 2.1 dưới đây: Bảng 2.1: Các tham số RAM/ROM của họ 8051 Số hiệu sản xuất Bộ nhớ chương Bộ nhớ dữ liệu trên Số bộ định thời trình trên chip chip (bộ đếm) 80x51 4K ROM 128 byte 2 87x51 4K EPROM 128 byte 2 89x51 4K FLASH 128 byte 2 80x32 0K 256 byte 3 80x52 8K ROM 256 byte 3 87x52 8K EPROM 256 byte 3 89x52 8K FLASH 256 byte 3 AT89C51 là một Microcomputer 8 bit, thuộc họ 8051 loại CMOS, có tốc độ cao và công suất thấp với bộ nhớ Flash có thể lập trình được.
Nó được sản xuất với công nghệ bộ nhớ không bay hơi mật độ cao của hãng Atmel, và tương thích với chuẩn 14 công nghiệp của 8xC51 và 8xC52 về chân ra và bộ lệnh. Vì lý do đó, kể từ đây về sau ta sẽ dùng thuật ngữ “8051” (hoặc "89C51" là tương đương nhau).1: Sơ đồ khối của AT89C51 2. Chức năng các chân Như vậy, AT89C51 có tất cả 40 chân. Mỗi chân có chức năng như các đường I/O (xuất/nhập), trong đó 24 chân có công dụng kép: mỗi đường có thể hoạt động như một đường I/O hoặc như một đường điều khiển hoặc như thành phần của bus địa chỉ và bus dữ liệu [3].
Mô tả các chân họ 8051: - VCC (chân 40): Chân cấp nguồn; - GND (chân 20): Chân nối đất; - Port 0: Port 0 là một port xuất/nhập song hướng cực máng hở 8 bit. Nếu được sử dụng như là một ngõ xuất thì mỗi chân có thể kéo 8 ngõ vào lên mức cao. Khi mức “1” được viết vào các chân của port 0, các chân này có thể được dùng như là các ngõ nhập tổng trở cao. Port 0 cũng nhận các byte code (byte mã chương trình) khi lập trình Flash, và xuất ra các byte code khi kiểm tra chương trình.
Cần có các điện trở pullup (5k-10k) bên ngoài khi thực hiện việc kiểm tra chương trình. - Port 1: Port 1 là một port xuất/nhập song hướng 8 bit có các điện trở pullup bên trong. Các bộ đệm ngõ ra của port 1 có thể kéo hoặc cung cấp 4 ngõ nhập TTL. Khi mức “1” được viết vào các chân của port 1, chúng được kéo lên cao bởi các điện 15 trở pullup nội và có thể được dùng như là các ngõ nhập.
Nếu đóng vai trò là các ngõ nhập, các chân của port 1 (được kéo xuống thấp qua các điện trở bên ngoài) sẽ cấp dòng IIL do các điện trở pullup bên trong.2: Sơ đồ chân của AT89C51 - Port 2: Port 2 là một port xuất/nhập song hướng 8 bit có các điện trở pullup bên trong. Các bộ đệm ngõ ra của port 2 có thể kéo hoặc cung cấp 4 ngõ vào TTL. Khi các mức “1” được viết vào các chân của port 2 thì chúng được kéo lên cao bởi các điện trở pullup nội và có thể được dùng như các ngõ vào. Khi được dùng như các ngõ vào, các chân của port 2 (được kéo xuống “0” qua các điện trở bên ngoài) sẽ cấp dòng IIL do có các điện trở pullup bên trong.
- Port 3: Port 3 là một port xuất - nhập song hướng 8 bit có điện trở pullup nội bên trong. Các bộ đệm ngõ ra của port 3 có thể kéo hoặc cung cấp 4 ngõ vào TTL. Khi các mức “1” được viết vào các chân của port 3 thì chúng được kéo lên cao bởi các điện trở pullup nội và có thể được dùng như các ngõ vào. Khi được dùng như các ngõ vào, các chân của port 3 (được kéo xuống qua các điện trở bên ngoài) sẽ cấp dòng IIL do có các điện trở pullup bên trong.
Port 3 cũng cung cấp các chức năng của các đặc trưng đặc biệt như được liệt kê dưới đây: Bảng 2.2: Các chức năng chuyển đổi trên Port 3 Chân Tên Các chức năng chuyển đổi P3.0 RXD Port nhập nối tiếp P3.1 TXD Port xuất nối tiếp 16 P3.2 INT0 Ngắt 0 bên ngoài P3.3 Ngắt 1 bên ngoài INT1 P3.4 Ngõ vào Timer/Counter 0 T0 P3.5 Ngõ vào Timer/Counter 1 T1 P3.6 Xung ghi bộ nhớ dữ liệu ngoài WR P3.7 Xung đọc bộ nhớ dữ liệu ngoài RD - RST (chân 9): Ngõ vào reset. Một mức cao trên chân này khoảng hai chu kỳ máy trong khi bộ dao động đang chạy sẽ reset toàn bộ hệ thống. - ALE/PROG: ALE là một xung ngõ ra để chốt byte thấp của địa chỉ trong khi truy cập bộ nhớ ngoài. Chân này cũng là ngõ nhập xung lập trình (PROG) khi lập trình Flash.
Khi hoạt động bình thường, ALE được phát với một tỷ lệ không đổi là 1/6 tần số bộ dao động và có thể được dùng cho các mục đích timing và clocking bên ngoài. Tuy nhiên, lưu ý rằng một xung ALE sẽ bị bỏ qua mỗi khi truy cập bộ nhớ dữ liệu ngoài. Nếu muốn hoạt động ALE có thể cấm được bằng cách set bit 0 của SFR tại địa chỉ 8Eh. Nếu bit này được set, ALE chỉ hoạt động được khi có một lệnh MOVX hoặc MOVC.
Ngược lại, chân này được kéo lên cao bởi các điện trở pullup "nhẹ". Việc set bit cấm-ALE không có tác dụng khi bộ vi điều khiển đang ở chế độ thực thi bộ nhớ ngoài. - PSEN: PSEN (Program Store Enable) là xung đọc bộ nhớ chương trình ngoài. Khi AT89C52 đang thi hành mã (code) từ bộ nhớ chương trình ngoài, PSEN được kích hoạt hai lần mỗi chu kỳ máy, nhưng hai hoạt động PSEN sẽ bị bỏ qua mỗi khi truy cập bộ nhớ dữ liệu ngoài.
- EA/Vpp: EA (External Access Enable) phải được nối với GND để cho phép thiết bị đọc code từ bộ nhớ chương trình ngoài có địa chỉ từ 0000H đến FFFFH. Tuy nhiên, lưu ý rằng nếu bit khoá “1” (lock-bit 1) được lập trình, EA sẽ được chốt bên trong khi reset. EA phải được nối với Vcc khi thi hành chương trình bên trong. Chân này cũng nhận điện áp cho phép lập trình Vpp = 12V khi lập trình Flash (khi đó áp lập trình 12V được chọn).
17 - XTAL1 và XTAL2: XTAL1 và XTAL2 là hai ngõ vào và ra của một bộ khuếch đại dao động nghịch được cấu hình để dùng như một bộ dao động trên chip. Không có yêu cầu nào về dao động của tín hiệu xung ngoài, vì ngõ nhập nối với mạch tạo xung nội là một flip-flop chia đôi, nhưng các chỉ định về thời gian high và low, các mức áp tối đa và tối thiểu phải được tuân theo. Tổ chức bộ nhớ họ 8051 Họ 8051 có bộ nhớ theo cấu trúc Harvard: có những vùng nhớ riêng biệt cho chương trình và dữ liệu. Như đã nói ở trên, cả chương trình và dữ liệu có thể ở bên trong dù vậy chúng có thể được mở rộng bằng các thành phần bên ngoài lên đến tối đa 64 Kbytes bộ nhớ chương trình (ROM) và 64 Kbytes bộ nhớ dữ liệu (RAM).
Bộ nhớ bên trong bao gồm ROM và RAM trên chip, RAM trên chip bao gồm nhiều phần: phần lưu trữ đa dụng, phần lưu trữ địa chỉ hóa từng bit, các bank thanh ghi và các thanh ghi chức năng đặc biệt. Hai đặc tính cần lưu ý là: - Các thanh ghi và các port xuất nhập đã được xếp trong bộ nhớ và có thể được truy xuất trực tiếp giống như các địa chỉ bộ nhớ khác. - Ngăn xếp bên trong RAM nội nhỏ hơn so với RAM ngoài như trong các bộ vi xử lý khác. Tổ chức bộ nhớ ROM Nếu có nhiều EPROM hoặc nhiều RAM hoặc cả 2 giao tiếp với 8051 ta cần phải giải mã địa chỉ.
Việc giải mã này cũng cần cho hầu hết các bộ vi xử xý khác. Thí dụ nếu các RAM và ROM 8Kb được sử dụng, địa chỉ phải được giải mã để chọn các IC nhớ này trên các giới hạn 8K: 0000H – 1FFFH, 2000H – 3FFFH… Một IC giải mã điển hình là 74HC138 được dùng với các ngõ ra được nối với các ngõ vào chọn chip /CS của các IC nhớ. Chúng được mô tả ở Hình 2.7, một bộ nhớ có EPROM 2764 (8K) và RAM 6264 (RAM). 8051 có thể quản lý không gian nhớ đến 64K bộ nhớ EPROM và 64K bộ nhớ RAM.
Tổ chức bộ nhớ RAM Như ta thấy trên Hình 2.3, RAM bên trong 8051/8031 được phân chia giữa các bank thanh ghi (00H–1FH), RAM địa chỉ hóa từng bit (20H–2FH), RAM đa dụng (30H–7FH) và các thanh ghi chức năng đặc biệt (80H–FFH). Vùng RAM đa dụng Mặc dù trên hình 2.3 cho thấy 80 byte RAM đa dụng chiếm các địa chỉ từ 30H– 7FH, 32 byte dưới cùng từ 00H đến 1FH cũng có thể được dùng với mục đích tương tự (mặc dù các địa chỉ này đã có mục đích khác). Mọi địa chỉ trong vùng RAM đa dụng đều có thể được truy xuất tự do dùng cách đánh địa chỉ trực tiếp hoặc gián tiếp.3: Tóm tắt bộ nhớ dữ liệu trên chip Ví dụ 2.1: Để đọc nội dung ở địa chỉ 5FH của RAM nội vào thanh ghi tích lũy, lệnh sau sẽ được dùng. 19 MOV A, 5FH Lệnh này di chuyển một byte dữ liệu dùng cách đánh địa chỉ trực tiếp để xác định “địa chỉ nguồn” (5FH).
Đích nhận dữ liệu được ngầm xác định trong mã lệnh là thanh ghi tích lũy A. RAM bên trong cũng có thể được truy xuất dùng cách đánh địa chỉ gián tiếp qua R0 hay R1. So sánh hai lệnh sau thi hành cùng nhiệm vụ như lệnh đơn ở trên: MOV R0, 5FH MOV A, @R0 Lệnh đầu dùng địa chỉ tức thời để di chuyển giá trị 5FH vào thanh ghi R0, và lệnh thứ hai dùng địa chỉ trực tiếp để di chuyển dữ liệu “được trỏ bởi R0” vào thanh ghi tích lũy.