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.
86 trang |
Chia sẻ: oanh_nt | Lượt xem: 915 | Lượt tải: 0
Bạn đang xem trước 20 trang nội dung tài liệu Luận văn Điện năng kế điện tử giao tiếp máy tính, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
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 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
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.
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 quí 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
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.
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 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ỉ.
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ỉ.
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:
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.
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.
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ớ
chương trình
được chọn
qua PSEN\
FFFF
Bộ nhớ
dữ liệu
được chọn
qua WR\ và RD\
FF
00
0000
0000
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.
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
BB
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
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:
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.
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
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 đế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ớ:
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.
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 đị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.
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
Các file đính kèm theo tài liệu này:
- LUANVAN.DOC