Tải bản đầy đủ (.pdf) (46 trang)

Chuong 1 Vi điều khiển 8051 CDA Training

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 (1.85 MB, 46 trang )

Giáo trình Vi điều khiển 8051 Trung tâm CDA Training
Buổi 1: Làm quen với vi điều khiển K82/69 Nguyễn Lương Bằng
Biên Soạn: Trần Bảo An
1
Mục Lục
Mục Lục 1
I. Thiết kế phần cứng với 8051: 2
1. Làm quen với vi điều khiển 8051: 2
2. Các mạch cơ bản: 3
3. Nạp chương trình: 5
4. Mạch Vi điều khiển cơ bản: 9
5. Kết nối cơ bản với Led đơn: 9
6. Kết nối cơ bản với phím bấm: 10
7. Bộ nhớ RAM của 8051: 10
II. Phần mềm Keil-C: 13
1. Khởi động: 13
2. Tạo Project: 13
3. Tạo chương trình: 15
4. Biên dịch chương trình: 17
III. Tập lệnh cơ bản với C và thuật toán: 19
1. Các khối thuật toán cơ bản: 19
2. Các kiểu dữ liệu: 19
3. Lệnh phép toán: 21
4. Lệnh if: 23
5. Lệnh if… else…: 23
6. Lệnh switch… case…: 24
7. Lệnh for: 25
8. Lệnh while: 26
9. Lệnh do…while…: 27
10. Chương trình con và chương trình ngắt: 27
11. Cấu trúc một chương trình C: 30


IV. Lập trình cơ bản với Led đơn: 33
1. Lập trình bật Led: 33
2. Lập trình Led sáng xen kẽ: 34
3. Lập trình Led sáng chớp tắt: 35
4. Lập trình Led sáng chớp tắt xen kẽ: 35
5. Lập trình Led sáng lần lượt: 36
6. Lập trình Led sáng dần: 37
7. Lập trình Led tắt dần: 38
8. Lập trình Led sáng dồn: 39
9. Lập trình Led tắt dồn: 40
V. Lập trình cơ bản với phím bấm: 41
1. Phần cứng: 41
2. Chống rung phím: 41
3. Lập trình với phím bấm 43

Giáo trình Vi điều khiển 8051 Trung tâm CDA Training
Buổi 1: Làm quen với vi điều khiển K82/69 Nguyễn Lương Bằng
Biên Soạn: Trần Bảo An
2
I. Thiết kế phần cứng với 8051:
1. Làm quen với vi điều khiển 8051:
a. Chức năng:
Đối với vi điều khiển AT89S52:
- Có 8Kbyte 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.
- 256 Byte RAM nội
- 4 Port xuất/nhập 8 bit
- Có 3 bộ định thời 16-bit (89S51 có 2 bộ định thời)
- Có khả năng giao tiếp truyền dữ liệu nối tiếp
b. Hình dáng thực tế và sơ đồ chân:


Hình 1.1: Hình ảnh thực tế và chức năng các chân.
c. Chức năng các chân:
- Chân 20: GND. Nối mass
- Chân 40: VCC. Cấp nguồn 5VDC.
- Khi thiết kế cần sử dụng một mạch ổn áp để bảo vệ cho Vi điều khiển, cách đơn
giản là sử dụng IC ổn áp 7805. Hoặc các mạch nguồn ở chuyên đề trước.
- Chân 39-32: PORT 0. Các chân này được dùng để nhận tín hiệu từ bên ngoài vào
để xử lí, hoặc dùng để xuất tín hiệu ra bên ngoài, chẳng hạn xuất tín hiệu để điều
khiển led đơn sáng tắt. Với Port 0, khi sử dụng cần treo thêm trở treo để có được
mức 1.
- Chân 1-8: PORT 1. Tương tự Port 0. Ngoài ra: chân P1.5-P1.7 còn là cổng nạp
nối tiếp của vi điều khiển.
- Chân 21-28: PORT 2. Tương tự Port 0.
Giáo trình Vi điều khiển 8051 Trung tâm CDA Training
Buổi 1: Làm quen với vi điều khiển K82/69 Nguyễn Lương Bằng
Biên Soạn: Trần Bảo An
3
- Chân 10-17: PORT 3. Tương tự Port 0. Ngoài ra: Mỗi chân còn có các chức
năng sau:
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
Bảng 1: Chức năng các chân ở Port 3.
- Chân 9: RESET. 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.
- Chân 18, 19: X1, X2. Là 2 chân dao động đượ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.

