Tải bản đầy đủ (.doc) (83 trang)

Điện năng kế điện tử giao tiếp máy tính

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (618.76 KB, 83 trang )

Luận văn tốt nghiệp
Bộ Giáo Dục và Đào Tạo
Đại Học Quốc Gia Tp.Hồ Chí Minh
Trường ĐH Sư Phạm Kó Thuật
Khoa Điện
Bộ Môn : Điện Tử
NHIỆM VỤ LUẬN VĂN TỐT NGHIỆP
Sinh viên thực hiện : TRẦN ĐẠI NGHĨA
Lớp : 95 KĐĐ
MSSV : 95101099
Số điện thoại : 8854340 ( Tp.Hồ Chí Minh ).
1/ Tên đề tài :
Điện Năng Kế Điện Tử Giao Tiếp Máy Tính
2/ Nội Dung Luận Văn Tốt Nghiệp :
Tính toán các thông số kó thuật.
Thiết kế phần cứng.
Giới thiệu phần mềm.

3/ Các Bản Vẽ:
Sơ đồ nguyên lí.
4/ Giáo Viên Hướng Dẫn : Thầy QUÁCH THANH HẢI
5/ Ngày Giao Nhiệm Vụ : 13 / 12 / 1999.

6/ Ngày Hoàn Thành Nhiệm Vụ : 28 / 2 / 2000.
Giáo Viên Hướng Dẫn Kí Tên :
_ _ _ _ _ _ _ _ _ _ _ _ _ Thông Qua Bộ Môn
_ _ _ _ _ _ _ _ _ _ _ _ _ Ngày ….. tháng ….. năm 2000.
_ _ _ _ _ _ _ _ _ _ _ _ _ Chủ nhiệm Bộ Môn
_ _ _ _ _ _ _ _ _ _
Quách Thanh Hải _ _ _ _ _ _ _ _ _ _
_ _ _ _ _ _ _


_ _ _
Luận văn tốt nghiệp
 LỜI GIỚI THIỆU :
Là sinh viên thuộc ngành Điện tử, bản thân người làm đề tài từ lâu đã có mong
muốn trước khi ra trường sẽ có cơ hội sử dụng những kiến thức đã học để tạo ra một
sản phẩm có ích cho xã hội cũng như chính bản thân và đó cũng là dòp để đánh giá lại
kiến thức đã học tập trong suốt quá trình rèn luyện trên giảng đường Đại học.
Luận văn tốt nghiệp có lẽ là cơ hội tốt nhất mà nhà trường đã tạo ra để bản thân
người làm có dòp thử thách chính mình trước khi tiếp cận với thực tế.
Được sự gợi ý của thầy TRẦN SUM, người làm luận văn đã quyết đònh chọn đề tài
“Điện năng kế điện tử giao tiếp máy tính”. Trước khi giao đề tài này thầy TRẦN
SUM cũng đã hỏi thử có dám làm không vì đây là một đề tài mới. Lúc đó bản thân
người làm cũng cảm thấy hơi lo nhưng cũng đã đồng ý nhận đề tài và chỉ biết là sẽ
cố gắng hết sức mình.
“Điện năng kế điện tử” là một đề tài ứng dụng kó thuật điện tử trong thiết bò đo
lường và hiển thò số nhưng đã nâng cao hơn một chút so với các thiết bò đo lường điện
tử trước đây là có khả năng tính toán số liệu đã thu thập bằng phần mềm và giao tiếp
được với máy tính. Điều này tạo nhiều thuận lợi cho việc sử dụng và điều khiển, và
đây cũng là xu hướng chung của các thiết bò ngày nay.
Như vậy, khâu cơ bản của đề tài là đo lường các đại lượng điện bằng các phương
pháp truyền thống nhưng vì các bộ phận xử lí phía sau là thiết bò số cho nên tuy là
vẫn đo đạc các đại lượng đó nhưng phương pháp đã có khác đi chút ít nhằm làm
tương hợp với thiết bò điện tử.
Khi đã có các đại lượng điện được đo đạc cụ thể thì phần công việc tiếp theo là do
phần mềm chòu trách nhiệm xử lí thông qua một thiết bò có khả năng tính toán và xử
lí dữ liệu đó có thể là một vi xử lí hoặc một vi điều khiển có sự kết nối với các thiết
bò phụ trợ bên ngoài.
Đề tài do vậy đã có sự liên quan đến khá nhiều vấn đề lí thuyết, điều này đòi hỏi
bản thân người làm phải cần phải tìm tòi và vận dụng.
Trong xu thế hiện nay là việc điện tử hóa các thiết bò phục vụ cho con người nhằm

