LẬP TRÌNH VI ĐIỀU KHIỂN - BÀI 1 - CẤU TRÚC VI ĐIỀU KHIỂN - Pdf 20

BÀI 1: CẤU TRÚC VI ĐIỀU KHIỂN
1.1.1. Sơ lược về vi xử lý:
Trong những thập niên cuối thế kỉ XX, từ sự ra đời của công nghệ bán dẫn, kĩ thuật
điện tử đã có sự phát triển vượt bậc. Các thiết bị điện tử sau đó đã được tích hợp với mật
độ cao và rất cao trong các diện tích nhỏ, nhờ vậy các thiết bị điện tử nhỏ hơn và nhiều
chức năng hơn. Các thiết bị điện tử ngày càng nhiều chức năng trong khi giá thành ngày
càng rẻ hơn, chính vì vậy điện tử có mặt khắp mọi nơi.
Bước đột phá mới trong công nghệ điện tử, công ty trẻ tuổi Intel cho ra đời bộ vi xử
lý đầu tiên. Đột phá ở chỗ: "Đó là một kết cấu logic mà có thể thay đổi chức năng của
nó bằng chương trình ngoài chứ không phát triển theo hướng tạo một cấu trúc phần
cứng chỉ thực hiện theo một số chức năng nhất định như trước đây"(trích từ dòng 17 đến
19, trang 3, 'Kĩ thuật VI XỬ LÝ và lập trình ASSEMBLY cho hệ vi xử lý', tác giả Đỗ
Xuân Tiến, nhà xuất bản Khoa học và kĩ thuật). Tức là phần cứng chỉ đóng vai trò thứ
yếu, phần mềm (chương trình) đóng vai trò chủ đạo đối với các chức năng cần thực hiện.
Nhờ vậy vi xử lý có sự mềm dẻo hóa trong các chức năng của mình. Ngày nay vi xử lý
có tốc độ tính toán rất cao và khả năng xử lý rất lớn.
Vi xử lý có các khối chức năng cần thiết để lấy dữ liệu, xử lý dữ liệu và xuất dữ
liệu ra ngoài sau khi đã xử lý. Và chức năng chính của Vi xử lý chính là xử lý dữ liệu,
chẳng hạn như cộng, trừ, nhân, chia, so sánh.v.v Vi xử lý không có khả năng giao
tiếp trực tiếp với các thiết bị ngoại vi, nó chỉ có khả năng nhận và xử lý dữ liệu mà thôi.
Để vi xử lý hoạt động cần có chương trình kèm theo, các chương trình này điều
khiển các mạch logic và từ đó vi xử lý xử lý các dữ liệu cần thiết theo yêu cầu. Chương
trình là tập hợp các lệnh để xử lý dữ liệu thực hiện từng lệnh được lưu trữ trong bộ nhớ,
công việc thực hành lệnh bao gồm: nhận lệnh từ bộ nhớ, giải mã lệnh và thực hiện lệnh
sau khi đã giải mã.
Để thực hiện các công việc với các thiết bị cuối cùng, chẳng hạn điều khiển động cơ,
hiển thị kí tự trên màn hình đòi hỏi phải kết hợp vi xử lý với các mạch điện giao tiếp
với bên ngoài được gọi là các thiết bị I/O (nhập/xuất) hay còn gọi là các thiết bị ngoại vi.
Bản thân các vi xử lý khi đứng một mình không có nhiều hiệu quả sử dụng, nhưng khi là
một phần của một máy tính, thì hiệu quả ứng dụng của Vi xử lý là rất lớn. Vi xử lý kết
hợp với các thiết bị khác được sử trong các hệ thống lớn, phức tạp đòi hỏi phải xử lý