- Chân 29, 30: ALE, PSEN. Là 2 chân liên quan đến bộ nhớ ngoài.
- Chân 31: EA. Chân EA dùng để xác định chương trình thực hiện được lấy từ
ROM nội hay ROM ngoại.
o Khi EA nối với logic 1(+5V) thì Vi điều khiển thực hiện chương trình lấy
từ bộ nhớ nội.
o Khi EA nối với logic 0(0V) thì Vi điều khiển thực hiện chương trình lấy
từ bộ nhớ ngoại.
2. Các mạch cơ bản:
a. Mạch nguồn:
- Sử dụng mạch nguồn LM7805.
- Sử dụng mạch nguồn LM2576, LM2596.
- Sử dụng mạch nguồn 34063.
Tham khảo ở chuyên đề thiết kế mạch.
b. Mạch dao động:
- Vi điều khiển nếu muốn hoạt động được cần phải có mạch dao động. Mạch dao
động được xem như “Trái tim” dùy trì xung nhịp cho vi điều khiển.
- Mạch dao động thường được sử dụng cho các dòng vi điều khiển là mạch dao
động thạch anh:
Giáo trình Vi điều khiển 8051 Trung tâm CDA Training
Buổi 1: Làm quen với vi điều khiển K82/69 Nguyễn Lương Bằng
Biên Soạn: Trần Bảo An
4
Y1
12MHz
C2
33p
C3
33p
X2X1


Hình 1.2: Mạch dao động sử dụng thạch anh
c. Mạch reset:
- 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:
C5
10UF
R5
10K
SW1
RESET
5V
RESET

Hình 1.3: Mạch Reset
d. Các điều kiện cơ bản để Vi điều khiển hoạt động:
Để vi điều khiển hoạt động được cần có các điều kiện cơ bản sau:
- Cấp nguồn 5V ổn định cho vi điều khiển
- Lắp mạch dao động
- Lắp mạch Reset
- Chân EA (31) được nối với Vcc.
Giáo trình Vi điều khiển 8051 Trung tâm CDA Training
Buổi 1: Làm quen với vi điều khiển K82/69 Nguyễn Lương Bằng
Biên Soạn: Trần Bảo An
5
3. Nạp chương trình:
a. Mạch nạp Willar:


Hình 1.4: Mạch nạp Willar thực tế.

Hình 1.5: Phần mềm nạp Willar.
- Ưu điểm:
o Sử dụng chế độ nạp song song nên nạp được các vi điều khiển họ 89Cxx.
Như: AT89C51, AT89C52…
o Nạp được một số loại Rom từ Atmel và một số vi điều khiển của Winbon
Giáo trình Vi điều khiển 8051 Trung tâm CDA Training
Buổi 1: Làm quen với vi điều khiển K82/69 Nguyễn Lương Bằng
Biên Soạn: Trần Bảo An
6
- Nhược điểm:
o Do chỉ có thể nạp song song nên muốn nạp Vi điều khiển cần phải nhổ
Vđk ra khỏi mạch trung tâm, cắm vào mạch nạp để nạp chương trình, rồi
lại cắm vào mạch trung tâm. Như vậy sẽ rất mất thời gian và có thể gây
gãy chân Vđk.
o Không nạp được các Vđk có kiểu chân SMD.
o Giá thành cao.
b. Mạch nạp Burn-E:

Hình 1.6: Mạch nạp Burn-E thực tế và ý tưởng đặt tên

Hình 1.7: Giao diện phần mềm nạp Burn-E
Giáo trình Vi điều khiển 8051 Trung tâm CDA Training
Buổi 1: Làm quen với vi điều khiển K82/69 Nguyễn Lương Bằng
Biên Soạn: Trần Bảo An
7
- Ưu điểm:
o Mạch nạp theo chế độ nối tiếp nên mạch nhỏ gọn.
o Giá thành “rẻ”. (Bằng mạch nạp Willar, tuy nhiên có thể nạp được cho

Vđk AVR, PIC nên thuận tiện sau này mà không cần mạch nạp khác)
o Có thể nạp trực tiếp Vđk trên mạch mà không cần tháo Vđk ra. Do đó có
thể nạp được Vđk dạng SMD dễ dàng.
- Nhược điểm:
o Không nạp được các Vđk chỉ có chế độ nạp song song. Như AT89C51,
AT89C52…
c. Mạch nạp 8051 của Phillip:
Đây cũng là mạch giao tiếp giữa máy tính và vi điều khiển:

Hình 1.8: Mạch nạp qua cổng USB
Giáo trình Vi điều khiển 8051 Trung tâm CDA Training
Buổi 1: Làm quen với vi điều khiển K82/69 Nguyễn Lương Bằng
Biên Soạn: Trần Bảo An
8

Hình 1.9: Mạch nạp qua cổng Com 9 chân

Hình 1.10: Giao diện phần mềm nạp
Giáo trình Vi điều khiển 8051 Trung tâm CDA Training
Buổi 1: Làm quen với vi điều khiển K82/69 Nguyễn Lương Bằng
Biên Soạn: Trần Bảo An
9
4. Mạch Vi điều khiển cơ bản:
Q1
LM7805
VI
1
GND
2
VO

3
C1
1000uF/25V
C2
100uF/16V
C3
104
C4
104
-
+
D1
DIODE CAU
2
1
3
4
R1
330
D2
LED
J1
NGUON
1
2
J2
NGO RA
1
2
U1

AT89S52
PSEN
29
ALE
30
VCC
40
EA
31
X1
19
X2
18
RST
9
P0.0/AD0
39
P0.1/AD1
38
P0.2/AD2
37
P0.3/AD3
36
P0.4/AD4
35
P0.5/AD5
34
P0.6/AD6
33
P0.7/AD7

32
P1.0(T2)
1
P1.1(T2 EX)
2
P1.2
3
P1.3
4
P1.4
5
P1.5(MOSI)
6
P1.6(MISO)
7
P1.7(SCK)
8
P2.0/A8
21
P2.1/A9
22
P2.2/A10
23
P2.3/A11
24
P2.4/A12
25
P2.5/A13
26
P2.6/A14

27
P2.7/A15
28
P3.0/RXD
10
P3.1/TXD
11
P3.2/INT0
12
P3.3/INT1
13
P3.4/T0
14
P3.5/T1
15
P3.6/WR
16
P3.7/RD
17
Y1
12MHz
C5
33pF
C6
33pF
X1
X2
X1
X2
MOSI

RESET
P0.1
P0.0
SCK
MISO
P0.2
P0.3
P0.7
P0.6
P0.4
P0.5
RXD
TXD
P3.6
P3.7
P3.3
P3.2
P3.5
P3.4
P2.0
P2.1
P2.6
P2.7
P2.3
P2.2
P2.5
P2.4
P1.4
P1.0
P1.2

P1.1
P1.3
R2
10k
C7
10uF
5V
SW1
RESET
RESET
5V
D3
LED
D4
LED
D5
LED
D6
LED
D7
LED
D8
LED
D9
LED
D10
LED
P0.1P0.0 P0.5P0.2 P0.3 P0.7P0.6P0.4
R3
330

R4
330
R5
330
R6
330
R7
330
R8
330
R9
330
R10
330
5V 5V 5V 5V 5V 5V5V 5V
J3
NAP BURN-E
1
2
3
4
5
6
J4
NAP PHILLIP
1
2
3
4
RESET

SCK
MOSI
MISO
TXD
RXD
5V
5V
J5
P2
1
2
3
4
5
6
7
8
J6
P1
1
2
3
4
5
P2.2
P2.0
P2.1
P2.6
P2.7
P2.3

P2.5
P2.4
P1.3
P1.4
P1.0
P1.2
P1.1
R11
4k7
1
2
3
4
5
6
7
8
9
5V
RXD
TXD
P3.3
P3.2
P3.4
P3.6
P3.7
P3.5
SW2 PHIM BAM
P3.2
SW3 PHIM BAM

P3.3
SW4 PHIM BAM
P3.4
SW5 PHIM BAM
P3.5
SW6 PHIM BAM
P3.6
SW7 PHIM BAM
P3.7

Hình 1.11: Mạch vi điều khiển cơ bản.
5. Kết nối cơ bản với Led đơn:
a. Kết nối Led sáng mức 0:
D18
LED
R21
330
R22
4k7
5V
P1.0
5V