ngày càng đáp ứng được trọn vẹn yêu cầu của người dùng, do vậy bản thân người làm
đề tài cảm thấy cần phải rèn luyện mình nhiều hơn nữa không chỉ trong luận văn tốt
nghiệp ra trường mà một điều còn quan trọng hơn nữa là khi đã ra trường vẫn phải
không ngừng phấn đấu.
2
Điện năng kế điện tử giao tiếp máy tính
KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN ĐỀ TÀI :
Đề tài “Điện năng kế điện tử giao tiếp máy tính” đã được hoàn thành trong thời
hạn đã giao. Đối với một đề tài mới thì việc nghiên cứu lần đầu chắc chắn không
thể tránh khỏi sự thiếu sót do vậy tuy đã cố gắng nhiều nhưng người làm đề tài
vẫn chưa thật sự đáp ứng được hết các yêu cầu đề ra ban đầu, rất mong sự thông
cảm của q Thầy, Cô và các bạn sinh viên.
Nhìn chung, đề tài đã hoàn thành xong những vấn đề chính yếu nhất và điều đó
giúp tạo ra sườn chung cho việc nghiên cứu phát triển sau này.
Điều cần làm đối với người kế tục đề tài là nghiên cứu sâu hơn tất cả các vấn đề
đã nêu ra trong luận văn tốt nghiệp nhằm tìm ra phương pháp tốt hơn hoặc hoàn chỉnh
phương pháp đã nêu, sự gợi ý này chỉ mang tính chất chung chung mà điều cần thiết
là phải biết tự suy nghó.
Mạch điện đã trình bày chưa phải là một mạch điện hoàn hảo vì việc sử dụng các
thiết bò chưa có sự chuẩn hóa mà đều phải tận dụng các thiết bò có sẵn, đây là một
điều bắt buộc ngoài ý muốn. Nếu như có thể thì tất cả các bộ phận bên trong điện
năng kế điện tử đều được chế tạo chuyên dùng, khi được như vậy thì chắc chắn
thiết bò hoạt động sẽ chính xác và bền bỉ hơn nhiều. Nhưng điều này chỉ có thể trở
thành hiện thực khi mô hình và lí thuyết tính toán thật chi tiết và chính xác sau đó
cần trải qua một thời gian dài thử nghiệm và điều chỉnh. Sau khi đã đạt được tất cả
các thông số yêu cầu và được ngành điện lực chấp nhận thì lúc đó mới đặt hàng tại
các xí nghiệp điện tử để sản xuất các bộ phận. Đây cũng là điều mong mỏi lớn
nhất của người làm đề tài này.
Ngoài ra, nếu như phần mềm có thể được viết tốt hơn sẽ thay thế cho một số thiết
bò phần cứng bên ngoài, nhưng lúc đó cần phải lưu ý về khả năng hoạt động của khối