chức năng đơn giản, trong máy giặt, ôtô v.v
Năm 1976 Intel giới thiệu bộ vi điều khiển (microcontroller) 8748, một chip tương
tự như các bộ vi xử lý và là chip đầu tiên trong họ MCS-48. Độ phức tạp, kích thước và
khả năng của Vi điều khiển tăng thêm một bậc quan trọng vào năm 1980 khi intel tung
ra chip 8051, bộ Vi điều khiển đầu tiên của họ MCS-51 và là chuẩn công nghệ cho nhiều
họ Vi điều khiển được sản xuất sau này. Sau đó rất nhiều họ Vi điều khiển của nhiều nhà
chế tạo khác nhau lần lượt được đưa ra thị trường với tính năng được cải tiến ngày càng
mạnh.
1.1.3.HỌ MSC-51
Hiện nay có rất nhiều họ Vi điều khiển trên thị trường với nhiều ứng dụng khác
nhau, trong đó họ Vi điều khiển họ MCS-51 được sử dụng rất rộng rãi trên thế giới và ở
Việt nam.
Vào năm 1980 Intel công bố chíp 8051(80C51), bộ vi điều khiển đầu tiên của họ
vi điều khiển MCS-51. Nó bao gồm 4KB ROM, 128 byte RAM, 32 đường xuất nhập, 1
port nối tiếp và 2 bộ định thời 16 bit. Tiếp theo sau đó là sự ra đời của chip
8052,8053,8055 với nhiều tính năng được cải tiến
Hiện nay Intel không còn cung cấp các loại Vi điều khiển họ MCS-51 nữa, thay
vào đó các nhà sản xuất khác như Atmel, Philips/signetics, AMD, Siemens,
Matra&Dallas, Semiconductors được cấp phép làm nhà cung cấp thứ hai cho các chip của
họ MSC-51. Chip Vi điều khiển được sử dụng rộng rãi trên thế giới cũng như ở Việt Nam
hiện nay là Vi điều khiển của hãng Atmel với nhiều chủng loại vi điều khiển khác nhau.
Hãng Atmel có các chip Vi điều khiển có tính năng tương tự như chip Vi điều
khiển MCS-51 của Intel, các mã số chip được thay đổi chút ít khi được Atmel sản xuất.
Mã số 80 chuyển thành 89, chẳng hạn 80C52 của Intel khi sản xuất ở Atmel mã số thành
89C52 (Mã số đầy đủ: AT89C52) với tính năng chương trình tương tự như nhau. Tương
tự 8051,8053,8055 có mã số tương đương ở Atmel là 89C51,89C53,89C55. Vi điều khiển
Atmel sau này ngày càng được cải tiến và được bổ sung thêm nhiều chức năng tiện lợi
hơn cho người dùng.
Bảng 1
Dung lượng RAM Dung lượng ROM Chế độ nạp

89Sxx có chế độ nạp nối tiếp với mạch nạp đơn giản có khả năng nạp ngay trên bo
mạch mà không cần tháo chip vi điều khiển sang mạch khác để nạp chương trình và
nhiều tính năng cải tiến khác.
1.1.4.CÁC LOẠI VI ĐIỀU KHIỂN KHÁC
Vi điều khiển AVR
Vi điều khiển PIC
Vi điều khiển MCUs của Philips
Các loại vi điều khiển chuyên dụng của các hãng sản xuất khác: Các loại vi điều
khiển này được sử dụng chuyên dụng theo chức năng cần điều khiển.

II.SƠ LƯỢC PHẦN CỨNG VI ĐIỀU KHIỂN-GIAO TIẾP BÊN NGOÀI
Các thành viên của họ MCS-51 (Atmel) có các đặc điểm chung như sau:
Có 4/8/12/20 Kbyte bộ nhớ FLASH ROM bên trong để lưu chương trình. Nhờ vậy
Vi điều khiển có khả năng nạp xoá chương trình bằng điện đến 10000 lần.
128 Byte RAM nội
4 Port xuất/nhập 8 bit
Từ 2 đến 3 bộ định thời 16-bit
Có khả năng giao tiếp truyền dữ liệu nối tiếp
Có thể mở rộng không gian nhớ chương trình ngoài 64KByte (bộ nhớ ROM ngoại):
khi chương trình do người lập trình viết ra có dung lượng lớn hơn dung lượng bộ nhớ
ROM nội, để lưu được chương trình này cần bộ nhớ ROM lớn hơn, cách giải quyết là kết
nối Vi điều khiển với bộ nhớ ROM từ bên ngoài (hay còn gọi là ROM ngoại). Dung
lượng bộ nhớ ROM ngoại lớn nhất mà Vi điều khiển có thể kết nối là 64KByte
Có thể mở rộng không gian nhớ dữ liệu ngoài 64KByte (bộ nhớ RAM ngoại)
Bộ xử lí bit (thao tác trên các bit riêng rẽ)
210 bit có thể truy xuất đến từng bit
1.2.KHẢO SÁT SƠ ĐỒ CHÂN
Mặc dù các thành viên của họ MSC-51 có nhiều kiểu đóng vỏ khác nhau, chẳng hạn
như hai hàng chân DIP (Dual In-Line Pakage) dạng vỏ dẹt vuông QFP (Quad Flat
Pakage) và dạng chíp không có chân đỡ LLC (Leadless Chip Carrier) và đều có 40 chân