Hình 1.12: Kết nối Led sáng mức 0
Giáo trình Vi điều khiển 8051 Trung tâm CDA Training
Buổi 1: Làm quen với vi điều khiển K82/69 Nguyễn Lương Bằng
Biên Soạn: Trần Bảo An
10
b. Kết nối Led sáng mức 1:
D18

LED
R21
330
R22
4k7
5V
P1.0

Hình 1.13: Kết nối Led sáng mức 1
6. Kết nối cơ bản với phím bấm:
R22
4k7
5V
P1.0
SW9
PHIM BAM 2

Hình 1.14: Kết nối với Phím bấm
7. Bộ nhớ RAM của 8051:
- 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:
o 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)
o Các bank thanh ghi có địa chỉ 00H đến 1FH
o 210 vị trí được định địa chỉ bit
o Các vị trí RAM bình thường
o Các thanh ghi có chức năng đặc biệt có địa chỉ từ 80H đến FFH.
- 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ớ".
Giáo trình Vi điều khiển 8051 Trung tâm CDA Training
Buổi 1: Làm quen với vi điều khiển K82/69 Nguyễn Lương Bằng
Biên Soạn: Trần Bảo An
11
a. Vùng Ram thường:
Địa chỉ
byte
Địa chỉ bit
Chức năng
7FH

Vùng RAM đa dụng
30H

2FH
7F
7E
7D
7C
7B
7A
79
78
Vùng RAM có thể
định địa chỉ Bit
2EH
77
76

75
74
73
72
71
70
2DH
6F
6E
6D
6C
6B
6A
69
68
2CH
67
66
65
64
63
62
61
60
2BH
5F
5E
5D
5C
5B

5A
59
58
2AH
57
56
55
54
53
52
51
50
29H
4F
4E
4D
4C
4B
4A
49
48
28H
47
46
45
44
43
42
41
40

27H
3F
3E
3D
3C
3B
3A
39
38
26H
37
36
35
34
33
32
31
30
25H
2F
2E
2D
2C
2B
2A
29
28
24H
27
26

25
24
23
22
21
20
23H
1F
1E
1D
1C
1B
1A
19
18
22H
17
16
15
14
13
12
11
10
21H
F
E
D
C
B

A
9
8
20H
7
6
5
4
3
2
1
0
1FH
18H
Bank 3
Các bank thanh ghi
17H
10H
Bank 2
0FH
08H
Bank 1
07H
00H
Bank thanh ghi 0 (mặc định cho R0-R7)

Giáo trình Vi điều khiển 8051 Trung tâm CDA Training
Buổi 1: Làm quen với vi điều khiển K82/69 Nguyễn Lương Bằng
Biên Soạn: Trần Bảo An
12

b. Vùng Ram đặc biệt:
Địa
chỉ
Byte
Có thể
định địa
chỉ Bit
Không thể định địa chỉ Bit
F8H








F0H
B







E8H









E0H
ACC







D8H








D0H
PSW








C8H
(T2CON)

(RCAP2L)
(RCAP2H)
(TL2)
(TH2)


C0H








B8H
IP
SADEN






B0H

P3







A8H
IE
SADDR






A0H
P2







98H
SCON
SBUF
BRL

BDRCON




90H
P1







88H
TCON
TMOD
TL0
TH0
TL1
TH1
AUXR
CKCON
80H
P0
SP
DPL
DPH




PCON

Giáo trình Vi điều khiển 8051 Trung tâm CDA Training
Buổi 1: Làm quen với vi điều khiển K82/69 Nguyễn Lương Bằng
Biên Soạn: Trần Bảo An
13
II. Phần mềm Keil-C:
1. Khởi động:

Hình 2.1: Biểu tượng chương trình
2. Tạo Project:
Ta thao tác như sau.

Hình 2.2: Tạo New Project
Giáo trình Vi điều khiển 8051 Trung tâm CDA Training
Buổi 1: Làm quen với vi điều khiển K82/69 Nguyễn Lương Bằng
Biên Soạn: Trần Bảo An
14

Hình 2.3: Lưu Project

Hình 2.4: Chọn hãng sản xuất vi điều khiển
Giáo trình Vi điều khiển 8051 Trung tâm CDA Training
Buổi 1: Làm quen với vi điều khiển K82/69 Nguyễn Lương Bằng
Biên Soạn: Trần Bảo An
15

