CHƯƠNG 1: TÓM LƯỢC CÁC VẤN ĐỀ LÍ THUYẾT LIÊN QUAN ĐỀ TÀI Đề tài : “Điện năng kế điện tử giao tiếp máy tính” có liên quan đến nhiều vấn đề lí thuyết. Nhưng trong phạm vi của một Luận Văn Tốt Nghiệp, người làm đề tài không thể trình bày chi tiết từng vấn đề được, mà chỉ đề cập đến một cách tóm lược nhằm làm cơ sở cho các lí luận sau này. Do vậy nếu các bạn sinh viên nếu có nhu cầu tìm hiểu sâu hơn hãy nên tham khảo trong các tài liệu chuyên môn của ngành. VI ĐIỀU KHIỂN 8951 I.
MÔ TẢ CẤU TRÚC PHẦN CỨNG CỦA VI ĐIỀU KHIỂN 8951. 1/ Giới thiệu họ MCS51: MCS51 là một họ IC vi điều khiển (Microcontroller ) do hãng Intel sản xuất. Các IC tiêu biểu cho họ MCS51 là 8051 và 8031. Đặc biệt, vi điều khiển 8951 được sản xuất gần đây mang các đặc điểm sau: § 4 Kbytes EEPROM.
§ 2 bộ định thời (timer) 16 bits. § Giao tiếp nối tiếp. § 64 Kbytes không gian bộ nhớ chương trình mở rộng. § 64 Kbytes 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 bits được địa chỉ hóa. § Bộ nhân chia 4 ms. 2/ Sơ lược về các chân của 8951: mC 8951 có tất cả 40 chân có chức năng như các đường xuất nhập.
Trong đó có 24 chân có công dụng kép, mỗi đường có thể hoạt động như đường xuất nhập hoặc như đường điều khiển hoặc là thành phần của bus dữ liệu và bus địa chỉ.1/ Hệ thống giao tiếp port: a/ Port 0: Port 0 là một port hai chức năng trên các chân 32 – 39. 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 I/O. Đối với các thiết kế lớn với bộ nhớ mở rộng, nó được hợp kênh giữa bus dữ liệu và byte thấp của bus địa chỉ. b/ Port 1: Port 1 là một port I/O trên các chân 1 – 8.
Các chân được kí hiệu: P1.2 … có thể dùng cho giao tiếp với các thiết bị ngoài nếu cần. Port 1 không có chức năng khác, vì vậy chúng chỉ được dùng cho giao tiếp với các thiết bị ngoài. c/ Port 2: Port 2 là một port công 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 các thiết kế dùng bộ nhớ mở rộng. d/ Port 3: Port 3 là một port công 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 8951 như ở bảng sau: Bit Tên Chức năng chuyển đổi 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 0 bên ngoài P3.3 INT1\ Ngắt 1 bên ngoài P3.4 T0 Ngõ vào của Timer/counter 0 P3.5 T1 Ngõ vào của 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 2.2/ Các tín hiệu điều khiển: mC 8951 có 4 tín hiệu điều khiển: a/ 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 bộ nhớ chương trình mở rộng, PSEN\ thường được nối đến chân OE (Output Enable) của một EPROM để cho phép đọc các byte mã lệnh. PSEN\ sẽ ở mức thấp trong thời gian lấy lệnh. Các mã nhị phân của chương trình được đọc từ EPROM qua bus dữ liệu và được chốt vào thanh ghi lệnh của 8951 để giải mã lệnh.
Nếu thi hành chương trình trong ROM nội (8951) thì PSEN\ sẽ ở mức thụ động (mức cao). b/ ALE (Address Latch Enable): Tín hiệu ra ALE trên chân 30 tương hợp với các thiết bị làm việc với các vi xử lí 8085, 8088, 8086. mC 8951 dùng ALE một cách tương tự cho việc giải kênh các bus địa chỉ và dữ liệu. Khi port 0 được dùng trong chế độ chuyển đổi: vừa là bus dữ liệu vừa là byte thấp của bus địa chỉ, ALE là tín hiệu để chốt byte thấp địa chỉ vào một thanh ghi bên ngoài trong nửa đầu chu kì bộ nhớ.
Sau đó, các đường port 0 dùng để xuất nhập dữ liệu trong nửa sau của chu kì bộ nhớ. 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 nguồn xung nhịp cho các phần khác của hệ thống. Nếu xung nhịp trên 8951 là 12 Mhz thì ALE có tần số 2 Mhz. Chỉ ngoại trừ khi thi hành lệnh MOVX, một xung ALE sẽ bị mất.
Trong trường hợp là 8051 thì chân này cũng được làm ngõ vào cho xung lập trình cho EPROM trong chip. Nếu ở mức cao, 8951 thi hành chương trình từ ROM nội trong khoảng địa chỉ thấp (4K). Nếu ở mức thấp, chương trình chỉ được thi hành từ bộ nhớ mở rộng. Khi dùng 8031, EA\ luôn được nối mức thấp vì 8031 không có bộ nhớ chương trình trên chip.
Nếu EA\ được nối mức thấp thì bộ nhớ chương trình bên trong 8951 sẽ bị cấm và chương trình chỉ được thi hành từ EPROM mở rộng. Người ta còn dùng EA\ làm chân cấp điện áp 21V khi lập trình cho EEPROM trong 8051. d/ RST (Reset): Ngõ vào RST trên chân 9 là ngõ reset của 8951. Khi tín hiệu này được đưa lên mức cao (trong ít nhất 2 chu kì máy), các thanh ghi bên trong 8951 được tải những giá trị thích hợp để khởi động hệ thống.
e/ Các ngõ vào bộ dao động trên chip: Như đã thấy trong các hình trên, 8951 có một bộ dao động trên chip. Nó thường được nối với một thạch anh giữa hai chân 18 và 19. Các tụ giữ cũng cần thiết như đã vẽ. Tần số thạch anh thông thường là 12 Mhz.
f/ Các chân nguồn: 8951 hoạt động với nguồn đơn +5V. Vcc được nối vào chân 40 và Vss (GND) được nối vào chân 20. 3/ Tổ chức bộ nhớ: 3.1/ Khảo sát tổ chức bộ nhớ 8951: mC 8951 có bộ nhớ được tổ chức theo cấu trúc Harvard : có những vùng bộ 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 (8951); dù vậy chúng có thể được mở rộng bằng các thành phần ngoài lên đến tối đa 64 Kbytes bộ nhớ chương trình và 64 Kbytes bộ nhớ dữ liệu.
Bộ nhớ bên trong bao gồm ROM (8951) và RAM trên chip bao gồm nhiều thành 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. FFFF Bộ nhớ Bộ nhớ chương FFFF dữ liệu trình được chọn FF được qua WR\ và 0000 chọn RD\ 00 qua 0000 PSEN\ Bộ nhớ trên chip Bộ nhớ mở rộng Tóm tắt các vùng bộ nhớ của 8951. 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 so với bộ xử lí khác.2/ Chi tiết về bộ nhớ RAM trên chip: Như sẽ thấy trong hình sau, RAM bên trong 8951 được phân chia thành các bank thanh ghi (00H – 1FH), RAM địa chỉ hóa bit (20H – 2FH), RAM đa dụng (30H – 7FH) và các thanh ghi chức năng đặc biệt trong khoảng (80H – FFH).
v RAM đa dụng: Mặc dù trên hình cho thấy 80 bytes RAM đa dụng chiếm các địa chỉ từ 30H – 7FH, 32 bytes dưới cùng từ 00H – 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). Địa chỉ Địa chỉ byte Địa chỉ bit byte Địa chỉ bit 7F FF RAM đa dụng F0 F7 F6 E0 E7 E6 D0 D7 D6 30 B8 _ _ 2F 7F 7E 7D 7C 7B 7A 79 78 2E 77 76 75 74 73 72 71 70 B0 B7 B6 2D 6F 6E 6D 6C 6B 6A 69 68 2C 67 66 65 64 63 62 61 60 A8 AF _ 2B 5F 5E 5D 5C 5B 5A 59 58 2A 57 56 55 54 53 52 51 50 A0 A7 A6 29 4F 4E 4D 4C 4B 4A 49 48 28 47 46 45 44 43 42 41 40 99 27 3F 3E 3D 3C 3B 3A 39 38 98 9F 9E 26 37 36 35 34 33 32 31 30 25 2F 2E 2D 2C 2B 2A 29 28 90 97 96 24 27 26 25 24 23 22 21 20 23 1F 1E 1D 1C 1B 1A 19 18 8D 22 17 16 15 14 13 12 11 10 8C 21 0F 0E 0D 0C 0B 0A 09 08 8B 20 07 06 05 04 03 02 01 00 8A 1F BANK 3 89 18 88 8F 8E 17 BANK 2 87 10 0F BANK 1 83 08 82 07 BANK 0 81 00 ( Mặc định cho R0 – R7 ) 80 87 86 RAM CÁC THANH GHI CHỨC NĂNG ĐẶC BIỆT Tóm tắt bộ nhớ dữ liệu trên chip 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. Ví dụ, để đọ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: MOV A, 5FH Lệnh này di chuyển 1 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. Ví dụ, 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ỉ gián tiếp để di chuyển dữ liệu “được trỏ bởi R0” vào thanh ghi tích lũy. v RAM địa chỉ hóa từng bit: mC 8951 chứa 210 bits được địa chỉ hóa, trong đó 128 bits là ở các địa chỉ byte 20H đến 2FH, và phần còn lại là trong các thanh ghi chức năng đặc biệt. Ý tưởng truy xuất từng bit riêng rẽ bằng phần mềm là một đặc tính tiện lợi của vi điều khiển nói chung.
Các bit có thể được đặt, xóa, AND, OR, … với một lệnh đơn. Trong khi đó, đa số các vi xử lí đòi hỏi một chuỗi lệnh đọc – sửa – ghi để đạt được hiệu quả tương tự. Hơn nữa, các port I/O cũng được địa chỉ hóa từng bit làm đơn giản phần mềm xuất nhập từng bit.