Bit Tên Chức năng
P3.0 RxD Ngõ vào nhận dữ liệu nối tiếp
P3.1 TxD Ngõ xuất dữ liệu nối tiếp
P3.2 INT0 Ngõ vào ngắt cứng thứ 0
P3.3 INT1 Ngõ vào ngắt cứng thứ 1
P3.4 T0 Ngõ vào của Timer/Counter thứ 0
P3.5 T1 Ngõ vào của Timer/Counter thứ 1
P3.6 WR Ngõ điều khiển ghi dữ liệu lên bộ nhớ ngoài
P3.7 RD Ngõ điều khiển đọc dữ liệu từ bộ nhớ bên ngoài
P1.0 T2 Ngõ vào của Timer/Counter thứ 2
P1.1 T2X Ngõ Nạp lại/thu nhận của Timer/Counter thứ 2
1.2.7. Chân RESET (RST)
Ngõ vào RST ở chân 9 là ngõ vào Reset dùng để thiết lập trạng thái ban đầu cho vi
điều khiển. Hệ thống sẽ được thiết lập lại các giá trị ban đầu nếu ngõ này ở mức 1 tối
thiểu 2 chu kì máy.
1.2.8.Chân XTAL1 và XTAL2
Hai chân này có vị trí chân là 18 và 19 được sử dụng để nhận nguồn xung clock từ
bên ngoài để hoạt động, thường được ghép nối với thạch anh và các tụ để tạo nguồn xung
clock ổn định.
1.2.9. Chân cho phép bộ nhớ chương trình PSEN
PSEN ( program store enable) tín hiệu được xuất ra ở chân 29 dùng để truy xuất bộ
nhớ chương trình ngoài. Chân này thường được nối với chân OE (output enable) của
ROM ngoài.
Khi vi điều khiển làm việc với bộ nhớ chương trình ngoài, chân này phát ra tín hiệu
kích hoạt ở mức thấp và được kích hoạt 2 lần trong một chu kì
máy
Khi thực thi một chương trình ở ROM nội, chân này được
duy trì ở mức logic không tích cực (logic 1)
(Không cần kết nối chân này khi không sử dụng đến)
Hoặc có thể cấp tín hiệu xung clock lấy từ một mạch tạo dao động nào đó và đưa vào
Vi điều khiển theo cách sau:

NC: để trống, chân XTAL2 để trống
Hình 1.2.3
1.3.2.Chu kì máy
Gọi f
zat
là tần số dao động của thạch anh. Đối với 89Sxx có thể sử dụng thạch anh có
tần số f
zat
từ 2MHz đến 33MHz.
Chu kì máy là khoảng thời gian cần thiết được qui định để Vi điều khiển thực hiện
hoàn thành một lệnh cơ bản. Một chu kì máy bằng 12 lần chu kì dao động của nguồn
xung dao động cấp cho nó.
T
ck
= 12.T
oc

Với: T
ck
là chu kì máy
T
oc