Hình 2.5: Chọn loại vi điều khiển


Hình 2.6: Chọn No
3. Tạo chương trình:

Hình 2.7: Tạo chương trình cho Project

Giáo trình Vi điều khiển 8051 Trung tâm CDA Training
Buổi 1: Làm quen với vi điều khiển K82/69 Nguyễn Lương Bằng
Biên Soạn: Trần Bảo An
16
Lưu File với đuôi *.asm để viết bằng ngôn ngữ Asembly hoặc *.C nếu
viết bằng ngôn ngữ C.

Hình 2.8: Lưu chương trình vừa tạo (C hoặc Asm)
Add File vừa tạo vào Project:

Hình 2.9: Add chương trình vừa tạo vào project
Giáo trình Vi điều khiển 8051 Trung tâm CDA Training
Buổi 1: Làm quen với vi điều khiển K82/69 Nguyễn Lương Bằng
Biên Soạn: Trần Bảo An
17

Hình 2.10: Chọn file

Hình 2.11: File sau khi add và Project
4. Biên dịch chương trình:

Hình 2.12: Thiết lập cấu hình Project
Giáo trình Vi điều khiển 8051 Trung tâm CDA Training
Buổi 1: Làm quen với vi điều khiển K82/69 Nguyễn Lương Bằng
Biên Soạn: Trần Bảo An

18

Hình 2.13: Chọn Create HEX file

Hình 2.14: Rebuild sau khi viết chương trình xong để tạo file Hex


Giáo trình Vi điều khiển 8051 Trung tâm CDA Training
Buổi 1: Làm quen với vi điều khiển K82/69 Nguyễn Lương Bằng
Biên Soạn: Trần Bảo An
19

III. Tập lệnh cơ bản với C và thuật toán:
1. Các khối thuật toán cơ bản:
- Sử dụng phần mềm Microsoft Visio để vẽ sơ đồ thuật toán. Phần mềm hỗ trợ vẽ
thuật toán dễ sử dụng và dễ dàng xuất sang file Autocad và copy sang Word.
- Để vẽ thuật toán trên MS Visio 2003, ta chọn Category là Flowchart, Tempale là
Basic Flowchart (Metric).
- Các khối thuật toán cơ bản:
o Khối chuyển tiếp:
Khối Terminator

o Khối xử lý:
Khối Process

o Khối dữ liệu:
Khối Data

o Khối rẽ nhánh:
Khối rẽ nhánh


o Khối gọi chương trình con:
Khối gọi CT
con

2. Các kiểu dữ liệu:
a. Kiểu dữ liệu trong C:
Kiểu
Số Byte
Khoảng giá trị
char
1
-128 – +127
unsigned char
1
0 – 255
int
2
-32768 - +32767
unsigned int
2
0 - 65535
long
4
-2147483648 - +2147483647
unsigned long
4
0 – 4294697295
float
4


Khai báo:
- Cú pháp:
Kiểu_dữ_liệu Tên_biến;
Giáo trình Vi điều khiển 8051 Trung tâm CDA Training
Buổi 1: Làm quen với vi điều khiển K82/69 Nguyễn Lương Bằng
Biên Soạn: Trần Bảo An
20
- Cũng có thể gán luôn giá trị ban đầu cho biến:
Kiểu_dữ_liệu Tên_biến = Giá_trị;
- Ví dụ:
unsigned char a;
long dem = 0;
float ket_qua;
- Có thể khai báo nhiều biến cùng lúc:
Kiểu_dữ_liệu Tên_biến_1, Tên_biến_2, Tên_Biến_3, ;
- Ví dụ:
unsigned int x,y,z;
b. Kiểu dữ liệu trong Keil-C:
Kiểu
Số bit
bit
1
sbit
1
sfr
8
sfr16
16
- bit : dùng để khai báo các biến có giá trị 0 hoặc một hay các biến logic trên vùng

