Điện năng kế điện tử giao tiếp máy tính
Đề 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.
A. 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.
128 bytes RAM.
4 ports I/O (Input/Output).
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 µs.
5
Luận văn tốt nghiệp
2/ Sơ lược về các chân của 8951:
µC 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ỉ.
2.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ỉ.
6
Điện năng kế điện tử giao tiếp máy tính
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.0 ; P1.1 ; 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
P3.1
P3.2
P3.3
P3.4
P3.5
P3.6
P3.7
RXD
TXD
INT0\
INT1\
T0
T1
WR\
RD\
Dữ liệu nhận cho port nối tiếp
Dữ liệu phát cho port nối tiếp
Ngắt 0 bên ngoài
Ngắt 1 bên ngoài
Ngõ vào của Timer/counter 0
Ngõ vào của Timer/counter 1
Xung ghi bộ nhớ dữ liệu ngoài
Xung đọc bộ nhớ dữ liệu ngoài
2.2/ Các tín hiệu điều khiển:
µC 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
7
Luận văn tốt nghiệp
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.
µC 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.
c/ EA\ (External Access):
Tín hiệu vào EA\ trên chân 31 thường được mắc lên mức cao (+5v)
hoặc mức thấp (GND). 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.
8
Điện năng kế điện tử giao tiếp máy tính
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:
µC 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ớ
chương trình
được chọn
qua PSEN\
FFFF
Bộ nhớ
dữ liệu
được chọn
qua WR\ và
RD\
FF
00 000
0
0000
Bộ nhớ trên chip Bộ nhớ mở rộng
Tóm tắt các vùng bộ nhớ của 8951.
9
Luận văn tốt nghiệp
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.
3.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).
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
RAM đa dụng
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
30 B8 _ _ _ BC B
B
BA B9 B8 IP
2F 7F 7E 7D 7C 7B 7A 79 78
2E 77 76 75 74 73 72 71 70 B0 B7 B6 B5 B4 B3 B2 B1 B0 P3
2D 6F 6E 6D 6C 6B 6A 69 68
2C 67 66 65 64 63 62 61 60 A8 AF _ _ AC AB AA A9 A8 IE
2B 5F 5E 5D 5C 5B 5A 59 58
2A 57 56 55 54 53 52 51 50 A0 A7 A6 A5 A4 A3 A2 A1 A0 P2
29 4F 4E 4D 4C 4B 4A 49 48
28 47 46 45 44 43 42 41 40 99 không được đòa chỉ hóa bit SBUF
27 3F 3E 3D 3C 3B 3A 39 38 98 9F 9E 9D 9C 9B 9A 99 98 SCON
26 37 36 35 34 33 32 31 30
25 2F 2E 2D 2C 2B 2A 29 28 90 97 96 95 94 93 92 91 90 P1
24 27 26 25 24 23 22 21 20
23 1F 1E 1D 1C 1B 1A 19 18 8D không được đòa chỉ hóa bit TH1
22 17 16 15 14 13 12 11 10 8C không được đòa chỉ hóa bit TH0
21 0F 0E 0D 0C 0B 0A 09 08 8B không được đòa chỉ hóa bit TL1
20 07 06 05 04 03 02 01 00 8A không được đòa chỉ hóa bit TL0
1F BANK 3 89 không được đòa chỉ hóa bit TMOD
18 88 8F 8E 8D 8C 8B 8A 89 88 TCON
17 BANK 2 87 không được đòa chỉ hóa bit PCON
10
0F BANK 1 83 không được đòa chỉ hóa bit DPH
08 82 không được đòa chỉ hóa bit DPL
07 BANK 0
( Mặc đònh cho R0 – R7 )
81 không được đòa chỉ hóa bit SP
00 80 87 86 85 84 83 82 81 80 P0
10
Điện năng kế điện tử giao tiếp máy tính
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.
RAM đòa chỉ hóa từng bit:
µ
C 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.
Có 128 bits được đòa chỉ hóa đa dụng ở các byte 20H đến 2FH. Các
đòa chỉ này được truy xuất như các byte hoặc như các bit phụ thuộc
vào lệnh được dùng. Ví dụ, để đặt bit 67H, ta dùng lệnh sau:
SET 67H
11
Luận văn tốt nghiệp
Chú ý rằng “đòa chỉ bit 67H” là bit có trọng số lớn nhất (MSB) ở
“đòa chỉ byte 2CH”. Lệnh trên sẽ không tác động đến các bit khác ở
đòa chỉ này. Các vi xử lí sẽ phải thi hành nhiệm vụ tương tự như sau:
MOV A, 2CH ; đọc cả byte
ORL A, #10000000B ; set MSB
MOV 2CH, A ; ghi lại cả byte
ъ Các bank thanh ghi:
32 bytes thấp nhất của bộ nhớ nội là dành cho các bank thanh ghi.
Bộ lệnh của 8951 hỗ trợ 8 thanh ghi (R0 – R7) và theo mặc đònh (sau
khi reset hệ thống) các thanh ghi này ở các đòa chỉ 00H – 07H. Lệnh
sau đây sẽ đọc nội dung ở đòa chỉ 05H vào thanh ghi tích lũy :
MOV A, R5
Đây là lệnh một byte dùng đòa chỉ thanh ghi. Tất nhiên, thao tác
tương tự có thể được thi hành bằng lệnh 2 bytes dùng đòa chỉ trực tiếp
nằm trong byte thứ hai:
MOV A, 05H
Các lệnh dùng các thanh ghi R0 đến R7 thì ngắn hơn và nhanh hơn
các lệnh tương ứng nhưng dùng đòa chỉ trực tiếp. Các giá trò dữ liệu
được dùng thường xuyên nên dùng một trong các thanh ghi này.
Bank thanh ghi tích cực có thể được chuyển đổi bằng cách thay đổi
các bit chọn bank thanh ghi trong từ trạng thái chương trình (PSW).
Giả sử rằng bank thanh ghi 3 được tích cực, lệnh sau sẽ ghi nội dung
của thanh ghi tích lũy vào đòa chỉ 18H:
MOV R0, A
Ý tưởng dùng “các bank thanh ghi” cho phép “chuyển hướng”
chương trình nhanh và hiệu quả (từng phần riêng rẽ của phần mềm sẽ
có một bộ thanh ghi riêng không phụ thuộc vào các phần khác).
4/ Các thanh ghi chức năng đặc biệt:
Các thanh ghi nội của 8951 được truy xuất ngầm đònh bởi bộ lệnh.
Ví dụ lệnh “INC A” sẽ tăng nội dung của thanh ghi tích lũy A lên 1.
Tác động này được ngầm đònh trong mã lệnh.
Các thanh ghi trong 8951 được đònh dạng như một phần của RAM
trên chip. Vì vậy mỗi thanh ghi sẽ có một đòa chỉ (ngoại trừ thanh ghi
12
Điện năng kế điện tử giao tiếp máy tính
đếm chương trình và thanh ghi lệnh vì các thanh ghi này hiếm khi bò
tác động trực tiếp, nên không lợi lộc gì khi đặt chúng vào trong RAM
trên chip). Đó là lí do để 8951 có nhiều thanh ghi như vậy. Cũng như
R0 đến R7, có 21 thanh ghi chức năng đặc biệt (SFR: Special
Function Register) ở vùng trên của RAM nội, từ đòa chỉ 80H đến
FFH. Chú ý rằng hầu hết 128 đòa chỉ từ 80H đến FFH không được
đònh nghóa. Chỉ có 21 đòa chỉ SFR là được đònh nghóa.
Ngoại trừ thanh ghi tích lũy A có thể được truy xuất ngầm như đã
nói, đa số các SFR được truy xuất dùng đòa chỉ trực tiếp. Chú ý rằng
một vài SFR có thể được đòa chỉ hóa bit hoặc byte. Người thiết kế
phải thận trọng khi truy xuất bit và byte. Ví dụ lệnh sau:
SETB 0E0H
Lệnh này sẽ set bit 0 trong thanh ghi tích lũy, các bit khác không
đổi. Ta thấy rằng E0H đồng thời là đòa chỉ byte của cả thanh ghi tích
lũy và là đòa chỉ bit của bit có trọng số nhỏ nhất trong thanh ghi tích
lũy. Vì lệnh SETB chỉ tác động trên bit, nên chỉ có đòa chỉ bit là có
hiệu quả.
a/ Từ trạng thái chương trình:
Từ trạng thái chương trình (PSW: Program Status Word) ở đòa chỉ
D0H chứa các bit trạng thái như bảng tóm tắt sau:
Bit Kí hiệu Đòa chỉ Ý nghóa
PSW.7 CY D7H Cờ nhớ
PSW.6 AC D6H Cờ nhớ phụ
PSW.5 F0 D5H Cờ 0
PSW.4 RS1 D4H Bit 1 chọn bank thanh ghi
PSW.3 RS0 D3H Bit 0 chọn bank thanh ghi
00 = bank 0 ( đòa chỉ 00H – 07H )
01 = bank 1 ( đòa chỉ 08H – 0FH )
10 = bank 2 ( đòa chỉ 10H – 17H )
11 = bank 3 ( đòa chỉ 18H – 1FH )
PSW.2 OV D2H Cờ tràn
PSW.1 _ D1H Dự trữ
PSW.0 P D0H Cờ parity chẵn
• Cờ nhớ:
13
Luận văn tốt nghiệp
Cờ nhớ (CY) có công dụng kép. Thông thường nó được dùng cho
các lệnh toán học: nó sẽ được set 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 lũy
chứa FFH, thì lệnh sau:
ADD A, #1
sẽ trả về thanh ghi tích lũy kết quả 00H và set cờ nhớ trong PSWK.
Cờ nhớ cũng có thể xem như một thanh ghi 1 bit cho các lệnh luận lí thi hành 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ớ:
AND C, 25H
• Cờ nhớ phụ:
Khi cộng các số BCD, cờ nhớ phụ (AC) được set nếu kết quả của 4
bit thấp trong khoảng 0AH đến 0FH. Nếu các giá trò được cộng là số
BCD thì sau lệnh cộng cần có DA A (hiệu chỉnh thập phân thanh ghi
tích lũy) để điều chỉnh kết quả cho phù hợp.
• Cờ 0:
Cờ 0 (F0) là 1 bit cờ đa dụng dành cho các ứng dụng của người
dùng.
0 Các bit chọn bank thanh ghi :
Các bit chọn bank thanh ghi (RS0 và RS1) xác đònh bank thanh ghi
nào được 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. Ví dụ, 3 lệnh sau cho phép bank
thanh ghi 3 và di chuyển nội dung của thanh ghi R7 (đòa chỉ byte
1FH) đến thanh ghi tích lũy:
SETB RS1
SETB RS0
MOV A, R7
Khi chương trình được hợp dòch, các đòa chỉ bit đúng được thay thế
cho các kí hiệu “RS1” và “RS0”.
Vậy, lệnh SETB RS1 sẽ giống như lệnh SETB 0D4H.
• Cờ tràn:
Cờ tràn (OV) được set sau một lệnh cộng hoặc trừ nếu có phép toán
bò tràn. 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 để xác đònh xem kết quả có nằm trong tầm xác
14
Không có nhận xét nào:
Đăng nhận xét