1.3.3. Kết nối chân RESET-chân 9
Việc kết nối chân RESET đảm bảo hệ thống bắt đầu làm việc khi Vi điều khiển được
cấp điện, hoặc đang hoạt động mà hệ thống bị lỗi cần tác động cho Vi điều khiển hoạt
động trở lại, hoặc do người sử dụng muốn quay về trạng thái hoạt động ban đầu. Vì vậy
chân RESET được kết nối như sau:
Với Vi điều khiển sử dụng thạch anh có tần số f
zat
= 12MHz sử dụng C=10µF và
R=10KΩ.
Hình 1.2.4
1.3.4. Kết nối các Port với led.
Các Port khi xuất tín hiệu ở mức logic 1 thường không đạt đến 5V mà dao động
trong khoảng từ 3.5V đến 4.9V và dòng xuất ra rất nhỏ dưới 5mA(P0,P2 dòng xuất
khoảng 1mA; P1,P3 dòng xuất ra khoảng 1mA đến 5mA) vì vậy dòng xuất này
không đủ để có thể làm led sáng
Tuy nhiên khi các Port xuất tín hiệu ở mức logic 0 dòng điện cho phép đi qua lớn
hơn rất nhiều:
Chân Vi điều khiển khi ở mức 0:
Dòng lớn nhất qua P0 : -25mA
Dòng lớn nhất qua P1,P2,P3 : -15mA

Do đó khi kết nối với led hoặc các thiết bị khác Vi điều khiển sẽ gặp trở ngại là nếu
tác động làm led sáng khi Vi điều khiển xuất ở mức 1, lúc này dòng và áp ra không đủ để
led có thể sáng rõ (led đỏ sáng ở điện áp 1.6V-2.2V và dòng trong khoảng 10mA). Khắc

CẤU TRÚC BÊN TRONG CỦA VI ĐIỀU KHIỂN
1.4.BỘ NHỚ CHƯƠNG TRÌNH- BỘ NHỚ ROM
Bộ nhớ ROM dùng để lưu chương trình do người viết chương trình viết ra. Chương
trình là tập hợp các câu lệnh thể hiện các thuật toán để giải quyết các công việc cụ thể,
chương trình do người thiết kế viết trên máy vi tính, sau đó được đưa vào lưu trong ROM
của vi điều khiển, khi hoạt động, vi điều khiển truy xuất từng câu lệnh trong ROM để
thực hiện chương trình. ROM còn dùng để chứa số liệu các bảng, các tham số hệ thống,
các số liệu cố định của hệ thống. Trong quá trình hoạt động nội dung ROM là cố định,
không thể thay đổi, nội dung ROM chỉ thay đổi khi ROM ở chế độ xóa hoặc nạp chương
trình (do các mạch điện riêng biệt thực hiện).
Bộ nhớ ROM được tích hợp trong chip Vi điều khiển với dung lượng tùy vào chủng
loại cần dùng, chẳng hạn đối với 89S52 là 8KByte, với 89S53 là 12KByte.
Bộ nhớ bên trong Vi điều khiển 89Sxx là bộ nhớ Flash ROM cho phép xóa bộ nhớ
ROM bằng điện và nạp vào chương trình mới cũng bằng điện và có thể nạp xóa nhiều lần
Bộ nhớ ROM được định địa chỉ theo từng Byte, các byte được đánh địa chỉ theo số
hex-số thập lục phân, bắt đầu từ địa chỉ 0000H, khi viết chương trình cần chú ý đến địa
chỉ lớn nhất trên ROM, chương trình được lưu sẽ bị mất khi địa chỉ lưu vượt qua vùng
này. Ví dụ: AT89S52 có 8KByte bộ nhớ ROM nội, địa chỉ lớn nhất là 1FFFH, nếu
chương trình viết ra có dung lượng lớn hơn 8KByte các byte trong các địa chỉ lớn hơn
1FFFH sẽ bị mất.
Ngoài ra Vi điều khiển còn có khả năng mở rộng bộ nhớ ROM với việc giao tiếp với bộ
nhớ ROM bên ngoài lên đến 64KByte(địa chỉ từ 0000H đến FFFFH).
1.5.BỘ NHỚ DỮ LIỆU- BỘ NHỚ RAM
Bộ nhớ RAM dùng làm môi trường xử lý thông tin, lưu trữ các kết quả trung gian và
kết quả cuối cùng của các phép toán, xử lí thông tin. Nó cũng dùng để tổ chức các vùng
đệm dữ liệu, trong các thao tác thu phát, chuyển đổi dữ liệu.
RAM nội trong Vi điều khiển được tổ chức như sau:
Các vị trí trên RAM được định địa chỉ theo từng Byte bằng các số thập lục phân
(số Hex)
Các bank thanh ghi có địa chỉ 00H đến 1FH

22
21
20
1F
18
17

10
0F

08
07

00

