Cấu trúc xử lý ngoai vi c

GIÁO TRÌNH KỸ THUẬT VI XỬ LÝ PHẦN II: MCS-51
NGUYỄN THANH HẢI, NGÔ THANH BÌNH-KTĐT.ĐHGTVT 1

CHƯƠNG III : CẤU TRÚC PHẦN CỨNG HỆ VI ĐIỀU KHIỂN
Giới thiệu chung

Lịch sử phát triển của các bộ vi xử lý gắn liền với lịch sử của linh kiện bán dẫn, mà mốc quan
trọng nhất là sự phát minh ra Transistor. Chip vi xử lý đầu tiên 4004 được ra đời năm 1971 dành
cho mục đích tính toán thương mại bởi công ty nhật bản Busicom, sau đó được chắp cánh và
phát triển vượt bậc bởi Intel. Năm 1976 công ty INTEL (INTelligent ELectronics) cho ra đời bộ
vi xử lý trên thế giới có tích hợp bộ xử lý, bộ nhớ dữ liệu, bộ đếm chương trình, bộ đếm/phát
thời gian (timer), các cổng vào/ra trên một chip silic đơn tinh thể và chỉ đóng gói trong một vỏ,
với tên gọi 8048. Các công ty khác cũng lần lượt cho ra đời các bộ điều khiển 8 bit tương tự với
8048 và hình thành họ vi điều khiển MCS-48 (Microcontroller System 48). Bốn năm sau, năm
1980, Intel cho ra đời thế hệ thứ hai của bộ vi điều khiển đơn chip là 8051 và trở thành công ty
hàng đầu trong lĩnh vực sản xuất các bộ vi xử lý. Ít lâu sau hàng loạt các thế hệ vi xử lý dẫn xuất
của 8051 ra đời hình thành họ vi xử lý mạnh MCS51. Đến nay họ vi xử lý MCS51 đã có trên
250 thành viên và được các công ty bán dẫn hàng đầu thế giới chế tạo như Intel, AMD, Atmel,
Siemens, Philips, Dallas, OKI, Các dẫn xuất này đều có chung một kiến trúc giống với vi điều
khiển Intel 8051 kinh điển. Thêm vào đó, tùy theo từng loại mà các chip dẫn xuất được tích hợp
thêm các ngoại vi khác nhau (như ADC, SPI, EEPROM, capture/compare channels…), tính
năng cũng được nâng cao để phù hợp với các ứng dụng ngày càng phức tạp. Ngoài ra đối với các
loại chip có cấu trúc CPU ngoại vi cố định (fixel digital and analog penpherals) còn phải kể đến
các công ty khác có các sản phẩm là những họ vi điều khiển riêng cũng khá mạnh và được tiêu
thụ nhiều trên thị trường. Tuy nhiên mỗi loại lại có cấu trúc phần cứng được tổ chức khác nhau,
bộ lệnh riêng và các cấu trúc lập trình khác nhau. Có thể kể ra như:
- Họ 68HCxx và các dẫn xuất của Motorola
- Họ ST62xx của SGS-THOMSON
- Họ H8 của Hitachi
- Họ PIC của Microchip
-

Vì vậy các bạn hãy chọn ra một loại thông dụng trên thị trường và dễ mua tại Việt nam để
nghiên cứu và làm việc. Sau khi làm việc thật tốt với một họ vi xử lý và làm chủ được nó, các
bạn sẽ dễ dàng tiếp cận và làm chủ các họ vi xử lý khác. Các thế hệ vi xử lý sau này phát triển
trên cơ sở các vi xử lý thế hệ trước nhưng được hướng vào những ứng dụng cụ thể, tích hợp
nhiều chức năng và công nghệ mới. Phát triển của họ MCS51 Atmel cho ra đời thế hệ AVR, có
tích hợp thêm các chức năng ADC, PWM, … với phần mềm trên C khá linh động, hỗ trợ ghép
nối LCD, RTC. Các dạng chip thế hệ sau như chíp CSoC có khả năng mềm dẻo thích ứng với đa
dạng ứng dụng và nhất là khả năng tái cấu hình (reconfigurable), tạo thành nhiều loại chip khác
nhau trên một chip ở những thời điểm khác nhau trong một ứng dụng.CYPRESS và một số hãng
khác phát triển họ PSoC (Programmable System on Chip) có đặc điểm linh động phần cứng từ
phần mềm, tự tạo cấu hình phần cứng từ tài nguyên có sẵn phục vụ các bài toán cụ thể đòi hỏi
yêu cầu phần cứng khác nhau. Thực chất các chip chế tạo theo công nghệ PSoC cho phép thay
đổi cấu hình phần cứng bằng cách gán chức năng cho các khối tài nguyên có sẵn trên chip, ghép
nối mềm dẻo giữa các khốivới nhau và với các cổng In/Out. Ngoài ra thành phần của chip PsoC
bao gồm cả các khối ngoại vi số và tương tự có thể tự cấu hình được, lập trình cho chip thông
qua phương pháp kéo/thả các khối tài nguyên này vào vùng làm việc. Việc thiết lập ngắt trên
chân nào, loại ngắt gì, các chân In/Out được thiết lập hoạt động thế nào đều tuỳ thuộc vào thiết
lập của người lập trình. Với khả năng đặt cấu hình mạnh mẽ này một thiết bị Đo lường - Điều
khiển có thể được gói gọn trên một chip duy nhất. Chính vì vậy người ta không gọi chip này là
vi điều khiển (µC) mà gọi là thiết bị PSoC (PsoC Device - Thiết bị lập trình trên chip), với hy
vọng rằng người sử dụng sẽ có được những thiết bị nhỏ gọn, giá rẻ , tin cậy bởi chỉ dùng riêng
GIÁO TRÌNH KỸ THUẬT VI XỬ LÝ PHẦN II: MCS-51
NGUYỄN THANH HẢI, NGÔ THANH BÌNH-KTĐT.ĐHGTVT 2
chip PSoC mà không cần các kết nối ngoại vi khác và sản phầm này sẽ thay thế dần các thiết bị
sử dụng vi xử lý kinh điển trước đây. Một số dạng thiết kế chip nhằm mục đích chủ yếu cho các
bài toán xử lý dữ liệu như CPLD (Complex Programmable Logic Device), FPGA (Field
Programmable Logic Array) có hỗ trợ kết nối máy tính với các phần mềm tiêu chuẩn, tái cấu
hình lại nhiều lần… Lập trình mảng tương tự đã xuất hiện trong nhiều năm, nhưng chỉ mới gần
đây mới được phát triển mạnh, và nền công nghiệp điện tử đã chấp nhận phát triển đầy đủ các
công cụ phát triển và các phiên bản phần mềm phát triển mới. Lập trình mảng tương tự FPAAs