xử lí không thể nào đáp ứng được tất cả các yêu cầu từ thiết bò bên ngoài mà không
cần sự trợ giúp từ một thiết bò phần cứngï.
Cần phải lưu ý rằng, công việc quan trọng nhất của khối điều khiển là thu thập tín
hiệu tại các đầu dò và xử lí dữ liệu để tính toán ra đại lượng mong muốn là điện năng
tiêu thụ, do vậy khi viết phần mềm để đảm nhận những công việc thay thế cho phần
cứng bên ngoài tức là khối xử lí sẽ phải gánh vác thêm nhiệm vụ thì có thể gây ra sự
sai số quá mức cho phép và lúc đó chương trình sẽ trở nên quá phức tạp.
Sinh viên thực hiện đề tài
Trần Đại Nghóa
3
Luận văn tốt nghiệp
CHƯƠNG 1:
TÓM LƯC
CÁC VẤN ĐỀ LÍ THUYẾT
LIÊN QUAN ĐỀ TÀI
4
Đ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
Điện năng kế điện tử giao tiếp máy tính
đònh không. Khi các số không dấu được cộng, bit OV có thể được bỏ
qua. Các kết quả lớn hơn +127 hoặc nhỏ hơn –128 sẽ set bit OV.
Ví dụ, phép cộng sau bò tràn và bit OV được set :
Hex 0F Thập phân 15
+ +
7F 127

8E 142
Kết quả là một số có dấu 8EH được xem như –14, không phải là
một kết quả đúng (142), vì vậy bit OV được set.
b/ Thanh ghi B:
Thanh ghi B ở đòa chỉ F0H được dùng với thanh ghi tích lũy A cho
các phép toán nhân và chia.
Lệnh MUL AB sẽ nhân các giá trò không dấu 8 bit trong A và B rồi
trả về kết quả 16 bit trong A (byte thấp) và B (byte cao).
Lệnh DIV AB sẽ chia A cho B rồi trả về kết quả nguyên trong A và
phần dư trong B.
Thanh ghi B cũng có thể được xem như thanh ghi đệm đa dụng. Nó
được đòa chỉ hóa từng bit bằng các đòa chỉ bit F0H đến F7H.
c/ Con trỏ ngăn xếp:

Con trỏ ngăn xếp (SP) là một thanh ghi 8 bit ở đòa chỉ 81H. Nó chứa
đòa chỉ của byte dữ liệu hiện hành trên đỉnh của ngăn xếp. Các lệnh
trên ngăn xếp bao gồm các thao tác cất dữ liệu vào ngăn xếp và lấy
dữ liệu ra khỏi ngăn xếp. Lệnh cất dữ liệu vào ngăn xếp sẽ làm tăng
SP trước khi cất dữ liệu, và lệnh lấy dữ liệu ra khỏi ngăn xếp sẽ đọc
dữ liệu và giảm SP.
Ngăn xếp của 8951 được giữ trong RAM nội và được giới hạn các
đòa chỉ có thể truy xuất bằng đòa chỉ gián tiếp. Chúng là 128 bytes
đầu của 8951.
Để khởi động lại SP với ngăn xếp bắt đầu tại 60H, các lệnh sau đây
được dùng:
MOV SP, #5FH
Trên 8951 ngăn xếp bò giới hạn 32 bytes vì đòa chỉ cao nhất của
RAM trên chip là 7FH. Sở dó dùng giá trò 5FH vì SP sẽ tăng lên 60H
trước khi cất byte dữ liệu đầu tiên.
15
Luận văn tốt nghiệp
Người thiết kế có thể chọn không phải khởi động lại con trỏ ngăn
xếp mà để nó lấy giá trò mặc đònh khi reset hệ thống. Giá trò mặc
đònh đó là 07H và kết quả là ngăn đầu tiên để cất dữ liệu có đòa chỉ
là 08H.
Nếu phần mềm ứng dụng không khởi động lại SP, thì bank thanh ghi
1 (có thể cả 2 và 3) sẽ không dùng được vì vùng RAM này đã được
dùng làm ngăn xếp.
Ngăn xếp được truy xuất trực tiếp bằng lệnh PUSH và POP để lưu
trữ tạm thời và lấy lại dữ liệu, hoặc được truy xuất ngầm bằng các
lệnh gọi chương trình con (ACALL, LCALL) và các lệnh trở về
(RET, RETI) để cất và lấy lại bộ đếm chương trình.
d/ Con trỏ dữ liệu:
Con trỏ dữ liệu (DPTR) để 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).
Ba lệnh sau sẽ ghi 55H vào RAM ngoài ở đòa chỉ 1000H:
MOV A, #55H
MOV DPTR, #1000H
MOVX @DPTR, A
Lệnh đầu tiên dùng đòa chỉ tức thời để tải dữ liệu 55H vào thanh ghi
tích lũy. Lệnh thứ hai cũng dùng đòa chỉ tức thời, lần này để tải dữ
liệu 16 bits 1000H vào con trỏ dữ liệu. Lệnh thứ ba dùng đòa chỉ gián
tiếp để di chuyển dữ liệu trong A (55H) đến RAM ngoài ở đòa chỉ
được chứa trong DPTR (1000H).
e/ Các thanh ghi port xuất nhập:
Các port của 8951 bao gồm Port 0 ở đòa chỉ 80H, Port 1 ở đòa chỉ
90H, Port 2 ở đòa chỉ A0H và Port 3 ở đòa chỉ B0H.
Tất cả các port đều được đòa chỉ hóa từng bit. Điều đó cung cấp một
khả năng giao tiếp thuận lợi.
Ví dụ, nếu một motor được nối qua một cuộn dây có transistor lái
đến bit 7 của Port 1, nó có thể được bật và tắt bằng một lệnh đơn:
SETB P1.7 ; bật motor
CLR P1.7 ; tắt motor
16
Điện năng kế điện tử giao tiếp máy tính
Các lệnh trên dùng dấu chấm để xác đònh một bit trong một byte.
Trình hợp dòch sẽ thi hành sự chuyển đổi cần thiết, vì vậy hai lệnh
sau đây là như nhau:
CLR P1.7
CLR 97H
Trong một ví dụ khác, xem xét giao tiếp đến một thiết bò với một bit
trạng thái gọi là BUSY, được set khi thiết bò đang bận và được xóa
khi thiết bò đã sẵn sàng. Nếu BUSY được nối tới P1.5, vòng lặp sau
sẽ được dùng để chờ thiết bò trở lại trạng thái sẵn sàng:

WAIT : JB P1.5, WAIT
Lệnh này có nghóa là “nếu bit P1.5 được set thì nhảy tới nhãn
WAIT”.
Nói cách khác “nhảy trở lại và kiểm tra lần nữa”.
f/ Các thanh ghi timer:
µC 8951 chứa hai bộ đònh thời/đếm 16 bits được dùng cho việc
đònh thời hoặc đếm sự kiện.
Timer 0 ở đòa chỉ 8AH (TL0: byte thấp) và 8CH (TH0 : byte cao).
Timer 1 ở đòa chỉ 8BH (TL1: byte thấp) và 8DH (TH1 : byte cao).
Việc vận hành timer được set bởi thanh ghi Timer Mode (TMOD) ở
đòa chỉ 89H và thanh ghi điều khiển timer (TCON) ở đòa chỉ 88H.
Chỉ có TCON được đòa chỉ từng bit.
g/ Các thanh ghi port nối tiếp:
µC8951 chứa một port nối tiếp trên chip dành cho việc trao đổi
thông tin với các thiết bò nối tiếp như máy tính, modem hoặc cho việc
giao tiếp với các IC khác có giao tiếp nối tiếp (các bộ chuyển đổi
A/D, các thanh ghi dòch … ).
Một thanh ghi gọi là bộ đệm dữ liệu nối tiếp (SBUF) ở đòa chỉ 99H
sẽ giữ cả hai dữ liệu truyền và nhận.
Khi truyền dữ liệu thì ghi lên SBUF, khi nhận dữ liệu thì đọc SBUF.
Các mode vận hành khác nhau được lập trình qua thanh ghi điều
khiển port nối tiếp (SCON) (được đòa chỉ hóa từng bit) ở đòa chỉ 98H.
17
Luận văn tốt nghiệp
h/ Các thanh ghi ngắt:
µC 8951 có cấu trúc 5 nguồn ngắt (2 mức ưu tiên).
Các ngắt bò cấm sau khi reset hệ thống và sẽ được cho phép bằng
việc ghi thanh ghi cho phép ngắt (IE) ở đòa chỉ A8H.
Cả hai thanh ghi được đòa chỉ hóa từng bit.
i/ Thanh ghi điều khiển công suất:

Thanh ghi điều khiển công suất (PCON) ở đòa chỉ 87H chứa nhiều
bit điều khiển. Chúng được tóm tắt trong bảng sau:
Bit Kí hiệu Ý nghóa
7 SMOD Bit gấp đôi tốc độ baud, nếu được set thì tốc độ baud sẽ tăng gấp đôi trong các
mode1, 2 và 3 của port nối tiếp.
6 _ Không đònh nghóa
5 _ Không đònh nghóa
4 _ Không đònh nghóa
3 GF1 Bit cờ đa dụng 1
2 GF0 Bit cờ đa dụng 0
1 PD Giảm công suất, được set để kích hoạt mode giảm công suất, chỉ thoát khi
reset.
0 IDL Mode chờ, set để kích hoạt mode chờ, chỉ thoát khi có ngắt hoặc reset hệ
thống.
5/ Bộ nhớ ngoài:
µC 8951 có khả năng mở rộng bộ nhớ lên đến 64K bộ nhớ chương
trình và 64K bộ nhớ dữ liệu ngoài. Do đó, có thể dùng thêm ROM và
RAM bên ngoài nếu cần.
Khi dùng bộ nhớ ngoài, Port 0 không còn là một port I/O thuần túy
nữa. Nó được hợp kênh giữa bus đòa chỉ (A0 – A7) và bus dữ liệu (D0
– D7) với tín hiệu ALE để chốt byte thấp của đòa chỉ khi bắt đầu mỗi
chu kì bộ nhớ. Port 2 thông thường được dùng cho byte cao của bus
đòa chỉ.
Trong nửa đầu của mỗi chu kì bộ nhớ, byte thấp của đòa chỉ được
cấp trong Port 0 và được chốt bằng xung ALE. Một IC chốt 74HC373
18
Điện năng kế điện tử giao tiếp máy tính
(hoặc tương đương) sẽ giữ byte đòa chỉ thấp trong phần còn lại của
chu kì bộ nhớ. Trong nửa sau của chu kì bộ nhớ Port 0 được dùng như
bus dữ liệu và được đọc hoặc ghi tùy theo lệnh.