RAM của vi điều khiển. Khi khai báo biến kiểu bit trình dịch Keil C sẽ mặc định
vùng nhớ sử dụng là BDATA.
- sbit, sfr, sfr16: dùng để định nghĩa các cho các thanh ghi chức năng hoặc các
cổng trên vi điều khiển dùng để truy nhập các đoạn dữ liệu 1 bit, 8 bit, 16 bit
Khai báo:
- Cú pháp:
Kiểu_dữ_liệu Tên_biến = Cổng_thanh_ghi;
- Ví dụ:
sbit RW = P3^1; //Chân P3.1
sbit EN = P3^2; //Chân P3.2
sfr LCDdata = 0xA0; //Port 2
c. Mảng:
- Mảng là một tập hợp nhiều phần tử cùng một kiểu giá trị và chung một tên. Các
phần tử của mảng phân biệt với nhau bởi chỉ số hay số thứ tự của phần tử trong
dãy phẩn tử. Mỗi phần tử có vai trò như một biến và lưu trữ được một giá trị độc
lập với các phần tử khác của mảng.
- Mảng có thể là mảng một chiều hoặc mảng nhiều chiều
- Cú pháp:
Tên_kiểu Tên_mảng[số_phần_tử_mảng];
Khi bỏ trống số phần tử mảng ta sẽ có mảng có số phần tử bất kì.
- Ví dụ:
unsigned int a[5],b[2][3];
Giáo trình Vi điều khiển 8051 Trung tâm CDA Training
Buổi 1: Làm quen với vi điều khiển K82/69 Nguyễn Lương Bằng
Biên Soạn: Trần Bảo An
21
Với khai báo trên ta sẽ có: mảng a là mảng một chiều 5 phần tử. Mảng b
là mảng hai chiều, tổng số phần tử là 6.
Chỉ số của mảng bắt đầu từ số 0. Mảng có bao nhiêu chiều phải cung cấp
đầy đủ bấy nhiêu chỉ sô

- Ví dụ: Phần tử mảng b[0][1] là đúng
Khi viết b[0] là sai
- Ví dụ: Bảng mã Led 7 đoạn
unsigned char Bang_ma[17] =
{0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0x8
8,0x83,0xC6,0xA1,0x86,0x8E,0xBF};
d. Con trỏ:
- Khi ta khai báo một biến, biến đó sẽ được cấp phát một khoảng nhớ bao gồm
một số byte nhất định dùng để lưu trữ giá trị. Địa chỉ đầu tiên của khoảng nhớ đó
chính là địa chỉ của biến được khai báo.
- Con trỏ là một biến dùng để chứa địa chỉ mà không chứa giá trị, hay giá trị của
con trỏ chính là địa chỉ khoảng nhớ mà nó trỏ tới.
- Cú pháp:
Kiểu_Dữ_liệu *Tên_biến;
- Ví dụ:
int *int_ptr;
long *long_ptr;
- Ví dụ:
unsigned char a,*pa;
&a : //Lấy địa chỉ của biến a
pa = &a : //pa lấy địa chỉ của biến a
*pa : //Lấy giá trị của địa chỉ được lưu trong biến pa
3. Lệnh phép toán:
a. Phép gán:
- Phép gán kí hiệu: “=”.
- Cú pháp:
Biến_1 = Biến_2;
- Trong đó Biến_2 có thể là giá trị xác định cũng có thể là biến.
Giáo trình Vi điều khiển 8051 Trung tâm CDA Training
Buổi 1: Làm quen với vi điều khiển K82/69 Nguyễn Lương Bằng

Biên Soạn: Trần Bảo An
22
b. Phép toán số học:
Phép toán
Ý nghĩa
Ví dụ
+
Phép cộng
X=a+b
-
Phép trừ
X=a-b
*
Phép nhân
X=a*b
/
Phép chia lấy phần nguyên
X=a/b (a=9, b=2 → X=4)
%
Phép chia lấy phần dư
X=a%b (a=9, b=2 → X=1)
c. Phép toán Logic:
Phép toán
Ý nghĩa
Ví dụ
&&
And logic
X=a&&b;X=1 chỉ khi a và b đúng
||
Or logic

X=a||b;X=0 chỉ khi a và b sai
!
Not logic
X=!a;X đúng khi a sai và ngược lại
- Các phép toán logic thường được sử dụng trong các mệnh đề điều kiện. Ví dụ
như mệnh đề điều kiện hàm if hay hàm while.
d. Phép toán so sánh:
Phép toán
Ý nghĩa
Ví dụ
>
So sánh lớn hơn
a>b 4>5 có giá trị 0
>=
So sánh lớn hơn hoặc bằng
a>=b 6>=2 có giá trị 1
<
So sánh nhỏ hơn
a<b 6<=7 có giá trị 1
<=
So sánh nhỏ hơn hoặc bằng
a<=b8<=5 có giá trị 0
==
So sánh bằng nhau
a==b6==6 có giá trị 1
!=
So sánh khác nhau
a!=b9!=9 có giá trị 0
e. Phép toán xử lý Bit:
Phép toán