(Field Programmable Analog Arrays) cung cấp cho nhà thiết kế tính mềm dẻo như trong phần
thiết kế mạch tương tự của họ. Những dạng linh kiện này giải quyết tốt hầu hết các vấn đề ứng
dụng trong những thành phần của hệ thống (Vi xử lý lõi, khối logic, khối tương tự). Ví dụ, một
mạch chứa đựng thành phần chính là logic sẽ có lợi nhất khi sử dụng linh kiện lập trình logic,
nhưng một thiết kế với nhiều thành phần tương tự sẽ không thích hợp với những linh kiện đó.

Tóm lại, vi xử lý là một lĩnh vực rộng đòi hỏi những nghiên cứu chuyên sâu với nhiều đầu tư cả
về thời gian, sức lực và kinh phí.Với những người bắt đầu, lời khuyên là các bạn nên sử dụng họ
MCS51 và bắt đầu làm việc với dẫn xuất Atmel 89C52 bằng ngôn ngữ lập trình Assembly. Đây
là ngôn ngữ cơ sở, đủ mạnh cho những ứng dụng nhỏ, có bản dùng thử miễn phí trên mạng. Với
Assembly bạn dễ dàng hiểu nắm bắt được phần cứng và rõ về hoạt động của vi xử lý, tuy nhiên
khi cần phát triển những ứng dụng lớn hơn bạn sẽ gặp những hạn chế của ngôn ngữ này là phải
tự làm lấy mọi thứ mà không có sự hỗ trợ nào từ phần mềm thông qua hệ thống thư viện, đặc
biệt là không hỗ trợ giao tiếp vào ra với thiết bị chuẩn như LCD, RTC, … Sau khi bạn đã nắm
tốt về vi xử lý cơ sở và lập trình Assembly, bạn nên chuyển sang làm việc bằng C cho những
thiết kế lớn hơn. Phần mềm nên sử dụng ban đầu là Read51, được tích hợp cả Assembly và C
nên tôi nghĩ rằng đây là phần mềm tốt nhất cho các bạn mới bắt đầu.

Một số tính năng cơ bản của họ vi điều khiển Intel 8051 kinh điển:
- CPU 8 bit được thiết kế tối ưu cho các ứng dụng điều khiển.
- Có các khả năng xử lý bit lôgic.
- Không gian bộ nhớ chương trình 64Kbyte.
- Không gian bộ nhớ dữ liệu 64 Kbyte.
- Tích hợp 4 Kbyte bộ nhớ chương trình trên chip.
- Tích hợp 128 byte bộ nhớ RAM trên chip.
- Có 32 đường vào/ra 2 chiều có thể định địa chỉ đến từng bit.
- Tích hợp 02 timer 16bit.
- Tích hợp UART song công.
- Cấu trúc ngắt với 06 nguồn/05 vector ở 02 mức ưu tiên khác nhau.
- Tích hợp mạch bộ dao động trên chip.

GIÁO TRÌNH KỸ THUẬT VI XỬ LÝ PHẦN II: MCS-51
NGUYỄN THANH HẢI, NGÔ THANH BÌNH-KTĐT.ĐHGTVT 3

GIÁO TRÌNH KỸ THUẬT VI XỬ LÝ PHẦN II: MCS-51
NGUYỄN THANH HẢI, NGÔ THANH BÌNH-KTĐT.ĐHGTVT 4
I. Cấu trúc hệ vi điều khiển
Kiến trúc phần cứng căn bản của vi điều khiển 8051 được mô tả bằng sơ đồ khối sau:

U1
8051
29
30
40
20
31
19
18
9
39
38
37

36
35
34
33
32
1
2
3
4
5
6
7
8
21
22
23
24
25
26
27
28
10
11
12
13
14
15
16
17
PSEN

ALE
VCC
GND
EA
X1
X2
RST
P0.0/AD0
P0.1/AD1
P0.2/AD2
P0.3/AD3
P0.4/AD4
P0.5/AD5
P0.6/AD6
P0.7/AD7
P1.0
P1.1
P1.2
P1.3
P1.4
P1.5
P1.6
P1.7
P2.0/A8
P2.1/A9
P2.2/A10
P2.3/A11
P2.4/A12
P2.5/A13
P2.6/A14

P2.7/A15
P3.0/RXD
P3.1/TXD
P3.2/INT0
P3.3/INT1
P3.4/T0
P3.5/T1
P3.6/WR
P3.7/RD

Tổ chức bộ nhớ:

Họ vi điều khiển 8051 có hai không gian địa chỉ dành cho bộ nhớ chương trình và bộ nhớ dữ
liệu là riêng biệt. Cấu trúc riêng rẽ như vậy giúp cho bộ nhớ trong có thể truy nhập nhanh hơn
với 8 bit địa chỉ vì CPU 8 bit sẽ có thể lưu trữ cũng như xử lý giá trị 8 bit này nhanh hơn so với
giá trị 16 bit. Ngoài ra, để có thể đạt được không gian địa chỉ 64 Kbyte dành cho bộ nhớ dữ liệu,
chip được thiết kế với thanh ghi 16 bit tên là DPTR chuyên dùng để phát ra các địa chỉ 16 bit.