a/ Truy xuất bộ nhớ chương trình ngoài:
Bộ nhớ chương trình ngoài là một IC ROM được cho phép bởi tín
hiệu PSEN\.
Hình sau mô tả cách nối một EPROM vào 8951:
Giao tiếp giữa 8951 và EPROM.
Một chu kì máy của 8951 có 12 chu kì xung nhòp. Nếu bộ dao động
trên chip được lái bởi một thạch anh 12 Mhz thì một chu kì máy kéo
dài 1 µs.
Trong một chu kì máy, sẽ có hai xung ALE và hai byte được đọc từ
bộ nhớ chương trình (nếu lệnh hiện hành là lệnh 2 bytes thì byte thứ
hai sẽ được loại bỏ). Giản đồ thời gian của một lần lấy lệnh được vẽ
ở hình sau:
19
Luận văn tốt nghiệp
Giản đồ thời gian đọc bộ nhớ chương trình ngoài.
b/ Truy xuất bộ nhớ dữ liệu ngoài:
Giao tiếp giữa 8951 và RAM.
Bộ nhớ dữ liệu ngoài là một bộ nhớ RAM được cho phép ghi/đọc
bằng các tín hiệu WR\ và RD\ (các chân P3.6 và P3.7 thay đổi chức
năng). Chỉ có một cách truy xuất bộ nhớ dữ liệu ngoài là với lệnh
MOVX dùng con trỏ dữ liệu (DPTR) 16 bits hoặc R0 và R1 xem như
thanh ghi đòa chỉ.
Kết nối bus đòa chỉ và bus dữ liệu giữa RAM và 8951 cũng giống như EPROM và
do đó cũng có thể lên đến 64 Kbytes bộ nhớ RAM.
20
Điện năng kế điện tử giao tiếp máy tính
Ngoài ra, chân RD\ của 8951 được nối tới chân cho phép xuất (OE\)
của RAM và chân WR\ được nối tới chân ghi (WR\) của RAM.
Giản đồ thời gian cho lệnh đọc dữ liệu ngoài được vẽ trên hình sau đối với lệnh
MOVX A, @DPTR:

Giản đồ thời gian của lệnh MOVX.
Giản đồ thời gian cho lệnh ghi (MOVX @DPTR, A) cũng tương tự
chỉ khác đường WR\ sẽ thay vào đường RD\ và dữ liệu được xuất ra
trên chân Port 0 (RD\ vẫn giữ mức cao).
c/ Giải mã đòa chỉ:
Nếu có nhiều EPROM và/hoặc nhiều RAM được giao tiếp với 8951,
thì cần phải giải mã đòa chỉ.
Mạch giải mã cũng tương tự như các hệ vi xử lí khác. Ví dụ, nếu
dùng nhiều EPROM và RAM 8Kbytes thì bus đòa chỉ cần phải được
giải mã để xác đònh IC nhớ nào được chọïn.
21
Luận văn tốt nghiệp
Người ta thường dùng IC giải mã 74HC138 với các ngõ ra được nối
tới các ngõ vào chọn chip (CS) trên các IC nhớ. Hình sau vẽ một hệ
thống với nhiều EPROM 8K 2764 và RAM 8K 6264:
Giải mã đòa chỉ.
d/ Xếp chồng bộ nhớ chương trình và dữ liệu bên ngoài:
Vì bộ nhớ chương trình là ROM, nên nảy sinh một vấn đề bất tiện
khi phát triển phần mềm cho 8051/8031. Đối với 8951 đã cải tiến
bằng cách thay thế bằng EEPROM, hoặc dùng một cách để khắc
phục nhược điểm trên là xếp chồng các vùng nhớ chương trình và dữ
liệu.
Một IC RAM có thể chứa cả chương trình và dữ liệu bằng cách nối
đường OE\ của RAM vào một mạch logic AND của PSEN\ và RD\.
Mạch trên hình sau cho phép một IC RAM được dùng làm bộ nhớ
chương trình và dữ liệu:
22
Điện năng kế điện tử giao tiếp máy tính
Vậy một chương trình có thể được tải vào RAM (bằng cách ghi nó
như bộ nhớ dữ liệu) và thi hành (bằng cách truy xuất nó như bộ nhớ

chương trình).
6/ Lệnh Reset:
µC8951 được reset bằng cách giữ chân RST ở mức cao ít nhất trong
hai chu kì máy và trả nó về mức thấp.

Mạch reset hệ thống.
RST có thể được kích bằng tay dùng một nút bấm hoặc có thể được
kích khi cấp điện dùng một mạch R-C.
Trạng thái của tất cả các thanh ghi trong 8951 sau khi Reset hệ
thống được tóm tắt trong bảng sau:
Thanh ghi Nội dung
Đếm chương trình 0000 H
Tích lũy 00 H
B 00 H
PSW 00 H
SP 07 H
DPTR 0000 H
23
Luận văn tốt nghiệp
Port 0 ÷ 3 FF H
IP XXX00000 B
IE 0XX00000 B
Các thanh ghi đònh thời 00 H
SCON 00 H
SBUF 00 H
PCON ( HMOS ) 0XXXXXXX B
PCON ( CMOS ) 0XXX0000 B
Quan trọng nhất trong các thanh ghi trên là thanh ghi đếm chương
trình, nó được đặt lại 0000H.
Khi RST trở lại mức thấp, việc thi hành chương trình luôn bắt đầu ở