Vùng RAM
bình thường
7F 7E 7D 7C 7B 7A 79 78
77 76 75 74 73 72 71 70
6F 6E 6D 6C 6B 6A 69 68
67 66 65 64 63 62 61 60
5F 5E 5D 5C 5B 5A 59 58
57 56 55 54 53 52 51 50
4F 4E 4D 4C 4B 4A 49 48
47 46 45 44 43 42 41 40
3F 3E 3D 3C 3B 3A 39 38
37 36 35 34 33 32 31 30
2F 2E 2D 2C 2B 2A 29 28
27 26 25 24 23 22 21 20
1F 1E 1D 1C 1B 1A 19 18

8C
8B
8A
89
88
87

83
82
81
80

F7 F6 F5 F4 F3 F2 F1 F0

E7 E6 E5 E4 E3 E2 E1 E0

D7 D6 D5 D4 D3 D2 D1 D0

- - - BC BB BA B9 B8

B7 B6 B5 B4 B3 B2 B1 B0

AF AC AB AA A9 A8

A7 A6 A5 A4 A3 A2 A1 A097 96 95 94 93 92 91 90

P1

TH1
TH0
TL1
TL0
TMOD
TCON
PCON

DPH
DPL
SP
P0

Bảng này chỉ hiện thị đúng khi xem bằng Interner Explorer 1.5.1. Các bank thanh ghi
Các bank thanh ghi có địa chỉ byte từ 00H đến 1FH, có 8 thanh ghi trong mỗi bank,
các thanh ghi được đặt tên từ R0-R7, các thanh ghi này được đặt mặc định trong bank 1.
Có 4 bank thanh ghi và tại mỗi thời điểm chỉ có một bank thanh ghi được truy xuất với
các thanh ghi từ R0 đến R7, để thay đổi việc truy xuất các thanh ghi trên các bank thanh
ghi, người dùng phải thay đổi giá trị các bit chọn bank trong thanh ghi trạng thái PSW
bằng các câu lệnh trong chương trình.
Các lệnh dùng các thanh ghi từ R0 đến R7 mất khoảng không gian lưu trữ ít hơn và
thời gian thực hiện nhanh hơn so với các lệnh dùng các ô nhớ RAM khác, ngoài ra các
thanh ghi này còn có thêm một số chức năng đặc biệt khác, vì lí do này các dữ liệu sử
dụng thường thường được người viết chương trình đưa vào lưu trong các thanh ghi này.

Thanh ghi A là thanh ghi quan trọng, dùng để lưu trữ các toán hạng và kết quả của
phép tính.
Thanh ghi A có độ dài 8 bits, có địa chỉ là E0H.
1.5.8. thanh ghi B
Thanh ghi B ở địa chỉ F0H, được dùng với thanh ghi A để thực hiện các phép toán số
học. Khi thực hiện lệnh chia với thanh ghi A, số dư được lưu trữ ở thanh ghi B. Ngoài ra
thanh ghi B còn được dùng như một thanh ghi đệm có nhiều chức năng.
1.5.9.Con trỏ ngăn xếp SP: địa chỉ 81H
Con trỏ ngăn xếp SP là một thanh ghi có địa chỉ 81H, giá trị của nó được tăng,giảm
tự động khi thực hiện các lệnh PUSH, CALL,POP con trỏ SP dùng quản lí và xử lí các
nhóm dữ liệu liên tục.Giá trị mặc định của SP là 07H.

1.5.10. Con trỏ dữ liệu DPTR.
Con trỏ dữ liệu DPTR là thanh ghi 16 bit duy nhất của Vi điều khiển được tạo thành
từ hai thanh ghi DPL (byte thấp-địa chỉ byte 82H) và DPH (byte cao-địa chỉ byte 83H).
Hai thanh ghi DPL và DPT có thể truy xuất độc lập bởi người sử dụng. Con trỏ dữ liệu
DPTR thường được sử dụng khi truy xuất dữ liệu từ bộ nhớ ROM hoặc bộ nhớ từ bên
ngoài.
1.5.11.Thanh ghi trạng thái chương trình PSW (địa chỉ byte D0H)

BIT
ĐỊA
CHỈ
BIT
KÍ HIỆU CHỨC NĂNG
PSW.7 D7H
C hoặc
Cy
Cờ nhớ
PSW.6 D6H AC Cờ nhớ phụ