Bộ nhớ chương trình có thể có dung lượng tối đa là 64 Kbytes. Thông thường thì bộ nhớ chương
trình tích hợp trên chip có dung lượng chỉ chiếm 4 Kbyte hay 8 Kbyte trong không gian 64
Kbyte đó. Bộ nhớ chương trình có thể là bộ nhớ ngoài và được truy cập bằng tín hiệu #PSEN
(“# “ có nghĩa là tích cực thấp), tức là khi sử dụng bộ nhớ trong cần nối chân #EA/VPP lên
nguồn +5 VDC thông qua trở hạn dòng khoảng 4K7.

Bộ nhớ chương trình:

Sau khi reset CPU bắt đầu làm việc từ địa chỉ đầu người sử dụng khai báo, thường là địa chỉ
0000H.

GIÁO TRÌNH KỸ THUẬT VI XỬ LÝ PHẦN II: MCS-51
NGUYỄN THANH HẢI, NGÔ THANH BÌNH-KTĐT.ĐHGTVT 5

Các vector ngắt được quy định cố định ở các địa chỉ đầu tiên. Nếu các ngắt được sử dụng thì mã
lệnh của chương trình phục vụ ngắt tương ứng phải được đặt tại các địa chỉ của các vector ngắt.
Do các vector ngắt là sát nhau nên không thể đặt các chương trình phục vụ ngắt tại các địa chỉ
này (vì chương trình phục vụ ngắt của ngắt này sẽ đè lên vector ngắt của ngắt khác) mà thông
thường người ta đặt tại đó các lệnh nhảy đến các chương trình phục vụ ngắt đã được đặt ở nơi
khác trong bộ nhớ chương trình. Nếu các ngắt không được sử dụng thì các ô nhớ dành cho các
vector ngắt hoàn toàn có thể dùng như các vùng nhớ khác trong bộ nhớ chương trình. Địa chỉ
của bộ nhớ chương trình luôn là địa chỉ 16 bit cho dù dung lượng bộ nhớ thực được sử dụng
không chiếm đầy không gian 64Kbyte.

Vùng địa chỉ thấp nhất của không gian bộ nhớ chương trình có thể là bộ nhớ tích hợp trên chip
hoặc bộ nhớ ngoài chip. Lựa chọn này được thực hiện bằng cách nối chân #EA với VCC hoặc
GND. Như vậy với #EA nối với VCC thì không gian bộ nhớ chương trình sẽ bao gồm phần
không gian địa chỉ thấp dành cho bộ nhớ tích hợp trên chip cộng với khoảng không gian còn
thừa cho bộ nhớ ngoài chip. Với chân #EA nối với GND, toàn bộ không gian nhớ chương trình
được mặc nhiên coi là dành cho bộ nhớ ngoài (bất kể chip có được tích hợp bộ nhớ hay không –
nghĩa là bộ nhớ chương trình nếu có tích hợp trên chip thì cũng không được dùng đến). Để truy
nhập bộ nhớ ngoài thì người ta sử dụng tín hiệu #PSEN cùng hai cổng vào/ra P0 và P2. Khi viết
chương trình cho vi xử lý, nếu chương trình lớn hơn 4 KBytes (Hoặc 8 KBytes với AT89C52)
thông thường ta nên viết chương trình tại bộ nhớ ngoài, bỏ qua bộ nhớ chương trình tích hợp sẵn
trên chip (Bộ nhớ trong) để dễ dàng hơn cho quá trình quản lý, lúc đó #EA nối GND.

Bộ nhớ dữ liệu:

Bộ nhớ dữ liệu có dung lượng tối đa 64 Kbytes dùng để chứa dữ liệu cho chương trình. Do bộ
nhớ này có dung lượng hạn chế nên trong các thiết kế đòi hỏi dữ liệu ngoài là rất lớn, chương

trình chứa nhiều dữ liệu ngoài vượt quá bộ nhớ của CPU như quang báo, Fuzzy, … người ta
buộc phải sử dụng đến bộ nhớ dữ liệu ngoài để chứa các thông tin cần gọi vào chương trình xử
lý. Đó là các dòng tin tức được đưa ra hiển thị ngoài Quang báo, các tập mờ, …

GIÁO TRÌNH KỸ THUẬT VI XỬ LÝ PHẦN II: MCS-51
NGUYỄN THANH HẢI, NGÔ THANH BÌNH-KTĐT.ĐHGTVT 6
Thanh ghi:

Khi lập trình cho vi xử lý, điều cần đặc biệt chú ý là khả năng điều khiển các ngắt làm việc. Với
các dòng sản phẩm khác nhau của họ vi xử lý MCS51, các ngắt của một chức năng hoạt động
như nhau và được thiết kế tại cùng một địa chỉ. Với các vi xử lý thế hệ sau của các hãng khác
như SAB80515/535 thì có đôi chút khác biệt về tên gọi các bit, khả năng xử lý tương tự, Vì
vậy khi xem xét vào ứng dụng với chip cụ thể, ta cần tra cứu tài liệu của hãng cung cấp. Ở đây ta
chọn vi xử lý AT89C52 là chip đại diện cho dòng chip để nghiên cứu bởi nó hoàn toàn tương
thích với Intel 8051, khả năng làm việc trên phần mềm tích hợp Assembly-C có bản chạy thử
miễn phí, chip này dễ tìm, giá rẻ, khả năng tương đối mạnh cho các ứng dụng nhỏ.
GIÁO TRÌNH KỸ THUẬT VI XỬ LÝ PHẦN II: MCS-51
NGUYỄN THANH HẢI, NGÔ THANH BÌNH-KTĐT.ĐHGTVT 7

AT89C52 là vi xử lý điển hình của họ MCS51, khá mạnh cho những ứng dụng nhỏ. Tích hợp 8

KBytes Flash ROM bộ nhớ chương trình trên chip và 256 Bytes RAM bộ nhớ dữ liệu trên chip,
khả năng mở rộng tới 64 KBytes ROM và 64 Kbytes RAM.

GIÁO TRÌNH KỸ THUẬT VI XỬ LÝ PHẦN II: MCS-51
NGUYỄN THANH HẢI, NGÔ THANH BÌNH-KTĐT.ĐHGTVT 8

U2
AT89C52
9
18
19
20
29
30
31
40
1
2
3
4
5
6
7
8
21
22

23
24
25
26
27
28
10
11
12
13
14
15
16
17
39
38
37
36
35
34
33
32
RST
XTAL2
XTAL1
GND
PSEN
ALE/PROG
EA/VPP
VCC

P1.0/T2
P1.1/T2-EX
P1.2
P1.3
P1.4
P1.5
P1.6
P1.7
P2.0/A8
P2.1/A9
P2.2/A10
P2.3/A11
P2.4/A12
P2.5/A13
P2.6/A14
P2.7/A15
P3.0/RXD
P3.1/TXD
P3.2/INT0
P3.3/INT1
P3.4/T0
P3.5/T1
P3.6/WR
P3.7/RD
P0.0/AD0
P0.1/AD1
P0.2/AD2
P0.3/AD3
P0.4/AD4
P0.5/AD5

P0.6/AD6
P0.7/AD7

Đặc điểm cấu trúc chân cổng vi xử lý MCS51:

Nhận thấy rằng các chân của Port0 không có điện trở treo (Internal pull-up), vì vậy khi thiết kế
sử dụng cổng này mạch cần chú ý điện trở treo ngoài.
GIÁO TRÌNH KỸ THUẬT VI XỬ LÝ PHẦN II: MCS-51
NGUYỄN THANH HẢI, NGÔ THANH BÌNH-KTĐT.ĐHGTVT 9

AT89C52 có các ngắt cơ bản hay sử dụng: 2 Ngắt ngoài, 3 ngắt Timer, 1 ngắt nối tiếp. Chú ý
rằng vi xử lý này không có ADC nên không có các bit và ngắt xử lý tín hiệu tương tự như
SAB80535. Trong phần lập trình ta sẽ bàn kỹ các vấn đề xử lý, điều khiển các thanh ghi này.

GIÁO TRÌNH KỸ THUẬT VI XỬ LÝ PHẦN II: MCS-51
NGUYỄN THANH HẢI, NGÔ THANH BÌNH-KTĐT.ĐHGTVT 10
 Ngắt ngoài: là các tín hiệu ngắt được kích hoạt từ bên ngoài thông qua 2 chân vi xử lý
/INT0 (P3.2) và /INT1 (P3.3). Có thể ngắt theo 2 kiểu, phụ thuộc bit ITx trong thanh ghi
TCON:
- Theo mức khi bit ITx=0
- Theo sườn khi bit ITx=1

 Ngắt Timer: Các Timer bao gồm hai dạng: Đếm xung thời gian từ Clock (Timer) và đếm
sự kiện ngoài (Countetr), được điều khiển thông qua các thanh ghi TMOD và TCON.

Các bộ đếm luôn đếm tiến, ngoại trừ Timer2 có một chế độ có thể đếm lùi.

GIÁO TRÌNH KỸ THUẬT VI XỬ LÝ PHẦN II: MCS-51
NGUYỄN THANH HẢI, NGÔ THANH BÌNH-KTĐT.ĐHGTVT 11

Chế độ 0:

Chế độ 0 là chế độ định thời 13 bit, sử dụng Byte cao của THx ghép với 5 bit thấp trong Byte
thấp TLx. Chế độ này cung cấp khả năng tương thích với bộ vi điều khiển thế hệ trước 8048.
Chế độ này không được dùng cho các thiết kế mới.

 Chế độ 1: Chế độ định thời 13 bit

Chế độ 1 là chế độ định thời 16 bit, có cấu hình giống như chế độ định thời 13 bit. Ở chế độ này
xung Clock được đặt kết hợp cả vào thanh ghi định thời cao và thấp. Khi có xung Clock đến,
Timer sẽ điến tiến từ 0000H  FFFFH rồi xảy ra hiện tượng tràn dữ liệu, nhảy về 0000H. Mỗi
lần tràn dữ liệu sẽ phát sinh ra một cờ ngắt, tức set bit TF1 = 1. Đây là bit điều khiển Timer nằm
trong TCON, được đọc/ghi bằng phần mềm.

GIÁO TRÌNH KỸ THUẬT VI XỬ LÝ PHẦN II: MCS-51

NGUYỄN THANH HẢI, NGÔ THANH BÌNH-KTĐT.ĐHGTVT 12
 Chế độ 2: Chế độ định thời 16 bit

Chế độ 2 là chế độ tự nạp lại 8 bit, đây là chế độ hay sử dụng nhất. Byte thấp của bộ định thời
(TLx) hoạt động lưu giá trị đếm trong khi Byte cao (THx) giữ giá trị nạp lại. Khi số đếm tràn từ
FFH  00H, cờ tràn TF được set len 1 và giá trị trong THx còn được nạp vào TLx, bộ đếm sẽ
tiếp tục đếm từ giá trị này. Ví dụ dùng Timer tạo thời gian trễ là 1 s:
- Cách 1: Timer hoạt động ở chế độ 1
Dùng Timer 16 bit đếm từ 0, tràn x lần thì tăng số đếm
3.15
536
.
65
1000

ms
ms
x → tràn Timer 15 lần
Cách này gây sai số nhiều bởi có số lẻ 0,3 lần
- Cách 2: Timer hoạt động ở chế độ 1
Dùng Timer 16 bit, chế độ Autoreload chạy tràn
20
50
1000

ms
ms
x lần tràn Timer, với số nạp ban đầu là: 655356-50000=15536
Như vậy ta có thể nạp cho Timer giá trị đầu là 15535, cho Timer đếm tiến tới 65535 thì tràn,
hoặc nạp số -50000. Sai số của phương pháp này chỉ do lấy xấp xỉ tần số thạch anh (thường sử

dụng 11,0592 MHz thay vì 12 MHz), không tránh khỏi.

 Chế độ 3: Chế độ định thời chia sẻ

Chế độ 3 là chế độ định thời chia sẻ và chạy khác nhau cho từng bộ định thời. Ở chế độ này, bộ
đếm được chia thành 2 Timer 8 bit hoạt động riêng lẻ TL0 và TH0, mỗi Timer sẽ set các bit TF0
và TF1 tương ứng khi xảy ra tràn.
GIÁO TRÌNH KỸ THUẬT VI XỬ LÝ PHẦN II: MCS-51
NGUYỄN THANH HẢI, NGÔ THANH BÌNH-KTĐT.ĐHGTVT 13

Timer1 không hoạt động ở chế độ 3, nhưng có thể được khởi động bằng cách chuyển Timer này
vào một chế độ khác. Khi Timer0 ở chế độ 3, Timer1 có thể hoạt động hoặc ngừng bằng cách
chuyển Timer này vào hoặc ra khỏi chế độ 3. Timer1 có thể sử dụng bởi Port nối tiếp làm nhiệm
vụ tạo tốc độ baud rate cho clock, hoặc sử dụng theo một cách khác nhưnưg không yêu cầu ngắt
vì lúc này không còn nối TF1.

Cách xử lý như trên tương đối phức tạp, vì vậy với vi xử lý AT89C52 ngoài các ngắt Timer 0
và 1 như 8051 còn thiết kế thêm Timer 2, chủ yếu phục vụ chủ yếu cho các ứng dụng truyền
thông. Timer 2 được điều khiển thông qua thanh ghi T2CON và T2MOD

Timer2 có 3 chế độ hoạt động: Chế độ thu nhận, chế độ tự nạp lại và chế độ tạo tốc độ baud. Các
chế độ này được chọn bởi các chân theo bảng:

Chú ý rằng Timer2 có thể lập trình đếm lên hoặc xuống khi hoạt động trong chế độ 16 bit, và chỉ

có Timer này có khả năng đếm lùi, Timer0 và Timer1 chỉ đếm tiến. Cách sử dụng các Timer này
các bạn sẽ được tìm hiểu kỹ trong phần ghép nối ngoại vi.
GIÁO TRÌNH KỸ THUẬT VI XỬ LÝ PHẦN II: MCS-51
NGUYỄN THANH HẢI, NGÔ THANH BÌNH-KTĐT.ĐHGTVT 14

GIÁO TRÌNH KỸ THUẬT VI XỬ LÝ PHẦN II: MCS-51
NGUYỄN THANH HẢI, NGÔ THANH BÌNH-KTĐT.ĐHGTVT 15

GIÁO TRÌNH KỸ THUẬT VI XỬ LÝ PHẦN II: MCS-51
NGUYỄN THANH HẢI, NGÔ THANH BÌNH-KTĐT.ĐHGTVT 16

Thanh ghi điều khiển ngắt IE

GIÁO TRÌNH KỸ THUẬT VI XỬ LÝ PHẦN II: MCS-51
NGUYỄN THANH HẢI, NGÔ THANH BÌNH-KTĐT.ĐHGTVT 17
Khi thiết lập trạng thái ban đầu (reset hệ thống) tất cả các ngắt đều bị vô hiệu hoá (cấm), sau đó
chúng được cho phép (set) bằng phần mềm. Khi xảy ra 2 hay nhiều tác động ngắt đồng thời,
hoặc xảy ra một ngắt trong khi ngắt khác đang được phục vụ thì các ngắt được xử ý theo sơ đồ
ưu tiên được lập trình bởi người sử dụng. Mỗi nguyên nhân gây ngắt được hoặc không cho phép
riêng rẽ thông qua thanh ghi cho phép ngắt IE, còn mỗi nguyên nhân gây ngắt được lập trình
riêng rẽ để có một trong hai mức ưu tiên thông qua thanh ghi chức năng đặc biệt điều khiển ưu
tiên ngắt IP.

Trạng thái của tất cả các nguyên nhân gây ra ngắt thể hiện qua các bit cờ tương ứng. Khi hệ
thống được thiết lập trạng thái ban đầu, thanh ghi IP mặc định tất cả các ngắt ở mức ưu tiên thấp.
Nếu có 2 ngắt với mức ưu tiên ngắt khác nhau xuất hiện đồng thời, ngắt có mức ưu tiên cao hơn
sẽ được phục vụ trước. Khi một ngắt xuất hiện và được CPU chấp nhận, chương trình phục vụ
ngắt được kích hoạt theo các bước sau:
- Hoàn tất việc thực thi lệnh hiện hành

- Cất bộ đếm chương trình PC vào Stack
- Lưu giữ trạng thái hiện tại của chương trình chính hoặc ngắt đang làm việc
- Các ngắt được chặn lại ở mức ngắt
- Bộ đếm chương trình PC được nạp địa chỉ của vector phục vụ ngắt mới
- Thực thi phục vụ ngắt mới đén khi gặp lệnh RETI (RETurn Interrupt). Lện này lấy lại
giá trị cũ của bộ đếm chương trình PC từ Stack và phục hồi trngj thái cũ.
- Tiếp tục chương trình ở trạng thái tạm ngưng trước đó.

Khi một chương trình phục vụ ngắt được trỏ tới, cờ gây ra ngắt sẽ tự động bị xoá về 0 bởi phần
cứng. Chú ý rằng khác với Timer là cờ TF sẽ tự động set khi tràn Timer, các ngoại lệ khác bao
gồm cờ RI, TI đối với các Port nối tiếp, TF2 và EXF2 đối với các ngắt Timer2. Các nguyên
nhân gây ngắt thuộc hai ngoại lệ trên do có hai khả năng tạo ra ngắt nên trong thực tế CPU
không xoá cờ ngắt.

GIÁO TRÌNH KỸ THUẬT VI XỬ LÝ PHẦN II: MCS-51
NGUYỄN THANH HẢI, NGÔ THANH BÌNH-KTĐT.ĐHGTVT 18
PORT NỐI TIẾP

Đặc trưng của Port nối tiếp là hoạt động song công, nghĩa là có khả năng thu/phát tín hiệu đồng
thời. Ngoài ra việc đệm dữ liệu của Port nối tiếp cho phép cho phép một ký tự được nhận và lưu
trữ trong bộ đệm thu trong khi ký tự tiếp theo được nhận vào, CPU đọc dữ liệu thứ nhất trước
khi dữ liệu thứ hai được nhận vào đầy đủ, dữ liệu cũng không bị mất. Bộ đệm dữ liệu thu và lưu
dữ liệu vào SBUF, việc ghi lên SBUFsex nạp dữ liệu để phát và việc đọc SBUF sẽ xuất dữ liệu
đã nhậ được. Các thao tác này được điều khiển thông qua thanh ghi điều khiển Port nối tiếp
SCON

Chế độ hoạt động của Port nối tiếp được thiết lập bằng cách ghi từ điều khiển lên thanh ghi chọn
chế độ SCON của Port nối tiếp. Trước khi sử dụng Port nối tiếp, thanh ghi SCON phải được
khởi động đúng theo chế độ yêu cầu. Port nối tiếp có 4 chế độ hoạt động, đựoc chọn bằng cách
ghi 1 hoặc 0 cho các bit SM0 và SM1 trong thanh ghi SCON. Có ba chế độ truyền thông không
đồng bộ, trong đó mỗi ký tự được thu hoặc phát sẽ phát kèm cùng với một bit START và một bit
STOP tạo thành một khung truyền tin (Form).

 Chế độ 0: Thanh ghi dịch 8 bit

Chế độ 0 được chọn bằng cách ghi giá trị 0 và 1 vào các bit SM0 và SM1 trong thanh ghi SCON.
Dữ liệu nối tiếp được thu và phát thông qua chân RxD, chân TxD xuất xung dịch bit. Khi phát
và thu dữ liệu, bit có trọng số thấp nhất LSB được phát hoặc thu đầu tiên. Tốc độ baud cố định
bằng 1/12 tần số của mạch dao động trên chip. Việc phát dữ liệu được khởi động bằng một lệnh
ghi dữ liệu vào SBUF. Dữ liệu được dịch ra ngoài qua chân RxD (P3.0) với các xung Clock dịch
được gửi ra trên chân TxD (P3.1). Mỗi một bit hợp lệ được truyền đi trên đường RxD trong một
chu kỳ máy (1 mc  1 s với thạch anh 11,0592 MHz). Trong mỗi chu kỳ máy, xung Clock dịch
bit đổi thành mức thấp và lấy trở lại mức cao. Việc thu dữ liệu được khởi động khi bit cho phép
GIÁO TRÌNH KỸ THUẬT VI XỬ LÝ PHẦN II: MCS-51
NGUYỄN THANH HẢI, NGÔ THANH BÌNH-KTĐT.ĐHGTVT 19
thu REN ở mức logic 1 và cờ ngắt thu RI ở mức logic 0. Quy luật tổng quát là ta phải set bit
REN = 1 ở thời điểm bắt đầu chương trình để khởi tạo Port nối tiếp, sau đó xoá bit RI = 0 để bắt
đầu công việc thu dữ liệu. Khi bit RI được xoá các xung Clock dịch bit xuất ra trên chân TxD,
bắt đầu chu kỳ máy tiếp theo và dữ liệu được dịch vào chân RxD bởi xung Clock dịch bit, hiển
nhiên là các mạch ghép nối để cung cấp dữ liệu trên đường RxD được đồng bộ bởi xung Clock
dịch bit trên đường TxD.

Chế độ này được ứng dụng trong quang báo, mở rộng cổng cho vi điều khiển. Một vi mạch
thanh ghi dịch nối tiếp  song song có thể được nối với các chân TxD và RxD để cung cấp
thêm 8 đường xuất dữ liệu. Các thanh ghi dịch bit khác có thể ghép cascade với thanh ghi dịch
đầu tiên để mở rộng thêm nữa.

 Chế độ 1: UART 8 bit có tốc độ baud thay đổi

Trong chế độ 1, Port nối tiếp hoạt động như một bộ thu phát không đồng bộ UART 8 bit có tốc
độ baud thay đổi, biến đổi dữ liệu phát từ song song thành nối tiếp để truyền đi trên một đường
truyền và biến đổi dữ liệu thu từ nối tiếp thành song song. Ở chế độ này Form truyền là 10 bit,
10 bit nhận trên RxD và 10 bit phát trên TxD cho mỗi ký tự dữ liệu. Bao gồm 1 bit START
(luôn là 0), 8 bit data và một bit STOP (luôn là 1). Khi hoạt động thu, bit STOP đưa lên RB8 của
SCON. Với 8951 tốc độ baud thiết lập bởi tốc độ tràn của Timer1, còn với 8952 tốc độ baud
được thiết lập bởi tốc đọ ràn của Timer1 hoặc Timer2 hoặc tổ hợp của cả hai (một cho phát và
một cho thu).

Việc cấp xung Clock dịch bit và đồng bộ các thanh ghi dịch bit của Port nối tiếp ở chế độ 1, 2 và
3 được thiết lập bởi bộ đếm 16 bit, ngõ ra của bộ đếm là xung Clock tốc độ baud, ngõ vào được
chọn bởi phần mềm. Việc phát được khởi động bằng cách ghi vào SBUF được thực sự bắt đầu ở
lần tràn kế tiếp của bộ đếm cung cấp tốc độ baud cho Port nối tiếp. Dữ liệu được dịch bit để xuất
ra trên đường TxD sẽ bắt đầu bằng bit START, tiếp theo là 8 bit data rồi đến bit STOP. Thời
gian của mỗi một bit là giá trị nghịch đảo của tốc độ baud. Cò ngắt phát TI được set bằng 1 ngay
kgi bit STOP xuất hiện trên đường TxD. Việc nhận được khởi động bởi một chuyển trạng thái từ
1 xuống 0 trên đường RxD (bắt đầu start). Bộ đếm ngay lập tức được xoá đi để gán các số đếm
cho dòng bit đến chân RxD, bit kế tiếp đến khi bộ đếm tràn lần nữa.

Bộ thu phát hiện bit START bằng cách yêu cầu 8 số đếm ở trạng thái 0 sau khi có sự chuyển
trạng thái từ 1 xuống 0 lần đầu tiên. Nếu điều này không xảy ra, bộ thu biết rằng đã nhận được
nhiều bit thay vì một bit hợp lệ, bộ thu sẽ được thiết lập lại quay về trạng thái nghỉ và chờ sự
chuyển trạng thái từ 1 xuống 0 kế tiếp. Giả sử một bit START hợp lệ được phát hiện, việc nhận
ký tự sẽ tiếp tục, bit START được bỏ qua và 8 bit data được nhận tuần tự vào thanh ghi dịch của
Port nối tiếp. Khi cả 8 bit ddax được nhận, vi xử lý thực hiện các việc sau:

- Bit thứ 0 (STOP bit) được đưa đến bit RB8 trong thanh ghi SCON
- 8 bit dữ liệu (data bit) được nạp vào SBUF
- Cờ ngắt thu RI được set lên 1
MCS51

TxD (P3.1)

RxD (P3.0)

Clock

Data

Shift registerr

8 extra outputs

GIÁO TRÌNH KỸ THUẬT VI XỬ LÝ PHẦN II: MCS-51
NGUYỄN THANH HẢI, NGÔ THANH BÌNH-KTĐT.ĐHGTVT 20

 Chế độ 2: UART 9 bit có tốc độ baud cố định

Khi SM0 = 0 và SM1 = 1 Port nối tiếp hoạt dộng ở chế độ 2, chế độ UART 9 bit có tốc độ baud
cố định. Form truyền là 11 bit cho việc thu/phát một ký tự dữ liệu, bao gồm 1 bit START, 8 bit
data, bit thứ 9 lập trình được và 1 bit STOP. Khi phát bit thứ 9 là bit kiểm tra chẵn lẻ (Parity bit)
được đặt vào bit TB8 trong thanh ghi SCON, khi thu bit thứ 9 nhận được sẽ được đặt vào bit
RB8. Tốc độ baud ở chế độ 2 bằng 1/32 hoặc 1/64 tần số mạch dao động trên chip.

 Chế độ 3: UART 9 bit có tốc độ baud thay đổi

Chế độ này tương tự như chế độ 2 ngoại trừ việc tốc độ baud được lập trình bởi Timer. Thật ra
về cơ chế hoạt động của chế độ 1, 2 và 3 là như nhau, các chế độ hoạt động này chỉ khác nhau ở
ở tốc độ baud (cố định ở chế độ 2, thay đổi ở chế độ 3) và ở số bit dữ liệu (8 bit ở chế độ 1, 9 bit
ở chế dộ 2 và 3).

Tốc độ baud của Port nối tiếp:

Tốc độ baud sẽ luôn là cố định trong các chế độ 0 và 2. Trong chế độ 0, tốc độ baud luôn bằng
tần số của mạch dao động chia cho 12. Thông thường khi sử dụng chế độ này trong truyền thông,
ta sử dụng thạch anh dao động ngoài có tần số 12 MHz để thu được tốc độ baud chế độ 0 là 1
Mhz. Với chế độ 2, sau khi reset hệ thống, tốc độ baud bằng tần số của mạch dao động chia cho
64. Bit số 7 của PCON là SMOD quy định việc chia tần số dao động, SMOD = 1 chia tần cho 32,
SMOD = 0 chia tần cho 64.

Các tốc độ baud của 8951 ở chế độ 1 và 3 được xác định bởi tốc độ tràn của Timer1. Vì các
Timer hoạt động ở tần số tương đối cao nên ta cần chia tốc độ tràn Timer cho 32 (SMOD = 0)
hoặc 16 (SMOD = 1) trước khi tạo thành Clock cấp cho Port nối tiếp. Tốc độ baud của 8952 ở
các chế độ 1 và 3 được xác định bởi tốc độ tràn Timer1 hoặc Timer2 hoặc cả hai Timer.


12
on chip
Oscillator

baud rate
clock
(a) Mode 0

32

64
on chip
Oscillator

baud rate
clock
(b) Mode 2
32
Timer1
overflow
baud rate
clock
(b) Mode 1 và 3

16

GIÁO TRÌNH KỸ THUẬT VI XỬ LÝ PHẦN II: MCS-51
NGUYỄN THANH HẢI, NGÔ THANH BÌNH-KTĐT.ĐHGTVT 21
Khi sử dụng Timer1 làm xung clock tạo tốc độ baud, kỹ thuật thường dùng là khởi động thanh
ghi TMOD ở chế độ Autoreload 8 bit (chế độ định thời 2) và đặt giá trị nạp lại thích hợp vào
thanh ghi TH1. Khởi tạo TMOD bằng lệnh mov TMOD,#0010xxxxB , với xxxx dành cho
Timer0. Đây không phải là khả năng duy nhất, các tốc độ baud chậm có thể nhận được bằng
cách sử dụng Timer chế độ 16 bit, chế độ định thời 2 với TMOD = 0001xxxxB, các thanh ghi
TH1/TL1 phải được nạp lại sau mỗi lần tràn Timer. Điều này cần thực hiện nạp lại trong chương
trình phục vụ ngắt. Một lựa chọn khác là cung cấp xung clock bên ngoài cho Timer1 bằng cách
sử dụng ngõ vào T1 (P3.5). Dù là lựa chọn nào tốc độ baud cũng bằng tốc độ tràn của Timer1
chia cho 32. do vậy công thức xác định tốc độ baud ở chế độ 1 và 3 là:
Baud rate = Timer1 overflow rate : 32
Thí dụ nếu cần tốc độ baud là 1200, tốc độ tràn của Timer1 phải là 38,4KHz (1200 x 32). Nếu
tần số dao động của mạch dao động là 12 MHz, Timer phải tràn ở tốc độ 38,4 KHz, như vậy
hiện tượng tràn cần xảy ra sau mỗi 26,04 xung (1000/38,4) và sđược làm tròn là 26. Do Timer
chỉ đếm tiến, tràn khi có số đếm từ FFH chuyển thành 00H, như vậy ta cần nạp lại tự động (Auto
reload) số - 26 (0E6H) thông qua lệnh mov TH1,#0E6H . Do làm tròn số xung đếm nên sẽ tạo ra
sai số trong kết quả tính tốc độ baud. Nói chung một sai số 5% là chấp nhận được trong truyền
dữ liệu không đồng bộ. Để cấp tốc độ baud chính xác, ta sử dụng thạch anh 11,0592 MHz với số
nạp là –3 (FDH).

Baud rate Tần số
thạch anh
SMOD Giá trị nạp
cho TH1
Baud rate
thực tế
Sai số
9600 12 MHz 1 -7 (F9H) 8923 7%
2400 12 MHz 0 - 13 (F3H) 2404 0,16%

1200 12 MHz 0 - 26 (E6H) 1202 0.16%
9600 11,0592 MHz

0 -3 (FDH) 9600 0
2400 11,0592 MHz

0 - 12 (F4H) 2400 0
1200 11,0592 MHz

0 -24 (E8H) 1200 0

GIÁO TRÌNH KỸ THUẬT VI XỬ LÝ PHẦN II: MCS-51
NGUYỄN THANH HẢI, NGÔ THANH BÌNH-KTĐT.ĐHGTVT 22
II.3. PHẦN CỨNG TỐI THIỂU CỦA HỌ MCS51

Phần cứng tối thiểu là cấu hình đơn giản nhất của phần cứng để hệ thống có thể hoạt động được
với những bài toán thông thường. Với các ứng dụng đơn giản, thường ta nên chọn tần số thạch
anh giao động ngoài là 12 MHz, còn với những ứng dụng liên quan tới truyền thông ta chọn
thạch anh 11,0592MHz để dễ dàng tính toán tốc độ truyền tin.

Dưới đây đưa ra sơ đồ nguồn +5 VDC và sơ đồ tối thiểu cho một cấu trúc tối thiểu AT89C52 sử
dụng bộ nhớ trong, dao động sử dụng thạch anh ngoài 11,0592 MHz. Cầu Diode trong phần
nguồn các bạn có thể thay 4 Diode bằng cầu chế tạo sẵn. Ngoài ra để chống nhiễu tốt nên lắp
thêm cuộn dây và Diode vào phím như sơ đồ chi tiết bảng thí nghiệm.

D15 1N4007
C4

10u
R1 470
+
C6
1000u/25V
#EA
C5
104
D14 LED
VCC
VCC
C8
104
D13 1N4007
U3
AT89C52
9
18
19
20
29
30
31
40
1
2
3
4
5
6

7
8
10
11
12
13
14
15
16
17
39
38
37
36
35
34
33
32
21
22
23
24
25
26
27
28
RST
XTAL2
XTAL1
GND

PSEN
ALE/PROG
EA/VPP
VCC
P1.0
P1.1
P1.2
P1.3
P1.4
P1.5
P1.6
P1.7
P3.0/RXD
P3.1/TXD
P3.2/INT0
P3.3/INT1
P3.4/T0
P3.5/T1
P3.6/WR
P3.7/RD
P0.0/AD0
P0.1/AD1
P0.2/AD2
P0.3/AD3
P0.4/AD4
P0.5/AD5
P0.6/AD6
P0.7/AD7
P2.0/A8
P2.1/A9

P2.2/A10
P2.3/A11
P2.4/A12
P2.5/A13
P2.6/A14
P2.7/A15
RESET
Y1
11.0592MHz
VCCU4
LM7805C/TO
1 3
IN OUT
C2
33
R20 470
D16 1N4007
J5
DC JACK
1
2
D12 1N4007
+
C7
470u/25V
#EA
R2
10K
C3
33

R3
4K7
VCC

Tuỳ theo yêu cầu bài toán cụ thể các bạn sẽ phát triển ghép nối thêm những linh kiện phù hợp,
những chân không sử dụng trong sơ đồ đánh dấu “x”. Các chân Port 0, 1, 2, 3 ở đây chưa thiết
kế vào mục đích gì, đang để nguyên.

GIÁO TRÌNH KỸ THUẬT VI XỬ LÝ PHẦN II: MCS-51
NGUYỄN THANH HẢI, NGÔ THANH BÌNH-KTĐT.ĐHGTVT 23
CHƯƠNG IV: LẬP TRÌNH CHO HỆ VI ĐIỀU KHIỂN

I. Một số phần mềm lập trình thông dụng.

II. Tổ chức chương trình phần mềm.

Tổng quan:

Khi một bài toán thực tế được đưa ra, ta cần phải tìm hiểu cặn kẽ các yêu cầu do bài toán đặt ra
và thực hiện giải quyết theo các bước sau:

- Bước 1: Định hướng giải quyết.
- Bước 2: Lựa chọn phương án thiết kế phần cứng.
- Bước 3: Lập lưu đồ thuật toán cho thiết kế phần mềm.
- Bước 4: Thể hiện lưu đồ thuật toán bằng các lệnh cụ thể.

Các bước 1 và 2 đã được trình bày trong các tài liệu hướng dẫn thiết kế các mạch thí nghiệm, ở
đây chỉ chú trọng vào giải quyết các bước 3 và 4. Trong giai đoạn thiết kế phần mềm, bước 3
không chỉ là bước tiên phong mà còn là bước có ý nghĩa quyết định đối với sự thành công và
chất lượng của sản phẩm. Bước 4 chỉ là bước hoàn thiện cuối cùng của việc giải quyết một bài
toán.
Cách xây dựng lưu đồ thuật toán
Trước hết nói về lưu đồ thuật toán, như đã đề cập đến trong phần các kiến thức căn bản trong Kỹ
thuật Vi xử lý, lưu đồ thuật toán có vai trò đặc biệt quan trọng trong thiết kế phần mềm. Về cơ
bản, một lưu đồ thuật toán có thể được xây dựng bằng các biểu tượng sau đây:

 Biểu tượng 1:

Đây là biểu tượng dùng để chỉ sự bắt đầu hay kết thúc một nhiệm vụ hay một chương trình. Biểu
tượng này chỉ có một đầu vào hoặc một đầu ra.

 Biểu tượng 2:

Đây là biểu tượng dùng để diễn đạt sự thực hiện một thao tác nào đó trong chương trình chính.
Biểu tượng này có một đầu vào và một đầu ra.

 Biểu tượng 3:

GIÁO TRÌNH KỸ THUẬT VI XỬ LÝ PHẦN II: MCS-51
NGUYỄN THANH HẢI, NGÔ THANH BÌNH-KTĐT.ĐHGTVT 24

Đây là biểu tượng dùng để diễn đạt sự lựa chọn một trong hai phương án đúng hoặc sai đối với
điều kiện hay tình huống được nêu ra trong đó. Biểu tượng này chỉ có một đầu vào nhưng lại có
hai đầu ra.

 Biểu tượng 4:

Đây là biểu tượng dùng để diễn đạt sự thực hiện một thao tác nào đó trong chương trình con
hoặc ngắt. Biểu tượng này có một đầu vào và một đầu ra.

 Biểu tượng 5:

Đây là biểu tượng dùng để diễn đạt việc đưa dữ liệu vào hoặc ra cổng Port. Biểu tượng này có
một đầu vào và một đầu ra.

 Biểu tượng 6:

Đây là biểu tượng dùng để diễn đạt tiến trình làm việc của chương trình.

III. Tập lệnh hệ vi điều khiển

Các ký hiệu sử dụng

A - thanh ghi chứa
B

- thanh ghi B
Ri - thanh ghi R0 hoặc R1 của bất kỳ băng thanh ghi nào trong 4 băng thanh ghi trong
- RAM
Rn - bất kỳ thanh ghi nào của bất kỳ băng thanh ghi nào trong 4 băng thanh ghi trong
RAM.
Dptr - thanh ghi con trỏ dữ liệu (có độ rộng 16bit được kết hợp từ 2 thanh ghi 8 bit là
DPH và DPL)
Direct - là một biến 8 bit(hay chính là ô nhớ) bất kỳ trong RAM (trừ 32 thanh ghi Rn ở
đầu RAM, địa chỉ phần thấp)
#data - là một hằng số 8 bit bất kỳ
#data16 - là một hằng số 16 bit bất kỳ
<rel> - là địa chỉ nằm trong khoảng [PC-128 ; PC+127]
<addr11>

- là địa chỉ nằm trong khoảng [PC-
<addr16>

- là địa chỉ bất kỳ trong không gian 64K (áp dụng cho cả không gian nhớ chương
trình và không gian nhớ dữ liệu)
<bit> - bit bất kỳ có thể đánh địa chỉ được (không dùng cho các bit không đánh được địa

chỉ)

GIÁO TRÌNH KỸ THUẬT VI XỬ LÝ PHẦN II: MCS-51
NGUYỄN THANH HẢI, NGÔ THANH BÌNH-KTĐT.ĐHGTVT 25

CÁC LỆNH TÁC ĐỘNG TRONG THANH GHI TRẠNG THÁI

STT

Lệnh

Cờ CY

Cờ OV

Cờ AC
0 ADD X X X
1 ADDC X X X
2 SUBB X X X
3 MUL 0 X
4 DIV 0 X
5 DA X
6 RRC X
7 RLC X
8 SETB C 1
9 CLR C 0
10 CPL C X
11 ANL C,<bit> X

12 ORL C,<bit> X
13 MOV C,<bit> X
14 CJNE X

0: cờ bị xóa về “0”.
1: cờ bị set lên “1”.
X: cờ bị thay đổi tùy theo kết quả của việc thực hiện lệnh.

CÁC LỆNH TÍNH TOÁN SỐ HỌC

STT

Cú pháp lệnh Mô tả Số byte
mã hóa

Số chu
kỳ clock

Mã lệnh

Toán hạng
1 ADD A,Rn A = A + Rn 1 12
2 ADD A,direct A = A + direct 2 12
3 ADD A,@Ri A = A + @Ri 1 12
4 ADD A,#data A = A + #data 2 12
5 ADDC A,Rn A = A + Rn + C 1 12
6 ADDC A,direct A = A + direct + C 2 12
7 ADDC A,@Ri A = A + @Ri + C 1 12
8 ADDC A,#data A = A + #data + C 2 12
9 SUBB A,Rn A = A – Rn – C 1 12

10 SUBB A,direct A = A – direct – C 2 12
11 SUBB A,@Ri A = A – @Ri – C 1 12
12 SUBB A,#data A = A – #data – C 2 12
13 INC A A = A + 1 1 12
14 INC Rn Rn = Rn + 1 1 12
15 INC Direct direct = direct + 1 2 12
16 INC @Ri @Ri = @Ri + 1 1 12
17 DEC A A = A – 1 1 12
18 DEC Rn Rn = Rn – 1 1 12
19 DEC Direct direct = direct – 1 2 12
20 DEC @Ri @Ri = @Ri – 1 1 12
21 INC Dptr dptr = dptr + 1 1 24