đòa chỉ đầu tiên trong bộ nhớ chương trình: đòa chỉ 0000H.
Nội dung của RAM trên chip không bò thay đổi bởi lệnh Reset.
II/ TẬP LỆNH CỦA 8951 :
Tập lệnh 8951 có 255 lệnh gồm 139 lệnh 1 byte, 92 lệnh 2 byte và
24 lệnh 3 byte.
1/ Các chế độ đánh đòa chỉ:
a/ Đòa chỉ thanh ghi:
µC8951 có bốn bank thanh ghi, mỗi bank có 8 thanh ghi đánh số từ
R0 đến R7. Tại mỗi thời điểm chỉ có một bank thanh ghi được tích
cực.
Mã lệnh n n n
Đòa chỉ thanh ghi
Muốn chọn bank thanh ghi nào ta chỉ cần gán các bít nhò phân thích
hợp vào RS1 (PSW.4) và RS0 (PSW.3) trong thanh ghi trạng thái
chương trình (PSW).
Ngoài ra, một số thanh ghi đặc biệt như thanh ghi tích lũy, thanh ghi con trỏ dữ
liệu cũng được xác đònh trong các lệnh trên nên không cần bit đòa chỉ.
Trong các lệnh này thanh ghi tích lũy được kí hiệu là “A”, con trỏ
dữ liệu là “DPTR”, thanh ghi đếm chương trình là “PC”, cờ nhớ là
“C”, cặp thanh ghi tích lũy là “AB”.
b/ Đòa chỉ trực tiếp:
24
Điện năng kế điện tử giao tiếp máy tính
Trong chế độ này, các thanh ghi bên trong 8951 được đánh đòa chỉ
trực tiếp bằng 8 bits đòa chỉ nằm trong byte thứ hai của mã lệnh.
Mã lệnh Đòa chỉ trực tiếp
Đòa chỉ trực tiếp.
Dù vậy, trình hợp dòch cho phép gọi tên các thanh ghi chức năng đặc
biệt (có đòa chỉ trực tiếp từ 80H đến FFH).
Ví dụ, P0 cho Port 0, TMOD cho thanh ghi chế độ timer, …

c/ Đòa chỉ gián tiếp:
R0 và R1 được dùng để chứa đòa chỉ tạm ô nhớ mà lệnh tác động
đến. Người ta qui ước dùng dấu @ trước R0 hoặc R1.
Mã lệnh i
Đòa chỉ gián tiếp.
d/ Đòa chỉ tức thời:
Người ta dùng dấu # trước các toán hạng tức thời. Các toán hạng đó
có thể là một hằng số, một kí số hay một biểu thức toán học …Trình
hợp dòch sẽ tự động tính toán và thay thế dữ liệu vào mã lệnh.
Mã lệnh Dữ liệu tức thời
Đòa chỉ tức thời.
e/ Đòa chỉ tương đối:
Đòa chỉ tương đối được dùng trong các lệnh nhảy.
µC8951 dùng giá trò 8 bit có dấu để cộng thêm vào thanh ghi đếm
chương trình (PC).
Tầm nhảy của lệnh này trong khoảng từ –128 đến 127 ô nhớ. Trước
khi cộng, thanh ghi PC sẽ tăng đến đòa chỉ theo sau lệnh nhảy rồi tính
toán đòa chỉ offset cần thiết để nhảy đến đòa chỉ yêu cầu.
25

×