Cờ tràn OV
Được sử dụng trong các phép toán cộng có dấu, với các phép toán cộng không dấu cờ
tràn OV được bỏ qua, không cần quan tâm đến OV. Nếu:
Phép cộng hai số có dấu lớn hơn +127 thì OV=1
Hoặc phép trừ hai số có dấu nhỏ hơn -127 thì OV=1
Các trường hợp còn lại OV=0
Cờ chẵn lẻ
Cờ chẵn lẻ P tự động được đặt bằng 1 hoặc 0 sao cho tổng số bit mang giá trị 1 trên
thanh ghi A với cờ P luôn là một số chẵn. Cờ chẵn lẻ được dùng để xử lí dữ liệu trước khi
truyền đi theo kiểu nối tiếp hoặc xử lí dữ liệu trước khi nhận vào theo kiểu nối tiếp (hạn
chế lỗi phát sinh trong quá trình truyền).
Các thanh ghi khác sẽ được đề cập trong các bài sau
BÀI 2: LẬP TRÌNH CHO VI ĐIỀU KHIỂN
2.1.1 GIỚI THIỆU
Vi điều khiển là một IC lập trình, vì vậy Vi điều khiển cần được lập trình trước khi
sử dụng. Mỗi phần cứng nhất định phải có chương trình phù hợp kèm theo, do đó trước
khi viết chương trình đòi hỏi người viết phải nắm bắt được cấu tạo phần cứng và các yêu
cầu mà mạch điện cần thực hiện.
Chương trình là tập hợp các lệnh được tổ chức theo một trình tự hợp lí để giải quyết
các yêu cầu của người lập trình.Tập hợp tất cả các lệnh gọi là tập lệnh. Họ Vi điều khiển
MSC-51 đều có chung một tập lệnh, các Vi điều khiển được cải tiến sau này thường ít
thay đổi hoặc mở rộng tập lệnh mà chú trọng phát triển phần cứng.
Lệnh của Vi điều khiển là các số nhị phân 8 bit hay còn gọi là mã máy. Các lệnh
mang mã 00000000b đến 11111111b. Các mã lệnh này được đưa vào lưu trữ trong
ROM, khi thực hiện chương trình Vi điều khiển đọc các mã lệnh này, giải mã, và thực
hiện lệnh.
Vì các lệnh của Vi điều khiển có dạng số nhị phân quá dài và khó nhớ, hơn nữa việc
gỡ lỗi khi chương trình phát sinh lỗi rất phức tạp và khó khăn. Khó khăn này được giải
quyết với sự hỗ trợ của máy vi tính, người viết chương trình có thể viết chương trình cho
vi điều khiển bằng các ngôn ngữ lập trình cấp cao, sau khi việc viết chương trình được