Ý nghĩa
Ví dụ
&
Phép và (AND)
Bit_1 & Bit_2
|
Phép hoặc (OR)
Bit_1 | Bit_2
!
Phép đảo (NOT)
!Bit_1
^
Phép hoặc loại trừ (XOR)
Bit_1 ^ Bit_2
<<
Dịch trái
a<<3; a dịch trái 3 lần
>>
Dịch phải
a>>4; a dịch phải 4 lần
~
Lấy bù theo bit
~a

Giáo trình Vi điều khiển 8051 Trung tâm CDA Training
Buổi 1: Làm quen với vi điều khiển K82/69 Nguyễn Lương Bằng
Biên Soạn: Trần Bảo An
23
f. Phép toán kết hợp:
Phép toán

Ví dụ
+=
a+=5 <=> a=a+5
-=
a-=5 <=> a=a-5
*=
a*=5 <=> a=a*5
/=
a/=5 <=> a=a/5
%=
a%=5 <=> a=a%5
4. Lệnh if:
a. Cấu trúc:
if(dieu_kien)
{
// Đoạn chương trình
}
- Giải thích: nếu dieu_kien đúng thì xử lí các câu lệnh bên trong còn sai thì bỏ
qua.
b. Thuật toán:
Điều kiện
Đoạn chương
trình
Tiếp theo
Đ
S

5. Lệnh if… else…:
a. Cấu trúc:
if(dieu_kien)

{
// Đoạn chương trình 1
}
else
{
// Đoạn chương trình 2
}
- Giải thích: nếu dieu_kien đúng thì xử lí “Đoạn chương trình 1” bên trong còn
sai thì xử lý “Đoạn chương trình 2”
Giáo trình Vi điều khiển 8051 Trung tâm CDA Training
Buổi 1: Làm quen với vi điều khiển K82/69 Nguyễn Lương Bằng
Biên Soạn: Trần Bảo An
24
b. Thuật toán:
Điều kiện
Đoạn chương
trình 1
Tiếp theo
Đ
S
Đoạn chương
trình 2

6. Lệnh switch… case…:
a. Cấu trúc:
- Cấu trúc:
switch(bien)
{
case gia_tri_1: {//các câu lệnh break;}
case gia_tri_2: {//các câu lệnh break;}

case gia_tri_3: {//các câu lệnh break;}
……………………………………
case gia_tri_n: {//các câu lệnh break;}
}
- Giải thích: tuỳ vào biến có gia_tri_1 thì thực hiện các câu lệnh tương ứng
rồi sau đó thoát khỏi cấu trúc nhờ câu lệnh break.
Biến có gia_tri_2 thì thực hiện câu lệnh tương ứng rồi thoát.
…………………….
Biến có gia_tri_n thì thực hiện các câu lệnh tương ứng rồi thoát.
Giáo trình Vi điều khiển 8051 Trung tâm CDA Training
Buổi 1: Làm quen với vi điều khiển K82/69 Nguyễn Lương Bằng
Biên Soạn: Trần Bảo An
25
b. Thuật toán:
Bien=GT1?
Tiếp theo
Đ
S
Đoạn chương
trình 1
Bien=GT2?
Đ
S
Đoạn chương
trình 2
Bien=GT3?
Đ
S
Đoạn chương
trình 3


7. Lệnh for:
a. Cấu trúc:
for(n=m;n<k;n++)
{
// các câu lệnh xử lí
}
- Giải thích: trong khi biểu thức n<k còn đúng thì còn xử lý các câu lệnh. Sau
mỗi lượt thực hiện các lệnh thì giá trị n lại tăng lên 1 nhờ lệnh n++. n có giá trị
khởi đầu là m. Do đó: nếu m>k thì biểu thức n<k sẽ sai và các câu lệnh sẽ không
được thực hiện.
- Biểu thức n<k không nhất thiết phải là “<” mà còn có thể thay bằng các biểu
thức so sánh khác tùy vào người lập trình.
- n++ cũng có thể thay bằng n , khi đó m>k.

×