Ví dụ khi sử
dụng
Rn
Các thanh ghi ở các Bank thanh ghi
Khi sử dụng thay n bằng các số từ 0 đến 7:
R0, R1, R2, R3, R4, R5, R6, R7
Mov A,Rn Mov A,R2
#data
Dữ liệu 8 bit, khi sử dụng data có thể viết
dưới dạng :
• số nhị phân (Vd: #00110011b)
• số thập lục phân (Vd: #0A6H)
• số thập phân (Vd: #21)
Mov A,#data
Mov
A,#20H
direct
Ô nhớ có địa chỉ là direct, direct được thay
bằng địa chỉ từ 00H đến FFH khi viết
chương trình.

Mov A,direct Mov A,30H
@Ri
Ô nhớ có địa chỉ gián tiếp, đây là địa chỉ
của một ô nhớ, địa chỉ này được xác định
gián tiếp bằng giá trị của thanh ghi R0 hoặc
R1 (chỉ được sử dụng hai thanh ghi R0 hoặc
R1 để lưu giá trị này)
Mov A,@Ri
Mov

Chú ý: địa chỉ của các ô nhớ, của các bit nhớ, địa chỉ của ROM luôn được viết bằng số
thập lục phân và cũng tuân theo qui tắc viết số như phía trên.
Để hiểu thêm về các loại số này và các cách chuyển đổi có thể xem thêm trong giáo trình
kĩ thuật số tại địa chỉ o/ki_thuat_cdt/dien_tu/vi_mach_so/ hoặc
các tài liệu về kĩ thuật số khác.
c.Kết thúc chương trình.
Sau khi chương trình hoàn tất phải kết thúc bằng câu lệnh END .Các câu lệnh này
báo cho trình biên dịch biết phần kết thúc của chương trình, trình biên dịch bỏ qua tất cả
các câu lệnh sau lệnh END
KHẢO SÁT TẬP LỆNH VI ĐIỀU KHIỂN
Tập lệnh trong Vi điều khiển được chia làm 5 nhóm:
• Nhóm lệnh di chuyển dữ liệu
• Nhóm lệnh số học
• Nhóm lệnh logic
• Nhóm lệnh rẽ nhánh
• Nhóm lệnh xử lí bit
Trước khi xem phần dưới, các bạn cần xem lại bài trước nắm rõ phần cứng, đặc biệt là
vùng nhớ Ram của vi điều khiển. Chú ý các thuật ngữ sau:
• Các byte RAM 8 bit của vi điều khiển được gọi là "ô nhớ", nếu các ô nhớ có
chức năng đặc biệt thường được gọi là "thanh ghi", nếu là bit thì được gọi là "bit
nhớ".
• dữ liệu của một ô nhớ là trạng thái (0 hoặc 1) cần thiết lập cho các bit của ô nhớ
(8 bit)
2.2. NHÓM LỆNH DI CHUYỂN
2.2.1. Lệnh chuyển dữ liệu từ một thanh ghi Rn vào thanh ghi A:
• Cú pháp: Mov A,Rn
• Lệnh này chiếm dung lượng bộ nhớ ROM là 2 Byte
• Thời gian thực hiện: 1 chu kì máy
• Công dụng: Chuyển dữ liệu của thanh ghi Rn vào thanh ghi A, dữ liệu trên thanh
ghi Rn không đổi

• Công dụng: thiết lập dữ liệu cho thanh ghi A
• Ví dụ: Muốn thanh ghi A mang dữ liệu có giá trị là 56H ta thực hiện lệnh
Mov A,#56H
Sau khi lệnh được thực hiện A mang giá trị là 56H
2.2.5. Lệnh chuyển dữ liệu từ A vào thanh ghi Rn
• Cú pháp: Mov Rn,A
• Lệnh này chiếm dung lượng bộ nhớ ROM là 1 Byte
• Thời gian thực hiện: 1 chu kì máy
• Công dụng: chuyển dữ liệu từ thanh ghi A vào thanh ghi Rn (n=0-7)
• Ví dụ:
Mov A,#56H
Mov R1,A
Sau khi các lệnh được thực hiện R1 mang giá trị là 56H
2.2.6. Lệnh chuyển dữ liệu từ một ô nhớ có địa chỉ direct vào thanh ghi Rn
• Cú pháp: Mov Rn,direct
• Lệnh này chiếm dung lượng bộ nhớ ROM là 2 Byte
• Thời gian thực hiện: 1 chu kì máy
• Công dụng: chuyển dữ liệu của ô nhớ có địa chỉ direct vào thanh ghi Rn (n=0-7)
• Ví dụ: giả sử ô nhớ 55H mang dữ liệu có giá trị là A3H
Mov R4,55H
Sau khi các lệnh được thực hiện R4 mang giá trị là A3H
2.2.7. Thiết đặt dữ liệu cho thanh ghi Rn
• Cú pháp: Mov Rn,#data
• Lệnh này chiếm dung lượng bộ nhớ ROM là 2 Byte
• Thời gian thực hiện: 1 chu kì máy
• Công dụng: thiết đặt dữ liệu cho thanh ghi Rn
• Ví dụ: Muốn thanh ghi Rn mang dữ liệu có giá trị là 37H ta thực hiện lệnh
Mov A,#37H
Sau khi lệnh được thực hiện A mang giá trị là 37H
2.2.8. Lệnh chuyển dữ liệu từ thanh ghi A vào một ô nhớ có địa chỉ direct


Nhờ tải bản gốc

Tài liệu, ebook tham khảo khác

Music ♫

Copyright: Tài liệu đại học © DMCA.com Protection Status