Professional Documents
Culture Documents
VXL-VDK 8051 - Hien
VXL-VDK 8051 - Hien
01/13/24 Phùng Thị Thu Hiền, BM Tin học Công nghiệp, Khoa Điện tử 2
Chương III: Hệ vi điều khiển MCS 8051
01/13/24 Phùng Thị Thu Hiền, BM Tin học Công nghiệp, Khoa Điện tử 3
Chương III: Hệ vi điều khiển 8051
Rom:
Dùng để lưu chương trình do người viết
ctrình viết ra
Cho phép nạp/xoá bằng mạch chuyên
dụng
RAM:
Lưu trữ dữ liệu tạm thời và kết quả trung
gian được tạo ra và được sử dụng trong
quá trình hoạt động của bộ vi điều khiển.
Nội dung bị xóa một khi nguồn cung cấp
bị tắt.
01/13/24 Phùng Thị Thu Hiền, BM Tin học Công nghiệp, Khoa Điện tử 4
Chương III: Hệ vi điều khiển 8051
Electrically Erasable
Programmable ROM (EEPROM):
Nội dung có thể được thay đổi trong quá
trình thực hiện chương trình (tương tự
như RAM), nhưng vẫn còn lưu giữ vĩnh
viễn, ngay cả sau khi mất điện (tương tự
như ROM).
Nhược điểm: quá trình ghi vào tương đối
chậm.
01/13/24 Phùng Thị Thu Hiền, BM Tin học Công nghiệp, Khoa Điện tử 5
Chương III: Hệ vi điều khiển 8051
Các thanh ghi chức năng đặc biệt (SFR)
(Special Function Registers)
Là một phần của bộ nhớ RAM.
Mục đích của chúng được định trước bởi nhà sản
xuất và không thể thay đổi được.
Các bit của chúng được liên kết vật lý tới các
mạch trong vi điều khiển như bộ chuyển đổi
A/D, modul truyền thông nối tiếp,…
Bộ đếm chương trình (Program
Counter):
Chứa địa chỉ chỉ đến ô nhớ chứa câu lệnh tiếp
theo sẽ được kích hoạt.
01/13/24 Phùng Thị Thu Hiền, BM Tin học Công nghiệp, Khoa Điện tử 6
Chương III: Hệ vi điều khiển 8051
Central Processor Unit (CPU): điều
khiển và giám sát tất cả các hoạt động bên
trong vi điều khiển.
Bộ giải mã lệnh: nhận dạng câu lệnh và điều
khiển các mạch khác theo lệnh đã giải mã. Mỗi
họ vi điều khiển thường có các tập lệnh khác
nhau.
Arithmetical Logical Unit (ALU): Tính toán số
học và logic.
Thanh ghi tích lũy (Accumulator): Lưu trữ
tất cả các dữ liệu cho quá trình tính toán và lưu
giá trị kết quả để chuẩn bị cho các tính toán tiếp
theo.
01/13/24 Phùng Thị Thu Hiền, BM Tin học Công nghiệp, Khoa Điện tử 7
Chương III: Hệ vi điều khiển 8051
Các cổng vào/ra (I/O Ports)
Mỗi VĐK có một số thanh ghi kết nối với chân VĐK được
gọi là cổng vào/ra
01/13/24 Phùng Thị Thu Hiền, BM Tin học Công nghiệp, Khoa Điện tử 8
Chương III: Hệ vi điều khiển 8051
Bộ dao động (Oscillator): đồng bộ
hóa hoạt động của tất cả các mạch
bên trong vi điều khiển
01/13/24 Phùng Thị Thu Hiền, BM Tin học Công nghiệp, Khoa Điện tử 9
Chương III: Hệ vi điều khiển 8051
Bộ định thời/đếm (Timers/Counters): thường là
các thanh ghi SFR 8/16 bit, sau mỗi xung dao
động clock, giá trị của chúng được tăng lên.
01/13/24 Phùng Thị Thu Hiền, BM Tin học Công nghiệp, Khoa Điện tử 10
Chương III: Hệ vi điều khiển 8051
Truyền thông nối tiếp: truyền thông
giữa các thiết bị ở khoảng cách xa
01/13/24 Phùng Thị Thu Hiền, BM Tin học Công nghiệp, Khoa Điện tử 11
Chương III: Hệ vi điều khiển 8051
3.2. Kiến trúc vi điều khiển 8051
4Kbytes EEPROM.
128 bytes RAM.
4 Port I/O (Input/Output).
2 bộ định thời Timer 16 bits.
Giao tiếp nối tiếp.
64Kbytes không gian bộ nhớ chương trình mở
rộng: DK bằng PSEN
64Kbytes không gian bộ nhớ dữ liệu mở rộng: đk
bằng RD, WR
Một bộ xử lý luận lí (thao tác trên các bits đơn).
210 bits được địa chỉ hóa.
Bộ nhân chia 4µs.
01/13/24 Phùng Thị Thu Hiền, BM Tin học Công nghiệp, Khoa Điện tử 12
Chương III: Hệ vi điều khiển 8051
3.2. Kiến trúc vi điều khiển 8051
Chân vi điều khiển 8051
01/13/24 Phùng Thị Thu Hiền, BM Tin học Công nghiệp, Khoa Điện tử 13
Chương III: Hệ vi điều khiển 8051
3.2. Kiến trúc vi điều khiển 8051
01/13/24 Phùng Thị Thu Hiền, BM Tin học Công nghiệp, Khoa Điện tử 14
Chương III: Hệ vi điều khiển 8051
3.2. Kiến trúc vi điều khiển 8051
01/13/24 Phùng Thị Thu Hiền, BM Tin học Công nghiệp, Khoa Điện tử 16
Chương III: Hệ vi điều khiển 8051
3.2. Kiến trúc vi điều khiển 8051
ROM 4KB
0000h – 0FFFh Bộ nhớ chương trình 64 KB
0000h – FFFFh
Điều khiển bằng PSEN
01/13/24 Phùng Thị Thu Hiền, BM Tin học Công nghiệp, Khoa Điện tử
19
Chương III: Hệ vi điều khiển 8051
Tổ chức bộ nhớ trong
RAM:
Bank thanh ghi
Ram có thể định địa chỉ bit
Ram đa dụng
Rom
SFR: Special function register (thanh
ghi chức năng đặc biệt)
01/13/24 Phùng Thị Thu Hiền, BM Tin học Công nghiệp, Khoa Điện tử 20
Chương III: Hệ vi điều khiển 8051
ROM:
Được đánh địa chỉ từ 0-0ffffh, bao gồm 64Kb.
Không phân biệt bộ nhớ trong và nhớ ngoài.
8051 được tổ hợp sẵn một lượng Rom trong vi
điều khiển gọi là Rom on-chip. Lượng Rom này
chiếm vùng địa chỉ thấp của 8051, tức là từ địa
chỉ từ 0 trở đi. Có thể dùng lượng Rom này để
lưu chương trình hoặc hoàn toàn dùng ROM
ngoài hoặc sử dụng phần thấp là ROM trong,
phần địa chỉ cao là ROM ngoài.
01/13/24 Phùng Thị Thu Hiền, BM Tin học Công nghiệp, Khoa Điện tử 21
Chương III: Hệ vi điều khiển 8051
Ram
đa
dụng
Vùng
định
địa
chỉ
bit
Bank
thanh
ghi
01/13/24 Phùng Thị Thu Hiền, BM Tin học Công nghiệp, Khoa Điện tử 22
Chương III: Hệ vi điều khiển 8051
RAM
Các bank thanh ghi
Có 8 thanh ghi trong mỗi bank, từ R0-R7
Có 4 bank thanh ghi, 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
Các lệnh dùng các thanh ghi từ R0 đến R7:
• Không gian lưu trữ ít
• Thời gian thực hiện nhanh
Có thể truy xuất thanh ghi trên các bank thanh
ghi như với các ô nhớ bình thường khác.
Ví dụ: có thể truy xuất đến thanh ghi R7 bằng ô
nhớ 07H.
01/13/24 Phùng Thị Thu Hiền, BM Tin học Công nghiệp, Khoa Điện tử 23
Chương III: Hệ vi điều khiển 8051
Vùng RAM truy xuất từng bit
Có 210 ô nhớ bit được định địa chỉ và có thể truy xuất đến
từng bit.
• 128 bit nằm trong các ô nhớ có địa chỉ byte từ 20H đến
2FH
• Các bit nhớ còn lại chứa trong nhóm thanh ghi có chức
năng đặc biệt.
Ví dụ:
mov 05H,#10111111B ; gán giá trị cho ô nhớ
01/13/24 Phùng Thị Thu Hiền, BM Tin học Công nghiệp, Khoa Điện tử 24
Chương III: Hệ vi điều khiển 8051
Các thanh ghi có chức năng đặc biệt
Địa Có thể Không định địa chỉ bit
chỉ định địa
byte chỉ bit
F8h
F0h B
E8h
E0h A
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
01/13/24 80h P0 SP DPL DPH PCON 25
Chương III: Hệ vi điều khiển 8051
Thanh ghi A (ACC: Thanh ghi tích luỹ)
Dùng để lưu trữ các toán hạng và kết quả
của phép tính.
Độ dài 8 bit
Truy xuất:
• Trực tiếp qua E0H (byte)
• Hoặc thông qua địa chỉ bit từ E0h – E7h
VD:
MOV A,#1 ; tương tự lệnh:
MOV 0E0h,#1
01/13/24 Phùng Thị Thu Hiền, BM Tin học Công nghiệp, Khoa Điện tử 26
Chương III: Hệ vi điều khiển 8051
Thanh ghi B:
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.
Còn được dùng như một thanh ghi đệm
có nhiều chức năng.
Địa chỉ byte: F0, địa chỉ bit: F0-F7h
01/13/24 Phùng Thị Thu Hiền, BM Tin học Công nghiệp, Khoa Điện tử 27
Chương III: Hệ vi điều khiển 8051
Con trỏ ngăn xếp SP:
Giá trị được tăng,giảm tự động khi thực hiện các
lệnh PUSH, CALL,POP
SP 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.
Con trỏ dữ liệu DPTR.
Là thanh ghi 16 bit
Gồm: DPL và DPH
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.
Các thanh ghi Port:
P0 (định địa chỉ bit: 80h-87h), P1(90h-97h),
P2(A0h-A7h), P3(B0h-B7h)
Là các thanh ghi chốt cho 4 port xuất/nhập
01/13/24 Phùng Thị Thu Hiền, BM Tin học Công nghiệp, Khoa Điện tử 28
Chương III: Hệ vi điều khiển 8051
Thanh ghi từ trạng thái chương trình (PSW -
Program Status Word)
Địa chỉ D0h, có các địa chỉ bit từ D0h – D7h:
01/13/24 Phùng Thị Thu Hiền, BM Tin học Công nghiệp, Khoa Điện tử 29
Chương III: Hệ vi điều khiển 8051
RS1, RS0: dùng để chọn bank thanh ghi sử dụng. Khi reset
hệ thống, bank 0 sẽ được sử dụng.
01/13/24 Phùng Thị Thu Hiền, BM Tin học Công nghiệp, Khoa Điện tử 30
Chương III: Hệ vi điều khiển 8051
Thanh ghi port nối tiếp: SBUF – Serial
Data Buffer
Thanh ghi nhận: Dữ liệu đọc từ SBUF
Thanh ghi truyền: Dữ liệu đưa tới SBUF
Thanh ghi định thời: Timer Register – là
thanh ghi dùng cho bộ định thời 0 và 1
TH0, TL0
TH1, TL1
01/13/24 Phùng Thị Thu Hiền, BM Tin học Công nghiệp, Khoa Điện tử 31
Chương III: Hệ vi điều khiển 8051
Thanh ghi điều khiển
IP: Interrupt Priority: cho phép chọn mức ưu tiên ngắt khi
đồng thời xảy ra 2 ngắt
IE: Interrupt Enable: cho phép/cấm ngắt
TMOD: Timer Mode: Chọn chế độ hoạt động cho Timer
TCON: Timer control: Điều khiển hoạt động bộ định thời
và ngắt
T2CON: Timer 2 Control: Điều khiển hoạt động bộ định
thời 2
SCON: Serial port Control: Điều khiển hoạt động port nối
tiếp
PCON: Power Control:
Bit 7 6 5 4 3 2 1 0
Chức năng SMOD1 SMOD0 - POF GF1 GF0 PD IDL
01/13/24 Phùng Thị Thu Hiền, BM Tin học Công nghiệp, Khoa Điện tử 32
Chương III: Hệ vi điều khiển 8051
Tổ chức bộ nhớ ngoài
01/13/24 Phùng Thị Thu Hiền, BM Tin học Công nghiệp, Khoa Điện tử 33
Chương III: Hệ vi điều khiển 8051
Tổ chức bộ nhớ ngoài
Bộ nhớ chương trình được truy xuất thông qua chân PSEN
(sử dụng 16 bit)
Bộ nhớ dữ liệu đươc truy xuất thông qua chân WR hay RD
(8/16 bit).
Port 0 được dùng làm địa chỉ thấp/ dữ liệu đa hợp. Tín hiệu
ALE để tách byte địa chỉ và đưa vào bộ chốt ngoài.
Trong chu kỳ ghi, byte dữ liệu sẽ tồn tại ở Port 0 vừa trước
khi /WR tích cực và được giữ cho đến khi /WR không tích
cực.Trong chu kỳ đọc, byte nhận được chấp nhận vừa trước
khi /RD không tích cực.
Điều kiện xử lý:
Tín hiệu /EA tích cực ( = 0).
Giá trị của bộ đếm chương trình (PC – Program Counter) lớn hơn
kích thước bộ nhớ.
01/13/24 Phùng Thị Thu Hiền, BM Tin học Công nghiệp, Khoa Điện tử 34
Chương III: Hệ vi điều khiển 8051
3.3. Tập lệnh 8051 và lập trình hợp
ngữ cho 8051
Tập lệnh 8051
Các thành phần ngôn ngữ assembly
Quy trình xây dựng chương trình
01/13/24 Phùng Thị Thu Hiền, BM Tin học Công nghiệp, Khoa Điện tử 35
Chương III: Hệ vi điều khiển 8051
3.3. Tập lệnh 8051 và lập trình hợp ngữ cho 8051
MOV A, #25H ;A ← #0x25 Nạp giá trị là hằng
MOV DPTR, #1FFFH số thanh ghi/ô
Tức thì temp EQU 40
(Immediate) nhớ
MOV R1, #temp
Thanh
MOV A, R0 ;A ← contents (R0) Không sử dụng 2
ghi MOV R2, A ;R2 ← contents (A) thanh ghi R
(register)
Gián tiếp
MOV A, @R0 ;A mem[R0] -Chỉ sử dụng
MOV @R1, A ;A internal_mem[R1] R0/R1
thanh ghi
MOVX A, @R0 ; A Ex_mem[R0]
Register
MOVX A, @DPTR ;Aex_mem[DPTR]
- Cho biết địa chỉ
Indirect
ô nhớ trong RAM
MOVC A, @A+DPTR ;A Lấy dữ liệu trong Tạo ra một địa chỉ
[A+DPTR]
Chỉ số của ô nhớ cần truy
MOVC A, @A+PC ;A ext_code_mem [A + PC]
(Indexed)
MOVX A, @A+DPTR ;Aex_mem[A+DPTR]
xuất hoặc địa chỉ
nơi nhảy đến
Phùng Thị Thu Hiền, BM Tin học Công nghiệp, Khoa Điện tử
01/13/24 36
Chương III: Hệ vi điều khiển 8051
3.3. Tập lệnh 8051 và lập trình hợp ngữ cho 8051
01/13/24 Phùng Thị Thu Hiền, BM Tin học Công nghiệp, Khoa Điện tử 37
Chương III: Hệ vi điều khiển 8051
3.3. Tập lệnh 8051 và lập trình hợp ngữ cho 8051
MỘT SỐ QUI ƯỚC KHI LẬP TRÌNH VỚI HỢP NGỮ ASSEMBLER
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
01/13/24 Phùng Thị Thu Hiền, BM Tin học Công nghiệp, Khoa Điện tử 38
Chương III: Hệ vi điều khiển 8051
3.3. Tập lệnh 8051 và lập trình hợp ngữ cho 8051
MỘT SỐ QUI ƯỚC KHI LẬP TRÌNH VỚI HỢP NGỮ ASSEMBLER
#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)
VD: Mov A,#20H
01/13/24 Phùng Thị Thu Hiền, BM Tin học Công nghiệp, Khoa Điện tử 39
Chương III: Hệ vi điều khiển 8051
3.3. Tập lệnh 8051 và lập trình hợp ngữ cho 8051
MỘT SỐ QUI ƯỚC KHI LẬP TRÌNH VỚI HỢP NGỮ ASSEMBLER
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.
VD: Mov A,30H
01/13/24 Phùng Thị Thu Hiền, BM Tin học Công nghiệp, Khoa Điện tử 40
Chương III: Hệ vi điều khiển 8051
3.3. Tập lệnh 8051 và lập trình hợp ngữ cho 8051
MỘT SỐ QUI ƯỚC KHI LẬP TRÌNH VỚI HỢP NGỮ ASSEMBLER
@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
VD: Mov A,@R1
01/13/24 Phùng Thị Thu Hiền, BM Tin học Công nghiệp, Khoa Điện tử 41
Chương III: Hệ vi điều khiển 8051
3.3. Tập lệnh 8051 và lập trình hợp ngữ cho 8051
MỘT SỐ QUI ƯỚC KHI LẬP TRÌNH VỚI HỢP NGỮ ASSEMBLER
01/13/24 Phùng Thị Thu Hiền, BM Tin học Công nghiệp, Khoa Điện tử 42
Chương III: Hệ vi điều khiển 8051
3.3. Tập lệnh 8051 và lập trình hợp ngữ cho 8051
01/13/24 Phùng Thị Thu Hiền, BM Tin học Công nghiệp, Khoa Điện tử 43
Chương III: Hệ vi điều khiển 8051
3.3. Tập lệnh 8051 và lập trình hợp ngữ cho 8051
I. Nhóm lệnh vận chuyển dữ liệu
1. Lệnh MOV
Cú pháp lệnh Ý nghĩa lệnh Ví dụ
Mov A,Rn Chuyển dữ liệu từ Rn Mov R5, #0A5H
thanh ghi A Mov A,R5 ; A = 0A5H
Mov A,direct Chuyển dữ liệu từ ô nhớ ; mem[33H] = 09H
có đ.chỉ direct A Mov A,33H ; A = 09H
Mov A,@Ri Chuyển d.liệu từ ô nhớ có ;mem[33H]=09H,R1=33H
đ.chỉ gián tiếp A Mov A,@R1 ; A=09H
Mov A,#data Thiết lập d.liệu cho t.ghi Mov A,#56H; A = 56H
A
Mov Rn,A Chuyển dữ liệu từ A vào Mov A,#56H
thanh ghi Rn (n=07) Mov R1,A ; R1=56H
Mov Rn,direct Chuyển d.liệu của ô nhớ ; mem[55H] = A3H
có đ.chỉ direct vào t.ghi Mov R4,55H ; R4 =
Rn (n=0-7) A3H
Mov Rn,#data T.lập
Phùng d.liệu
Thị Thu Hiền, cho t.ghi
BM Tin Rn nghiệp,
học Công Mov R2,#37H
Khoa Điện tử ; R2=37H44
01/13/24
Chương III: Hệ vi điều khiển 8051
3.3. Tập lệnh 8051 và lập trình hợp ngữ cho 8051
01/13/24 Phùng Thị Thu Hiền, BM Tin học Công nghiệp, Khoa Điện tử 45
Chương III: Hệ vi điều khiển 8051
3.3. Tập lệnh 8051 và lập trình hợp ngữ cho 8051
01/13/24 Phùng Thị Thu Hiền, BM Tin học Công nghiệp, Khoa Điện tử 46
Chương III: Hệ vi điều khiển 8051
3.3. Tập lệnh 8051 và lập trình hợp ngữ cho 8051
01/13/24 Phùng Thị Thu Hiền, BM Tin học Công nghiệp, Khoa Điện tử 47
Chương III: Hệ vi điều khiển 8051
3.3. Tập lệnh 8051 và lập trình hợp ngữ cho 8051
2.Lệnh XCH
01/13/24 Phùng Thị Thu Hiền, BM Tin học Công nghiệp, Khoa Điện tử 48
Chương III: Hệ vi điều khiển 8051
3.3. Tập lệnh 8051 và lập trình hợp ngữ cho 8051
4. Lệnh Inc: Tăng lên 1 đơn vị (ko ảnh hưởng tới cờ nhớ)
Cú pháp Ý nghĩa lệnh Ví dụ Kết quả
Inc A Tăng giá trị dữ liệu trên Mov A,#05h A =#06h
thanh ghi A lên 1 đơn vị Inc A
Inc Rn Tăng giá trị dữ liệu trên Mov R7,#0Fh R7=#10h
t.ghi Rn lên 1 đơn vị Inc R7
Inc direct Tăng g.trị dữ liệu ở ô Mov 50h,#0FFh 50h= #00
nhớ có đ.chỉ direct lên
1 đơn vị Inc 50h
Inc @Ri Tăng giá trị dữ liệu ở ô Mov 0Fh,#05h R0 =#0Fh
nhớ có địa chỉ gián tiếp Mov R0,#0Fh 0Fh=#06h
lên 1 đơn vị Inc @R0
Inc DPTR Tăng giá trị của con trỏ Mov DPTR,#5Fh DPTR=#060h
d.liệu DPTR lên 1 đơn vị
Inc DPTR
01/13/24 Phùng Thị Thu Hiền, BM Tin học Công nghiệp, Khoa Điện tử 52
Chương III: Hệ vi điều khiển 8051
3.3. Tập lệnh 8051 và lập trình hợp ngữ cho 8051
5. Lệnh Dec: Giảm xuống 1 đơn vị (ko ảnh hưởng tới cờ nhớ)
01/13/24 Phùng Thị Thu Hiền, BM Tin học Công nghiệp, Khoa Điện tử 53
Chương III: Hệ vi điều khiển 8051
3.3. Tập lệnh 8051 và lập trình hợp ngữ cho 8051
6. Lệnh nhân/chia
Cú pháp Ý nghĩa lệnh Ví dụ Kết quả
01/13/24 Phùng Thị Thu Hiền, BM Tin học Công nghiệp, Khoa Điện tử 54
Chương III: Hệ vi điều khiển 8051
3.3. Tập lệnh 8051 và lập trình hợp ngữ cho 8051
01/13/24 Phùng Thị Thu Hiền, BM Tin học Công nghiệp, Khoa Điện tử 56
Chương III: Hệ vi điều khiển 8051
3.3. Tập lệnh 8051 và lập trình hợp ngữ cho 8051
01/13/24 Phùng Thị Thu Hiền, BM Tin học Công nghiệp, Khoa Điện tử 58
Chương III: Hệ vi điều khiển 8051
3.3. Tập lệnh 8051 và lập trình hợp ngữ cho 8051
01/13/24 Phùng Thị Thu Hiền, BM Tin học Công nghiệp, Khoa Điện tử 60
Chương III: Hệ vi điều khiển 8051
3.3. Tập lệnh 8051 và lập trình hợp ngữ cho 8051
01/13/24 61
Chương III: Hệ vi điều khiển 8051
3.3. Tập lệnh 8051 và lập trình hợp ngữ cho 8051
01/13/24 62
Chương III: Hệ vi điều khiển 8051
3.3. Tập lệnh 8051 và lập trình hợp ngữ cho 8051
01/13/24 Phùng Thị Thu Hiền, BM Tin học Công nghiệp, Khoa Điện tử 64
Chương III: Hệ vi điều khiển 8051
3.3. Tập lệnh 8051 và lập trình hợp ngữ cho 8051
2. Lệnh nhảy
Cú pháp Ý nghĩa lệnh
AJMP addr11 Nhảy đến nhãn, địa chỉ nhãn cách lệnh gọi không
quá 2 KByte
LJMP addr16 Nhảy đến nhãn, địa chỉ nhãn cách lệnh gọi không
quá 64 KByte
SJMP rel Nhảy tương đối đến nhãn, địa chỉ của nhãn cách
lệnh gọi không quá 128 Byte
JMP @A+DPTR Nhảy gián tiếp: nhảy đến địa chỉ A+DPTR
CJNE A,direct,rel Nếu giá trị A ≠ direct nhảy tới nhãn rel
CJNE A,#data,rel Nếu giá trị A ≠ data nhảy tới nhãn rel
CJNE Rn,#data,rel Nếu giá trị Rn ≠ data nhảy tới nhãn rel
CJNE @Ri,#data,rel Nếu giá trị gián tiếp tại Ri≠data nhảy tới nhãn rel
DJNZ Rn, rel Giảm Rn đi 1, nhảy tới nhãn cho tới khi Rn 0
DJNZ direct, rel Giảm direct đi1, nhảy tới nhãn cho tới khi direct 065
01/13/24
Chương III: Hệ vi điều khiển 8051
3.3. Tập lệnh 8051 và lập trình hợp ngữ cho 8051
2. Lệnh nhảy
Cú pháp Ý nghĩa lệnh
JBC bit,rel Nhảy đến nhãn rel nếu bit = 1, rồi xóa bit về 0
01/13/24 66
Chương III: Hệ vi điều khiển 8051
3.3. Tập lệnh 8051 và lập trình hợp ngữ cho 8051
01/13/24 Phùng Thị Thu Hiền, BM Tin học Công nghiệp, Khoa Điện tử 67
Chương III: Hệ vi điều khiển 8051
3.3. Tập lệnh 8051 và lập trình hợp ngữ cho 8051
Chỉ dẫn
- DB: Định nghĩa kiểu dữ liệu 8bit
- ORG: Báo địa chỉ bắt đầu chương trình
- EQU: Định nghĩa một hằng số
- END: Kết thúc chương trình
- CODE: Đánh dấu vùng mã lệnh
- DATA: Đánh dấu vùng dữ liệu
- USING: Chỉ ra bank thanh ghi nào sẽ dùng
01/13/24 Phùng Thị Thu Hiền, BM Tin học Công nghiệp, Khoa Điện tử 68
Hướng dẫn sử dụng phần mềm
01/13/24 Phùng Thị Thu Hiền, BM Tin học Công nghiệp, Khoa Điện tử 69
1. Lập trình với Led đơn và nút bấm
01/13/24 Phùng Thị Thu Hiền, BM Tin học Công nghiệp, Khoa Điện tử 70
1. Lập trình với Led đơn và nút
bấm
Sơ đồ mạch
- AT89C51
- Button
01/13/24 Phùng Thị Thu Hiền, BM Tin học Công nghiệp, Khoa Điện tử 71
1. Lập trình với Led đơn và nút bấm
Code: 4 bước
Bước 1:
• Định nghĩa chân, port sử dụng trên mạch
• Định nghĩa các hằng, biến sử dụng trong
chương trình
Bước 2: Viết mẫu chương trình: 4 dòng
code cơ bản
Bước 3: Khởi tạo các giá trị ban đầu, đặt
trên vòng lặp vô hạn
Bước 4: Code quá trình điều khiển nằm
trong vòng lặp vô hạn
01/13/24 Phùng Thị Thu Hiền, BM Tin học Công nghiệp, Khoa Điện tử 72
1. Lập trình với Led đơn và nút bấm
01/13/24 Phùng Thị Thu Hiền, BM Tin học Công nghiệp, Khoa Điện tử 73
2. Lập trình với Led 7 đoạn
01/13/24 Phùng Thị Thu Hiền, BM Tin học Công nghiệp, Khoa Điện tử 74
2. Lập trình với Led 7 đoạn
Bài tập
1.Sửa bài trên cho giá trị hiển thị giảm
dần
2.Sử dụng cách mắc khác (không theo
thứ tự từ P2.0 - > P2.7) để nối với
led. Yêu cầu hiển thị các giá trị giống
bài mẫu.
01/13/24 Phùng Thị Thu Hiền, BM Tin học Công nghiệp, Khoa Điện tử 75
2. Lập trình với Led 7 đoạn
01/13/24 Phùng Thị Thu Hiền, BM Tin học Công nghiệp, Khoa Điện tử 76
2. Lập trình với Led 7 đoạn
BT:
1.Sửa chương trình cho led chạy giảm
dần
2.Sửa chương trình cho led chạy nhẩy
2 giá trị. VD: 0, 2, 4,… hoặc 1, 3, 5,…
01/13/24 Phùng Thị Thu Hiền, BM Tin học Công nghiệp, Khoa Điện tử 77
2. Lập trình với Led 7 đoạn
01/13/24 Phùng Thị Thu Hiền, BM Tin học Công nghiệp, Khoa Điện tử 78
2. Lập trình với Led 7 đoạn
01/13/24 Phùng Thị Thu Hiền, BM Tin học Công nghiệp, Khoa Điện tử 79
2. Lập trình với Led 7 đoạn
Bài tập: Viết chương trình điều khiển 2 led 7 đoạn hai
loại khác nhau (1 cathode,1 anode), có sd ic chốt.
Gợi ý: Sử dụng lệnh cpl để đảo giá trị thanh ghi A
trước khi đưa vào led mới
…
mov A,B ; lay so donvi (1 chu so tu 0..9)
movC A,@A+DPTR
CPL A
mov led_chung, A
setb dk_dv
clr dk_dv
…
01/13/24 Phùng Thị Thu Hiền, BM Tin học Công nghiệp, Khoa Điện tử 80
2. Lập trình với Led 7 đoạn
01/13/24 Phùng Thị Thu Hiền, BM Tin học Công nghiệp, Khoa Điện tử 81
2. Lập trình với Led 7 đoạn
01/13/24 Phùng Thị Thu Hiền, BM Tin học Công nghiệp, Khoa Điện tử 82
3. Lập trình điều khiển động cơ
01/13/24 Phùng Thị Thu Hiền, BM Tin học Công nghiệp, Khoa Điện tử 83
3. Lập trình điều khiển động cơ
01/13/24 Phùng Thị Thu Hiền, BM Tin học Công nghiệp, Khoa Điện tử 84
Chương III: Hệ vi điều khiển 8051
Lập trình cho Bộ đếm/định thời
01/13/24 Phùng Thị Thu Hiền, BM Tin học Công nghiệp, Khoa Điện tử 85
Chương III: Hệ vi điều khiển 8051
Lập trình cho Bộ đếm/định thời
Bộ đếm/định thời: Thanh ghi TMOD
01/13/24 Phùng Thị Thu Hiền, BM Tin học Công nghiệp, Khoa Điện tử 86
Chương III: Hệ vi điều khiển 8051
3.2. Kiến trúc vi điều khiển 8051
01/13/24 Phùng Thị Thu Hiền, BM Tin học Công nghiệp, Khoa Điện tử 87
Chương III: Hệ vi điều khiển 8051
3.2. Kiến trúc vi điều khiển 8051
01/13/24 Phùng Thị Thu Hiền, BM Tin học Công nghiệp, Khoa Điện tử 88
Chương III: Hệ vi điều khiển 8051
3.2. Kiến trúc vi điều khiển 8051
01/13/24 Phùng Thị Thu Hiền, BM Tin học Công nghiệp, Khoa Điện tử 89
Chương III: Hệ vi điều khiển 8051
3.2. Kiến trúc vi điều khiển 8051
01/13/24 Phùng Thị Thu Hiền, BM Tin học Công nghiệp, Khoa Điện tử 90
Chương III: Hệ vi điều khiển 8051
Bộ đếm/định thời
01/13/24 Phùng Thị Thu Hiền, BM Tin học Công nghiệp, Khoa Điện tử 91
Chương III: Hệ vi điều khiển 8051
Ví dụ1: Xác định chế độ và bộ định thời
cho lệnh sau: MOV TMOD, #02H
01/13/24 Phùng Thị Thu Hiền, BM Tin học Công nghiệp, Khoa Điện tử 92
Chương III: Hệ vi điều khiển 8051
Ví dụ1: Xác định chế độ và bộ định thời
cho lệnh sau: MOV TMOD, #02H
Giải:
TMOD = 0000 0010
Chế độ 2 (8 bit): M1 = 1, M0 = 0
Bộ định thời: Timer0
01/13/24 Phùng Thị Thu Hiền, BM Tin học Công nghiệp, Khoa Điện tử 93
Chương III: Hệ vi điều khiển 8051
Ví dụ2: Xác định giá trị của TMOD nếu muốn sử
dụng Timer 1 ở chế độ 1, sử dụng thạch anh
XTAL 8051 làm nguồn đồng hồ, khởi động mềm
để xây dựng bộ định thời tạo độ trễ thời gian
01/13/24 Phùng Thị Thu Hiền, BM Tin học Công nghiệp, Khoa Điện tử 94
Chương III: Hệ vi điều khiển 8051
Ví dụ2: Xác định giá trị của TMOD nếu muốn sử
dụng Timer 1 ở chế độ 1, sử dụng thạch anh
XTAL 8051 làm nguồn đồng hồ, khởi động mềm
để xây dựng bộ định thời tạo độ trễ thời gian
Giải:
• T1M1 = 0, T1M0=1
• Gate1 = 0
• C/T1 = 0
• TMOD = 00010000
01/13/24 Phùng Thị Thu Hiền, BM Tin học Công nghiệp, Khoa Điện tử 95
Chương III: Hệ vi điều khiển 8051
3.2. Kiến trúc vi điều khiển 8051
01/13/24 Phùng Thị Thu Hiền, BM Tin học Công nghiệp, Khoa Điện tử 96
Chương III: Hệ vi điều khiển 8051
3.2. Kiến trúc vi điều khiển 8051
Timer/Counter
01/13/24 97
Chương III: Hệ vi điều khiển 8051
3.2. Kiến trúc vi điều khiển 8051
01/13/24 98
Chương III: Hệ vi điều khiển 8051
3.2. Kiến trúc vi điều khiển 8051
01/13/24 101
Chương III: Hệ vi điều khiển 8051
3.2. Kiến trúc vi điều khiển 8051
Delay_100ms:
CLR TF0
mov tmod, #01h
mov TL0, #09Ch
mov TH0, #0FFh
setb TR0
here: jnb TF0,here
clr TR0
clr TF0
ret
01/13/24 102
Chương III: Hệ vi điều khiển 8051
3.2. Kiến trúc vi điều khiển 8051
01/13/24 Phùng Thị Thu Hiền, BM Tin học Công nghiệp, Khoa Điện tử 104
2. Lập trình với Led 7 đoạn
Làm lại bài toán 3: Hàm delay
delay:
clr TF0
mov Tmod, #01h ; su dung timer 0, mode 1 (16 bit de tao tre)
mov r7, #20 ; lap 20 x 50000 lan tao ra 1 s
lap:
mov TH0, #high(-50000); 3CH
mov TL0, #low(-50000) ; B0H
setb TR0
here: jnb TF0, here ; kiem tra co bat co TF0, co the sd: jnb TF0, $
clr TR0 ; Dừng timer
clr TF0 ; Xoa co tran
djnz r7, lap
ret
01/13/24 Phùng Thị Thu Hiền, BM Tin học Công nghiệp, Khoa Điện tử 105
Chương III: Hệ vi điều khiển 8051
3.2. Kiến trúc vi điều khiển 8051
Sơ đồ mạch
01/13/24 107
3. Lập trình điều khiển động cơ
01/13/24 Phùng Thị Thu Hiền, BM Tin học Công nghiệp, Khoa Điện tử 108
3. Lập trình điều khiển động cơ
01/13/24 Phùng Thị Thu Hiền, BM Tin học Công nghiệp, Khoa Điện tử 109
Chương III: Hệ vi điều khiển 8051
3.2. Kiến trúc vi điều khiển 8051
01/13/24 110
Chương III: Hệ vi điều khiển 8051
3.2. Kiến trúc vi điều khiển 8051
01/13/24 111
Chương III: Hệ vi điều khiển 8051
3.2. Kiến trúc vi điều khiển 8051
01/13/24 112
Chương III: Hệ vi điều khiển 8051
3.2. Kiến trúc vi điều khiển 8051
Bit:
16 bit counter (TH0, TL0)
TH0, TL0 tăng lên 1 khi TR0=1 và có 1 xung xuất
hiện trên T0
01/13/24 113
Chương III: Hệ vi điều khiển 8051
3.2. Kiến trúc vi điều khiển 8051
01/13/24 114
Chương III: Hệ vi điều khiển 8051
3.2. Kiến trúc vi điều khiển 8051
01/13/24 116
Chương III: Hệ vi điều khiển 8051
3.2. Kiến trúc vi điều khiển 8051
01/13/24 117
Lập trình cho Led ma trận (Matrix-8x8-red)
01/13/24 118
Lập trình cho Led ma trận
01/13/24 119
Lập trình cho Led ma trận
01/13/24 120
Lập trình cho Led ma trận
01/13/24 121
Chương III: Hệ vi điều khiển 8051
3.3. Tập lệnh 8051 và lập trình hợp ngữ cho 8051
01/13/24 Phùng Thị Thu Hiền, BM Tin học Công nghiệp, Khoa Điện tử 122
Chương III: Hệ vi điều khiển 8051
3.3. Tập lệnh 8051 và lập trình hợp ngữ cho 8051
01/13/24 Phùng Thị Thu Hiền, BM Tin học Công nghiệp, Khoa Điện tử 123
Chương III: Hệ vi điều khiển 8051
3.3. Tập lệnh 8051 và lập trình hợp ngữ cho 8051
Bài toán 15: Ghép nối 8051 với LCD như hình
sau. Yêu cầu:
Ghi lệnh chọn LCD 2 dòng ma trận 5x7
Hiển thị màn hình và con trỏ
Xóa LCD
Dịch con trỏ sang phải
Hiển thị liên tục dòng chữ : VIET NAM VO DICH
01/13/24 Phùng Thị Thu Hiền, BM Tin học Công nghiệp, Khoa Điện tử 124
LẬP TRÌNH TRUYỀN THÔNG NỐI TiẾP 8051
01/13/24 125
Chương III: Hệ vi điều khiển 8051
3.2. Kiến trúc vi điều khiển 8051
01/13/24 126
Chương III: Hệ vi điều khiển 8051
3.2. Kiến trúc vi điều khiển 8051
01/13/24 Phùng Thị Thu Hiền, BM Tin học Công nghiệp, Khoa Điện tử 127
Chương III: Hệ vi điều khiển 8051
3.2. Kiến trúc vi điều khiển 8051
Thanh ghi SCON - Serial port Control: Điều khiển hoạt động cổng nối tiếp
01/13/24 Phùng Thị Thu Hiền, BM Tin học Công nghiệp, Khoa Điện tử 128
Chương III: Hệ vi điều khiển 8051
3.2. Kiến trúc vi điều khiển 8051
Truyền thông không đồng bộ UART
01/13/24 Phùng Thị Thu Hiền, BM Tin học Công nghiệp, Khoa Điện tử 129
Chương III: Hệ vi điều khiển 8051
3.2. Kiến trúc vi điều khiển 8051
Truyền thông nối tiếp vạn năng: UART
Thanh ghi PCON
SMOD - - - GF0 GF0 PD IDL
01/13/24 Phùng Thị Thu Hiền, BM Tin học Công nghiệp, Khoa Điện tử 130
Chương III: Hệ vi điều khiển 8051
3.2. Kiến trúc vi điều khiển 8051
Truyền thông nối tiếp vạn năng: UART
Đơn vị đo tốc độ truyền:
Tốc độ bit: số bit/giây
Tốc độ baud: Số đơn vị tín hiệu/giây
Cách tính giá trị nạp vào TH1
Fxtal: Tần số thạch anh (MHz)
Tần số máy: F m= Fxtal/12
Tần số cấp tới bộ định thời: F uart = Fm/32 (SMOD0)
hoặc Fuart = Fm/16 (SMOD1)
Giá trị nạp vào TH1: -(F uart/baud)
01/13/24 Phùng Thị Thu Hiền, BM Tin học Công nghiệp, Khoa Điện tử 131
Chương III: Hệ vi điều khiển 8051
3.2. Kiến trúc vi điều khiển 8051
Truyền thông nối tiếp vạn năng: UART
Lập trình truyền dữ liệu nối tiếp:
1. Nạp thanh ghi TMOD: Timer1 mode 2 (TMOD =
20H)
2. Nạp thanh ghi TH1 (dựa vào tần số baud)
3. Nạp thanh ghi SCON: chế độ nối tiếp 1 (8 bit dữ
liệu, 1 bit Start và 1 bit Stop (SCON = 40H)
4. Bật TR1 = 1 (khởi động Timer1)
5. Xoá bít TI bằng lệnh “CLR TI”
6. Ghi byte ký tự cần truyền vào SBUF
7. Kiểm tra cờ TI bằng lệnh “JNB TI, $ ”: báo hoàn
tất truyền ký tự
8. Để truyền ký tự tiếp theo quay trở về bước 5.
01/13/24 Phùng Thị Thu Hiền, BM Tin học Công nghiệp, Khoa Điện tử 132
Chương III: Hệ vi điều khiển 8051
3.2. Kiến trúc vi điều khiển 8051
Truyền thông nối tiếp vạn năng: UART
Bài toán 16: Hãy viết chương trình cho 8051
để truyền nối tiếp một ký tự “A” với tốc độ
4800 baud liên tục, Fxtal=12MHz.
01/13/24 Phùng Thị Thu Hiền, BM Tin học Công nghiệp, Khoa Điện tử 133
Chương III: Hệ vi điều khiển 8051
3.2. Kiến trúc vi điều khiển 8051
Truyền thông nối tiếp vạn năng: UART
Bài toán 17: Hãy viết chương trình cho 8051 để
truyền nối tiếp một xâu ký tự “COVID19” tốc độ
4800 baud liên tục, Fxtal=12MHz.
01/13/24 Phùng Thị Thu Hiền, BM Tin học Công nghiệp, Khoa Điện tử 134
Chương III: Hệ vi điều khiển 8051
3.3. Tập lệnh 8051 và lập trình hợp ngữ cho 8051
01/13/24 Phùng Thị Thu Hiền, BM Tin học Công nghiệp, Khoa Điện tử 135
Chương III: Hệ vi điều khiển 8051
3.2. Kiến trúc vi điều khiển 8051
Truyền thông nối tiếp vạn năng: UART
Lập trình nhận dữ liệu nối tiếp
1. Nạp thanh ghi TMOD: Timer1 mode 2 (TMOD = 20H)
2. Nạp thanh ghi TH1 (dựa vào tần số baud)
3. Nạp thanh ghi SCON (50H):Chế độ nối tiếp 1 (8 bit dữ
liệu, 1 bit Start và 1 bit Stop)
4. Bật TR1 = 1 (khởi động Timer1)
5. Xoá cờ ngắt RI (CLR RI)
6. Kiểm tra cờ RI bằng lệnh “JNB RI, xx” để xem toàn bộ
ký tự đã được nhận chưa.
7. Khi RI được thiết lập thì trong SBUF đã có 1 byte. Các
nội dung của nó được cất lưu vào một nơi an toàn.
8. Để nhận một ký tự tiếp theo quay trở về bước 5.
01/13/24 Phùng Thị Thu Hiền, BM Tin học Công nghiệp, Khoa Điện tử 136
Chương III: Hệ vi điều khiển 8051
3.2. Kiến trúc vi điều khiển 8051
Truyền thông nối tiếp vạn năng: UART
Bài toán 18: Hãy viết chương trình cho 8051 để truyền xâu
hướng dẫn, nhận ký tự để điều khiền bật tắt đèn: A – bật 2
đèn, Z – tắt 2 đèn, B: bật/tắt đèn bếp, C– bật/tắt đèn
cổng. Biết: tốc độ 4800 baud liên tục, Fxtal =12MHz.
01/13/24 Phùng Thị Thu Hiền, BM Tin học Công nghiệp, Khoa Điện tử 137
Chương III: Hệ vi điều khiển 8051
3.2. Kiến trúc vi điều khiển 8051
01/13/24 Phùng Thị Thu Hiền, BM Tin học Công nghiệp, Khoa Điện tử 138
Chương III: Hệ vi điều khiển 8051
3.2. Kiến trúc vi điều khiển 8051
Thanh ghi IE
Nếu lập bít =1 thì cho phép ngắt, đặt bằng 0 thì cấm ngắt
EA: Enable All : cho phép ngắt tất cả, phải đặt bít này bằng
1, thì mọi ngắt khác mới được phép hoạt động. Muốn ngắt
nào hoạt động thì cho phép ngắt đó theo các bit dưới đây:
ES: Enable Serial: Cho phép ngắt truyền thông nối tiếp.
ET1: Enable Timer 1: cho phép Timer 1 hoạt động
EX1: Enable eXternal: cho phép ngắt ngoài 1
ET0: Enable Timer 0: cho phép Timer 0 hoạt động
EX0: Enable eXternal: cho phép ngắt ngoài 0
01/13/24 Phùng Thị Thu Hiền, BM Tin học Công nghiệp, Khoa Điện tử 139
Chương III: Hệ vi điều khiển 8051
3.2. Kiến trúc vi điều khiển 8051
•PS: UART
•PT1: Timer 1
•PX1: INTR 1
•PT0: Timer 0
•PX0: INTR 0
01/13/24 Phùng Thị Thu Hiền, BM Tin học Công nghiệp, Khoa Điện tử 140
Chương III: Hệ vi điều khiển 8051
3.2. Kiến trúc vi điều khiển 8051
01/13/24 Phùng Thị Thu Hiền, BM Tin học Công nghiệp, Khoa Điện tử 141
Chương III: Hệ vi điều khiển 8051
3.2. Kiến trúc vi điều khiển 8051
01/13/24 Phùng Thị Thu Hiền, BM Tin học Công nghiệp, Khoa Điện tử 142
Chương III: Hệ vi điều khiển 8051
3.2. Kiến trúc vi điều khiển 8051
Org 0Bh
Ljmp X1
Org 1Bh
Ljmp X2
01/13/24 Phùng Thị Thu Hiền, BM Tin học Công nghiệp, Khoa Điện tử 143
Chương III: Hệ vi điều khiển 8051
3.2. Kiến trúc vi điều khiển 8051
01/13/24 Phùng Thị Thu Hiền, BM Tin học Công nghiệp, Khoa Điện tử 144
Chương III: Hệ vi điều khiển 8051
3.2. Kiến trúc vi điều khiển 8051
01/13/24 Phùng Thị Thu Hiền, BM Tin học Công nghiệp, Khoa Điện tử 145
Chương III: Hệ vi điều khiển 8051
3.2. Kiến trúc vi điều khiển 8051
01/13/24 Phùng Thị Thu Hiền, BM Tin học Công nghiệp, Khoa Điện tử 146
Chương III: Hệ vi điều khiển 8051
3.2. Kiến trúc vi điều khiển 8051
01/13/24 Phùng Thị Thu Hiền, BM Tin học Công nghiệp, Khoa Điện tử 147
Chương III: Hệ vi điều khiển 8051
3.2. Kiến trúc vi điều khiển 8051
01/13/24 Phùng Thị Thu Hiền, BM Tin học Công nghiệp, Khoa Điện tử 148
Chương III: Hệ vi điều khiển 8051
3.2. Kiến trúc vi điều khiển 8051
2.2 Kích phát sườn
Bài toán 21: Giả sử chân P3.3 (INT1) được nối với một máy tạo xung.
Hãy viết chương trình trong đó sườn xuống của xung sẽ chuyển
chân P1.3 lên cao, chân này được nối tới Led báo
org 0h
ljmp main
org 0013h ; INT1
setb p1.3
mov R3, #0FFh
back: djnz r3, back; giu den sang 1 luc
clr p1.3
reti
org 30h
main: setb tcon.2 ; ngat kich phat suon; IT1=1
mov IE, #84h
here: sjmp here
end
01/13/24 Phùng Thị Thu Hiền, BM Tin học Công nghiệp, Khoa Điện tử 149
Chương III: Hệ vi điều khiển 8051
3.2. Kiến trúc vi điều khiển 8051
2.3. Ngắt cho truyền thông nối tiếp
Bài toán 22. Hãy viết chương trình sử dụng các ngắt thực hiện các
công việc sau:
- Đọc dữ liệu từ cổng P1, truyền nối tiếp với tốc độ baud 4800 và
sao dữ liệu cổng P1 vào cổng P2
- Thu dữ liệu nối tiếp và gửi đến cổng P0
- Sử dụng Timer 0 tạo sóng vuông tần số 50KHz trên P3.1
Cách làm: Xem code đã lưu (ngat_truyenthongnoitiep)
01/13/24 Phùng Thị Thu Hiền, BM Tin học Công nghiệp, Khoa Điện tử 150
Chương III: Hệ vi điều khiển 8051
3.3. Tập lệnh 8051 và lập trình hợp ngữ cho 8051
01/13/24 Phùng Thị Thu Hiền, BM Tin học Công nghiệp, Khoa Điện tử 151
Chương III: Hệ vi điều khiển 8051
3.3. Tập lệnh 8051 và lập trình hợp ngữ cho 8051
Phân tích:
Đèn led sáng khi tín hiệu xuất ra ở mức
1(+5V).
Xuất mức logic 1 ra Port 0 và Port 2.
01/13/24 Phùng Thị Thu Hiền, BM Tin học Công nghiệp, Khoa Điện tử 152
Chương III: Hệ vi điều khiển 8051
3.3. Tập lệnh 8051 và lập trình hợp ngữ cho 8051
Bài 2: Cho các dãy đèn led có kết nối như hình
sau, các dãy led này được kết nối với Port 1 và
Port 2. Viết chương trình để các led nối mỗi Port
sáng xen kẽ: led 1,3,5,7 sáng; led 2,4,6,8 tắt,
các led được đánh số như sau led 1 nối với Px.0,
led 2 nối với Px.1, lần lượt với các led khác.
01/13/24 Phùng Thị Thu Hiền, BM Tin học Công nghiệp, Khoa Điện tử 153
Chương III: Hệ vi điều khiển 8051
3.3. Tập lệnh 8051 và lập trình hợp ngữ cho 8051
Phân tích:
Đèn led sáng khi tín hiệu ở ngõ ra ở mức
0(+0V).
Các bit P1.0, P1.2, P1.4, P1.6 và P2.0, P2.2,
P2.4, P2.6 xuất tín hiệu ở mức 0
Các bit còn lại xuất ra mức 1.
01/13/24 Phùng Thị Thu Hiền, BM Tin học Công nghiệp, Khoa Điện tử 155
Chương III: Hệ vi điều khiển 8051
3.3. Tập lệnh 8051 và lập trình hợp ngữ cho 8051
Phân tích:
Tín hiệu xuất ra mức 1 một khoảng
thời gian để mắt có thể nhận biết
được
Sau đó làm tín hiệu xuất ra ở mức 0
một khoảng thời gian như trên.
Lặp đi lặp lại đoạn trên sẽ thấy dãy
đèn sáng rồi tắt.
01/13/24 Phùng Thị Thu Hiền, BM Tin học Công nghiệp, Khoa Điện tử 156
Chương III: Hệ vi điều khiển 8051
3.3. Tập lệnh 8051 và lập trình hợp ngữ cho 8051
01/13/24 Phùng Thị Thu Hiền, BM Tin học Công nghiệp, Khoa Điện tử 157
Chương III: Hệ vi điều khiển 8051
3.3. Tập lệnh 8051 và lập trình hợp ngữ cho 8051
ORG 000H ;khai bao dia chi de bat dau c.trinh tren Rom
Tudau:
Mov P1,#11111111B ; lam 8 led noi P1 sang
LCall Delay ; goi chuong trinh con Delay
Mov P1,#00 ; lam 8 led noi P1 tat
LCall Delay
Sjmp Tudau ; nhay ve thuc hien tu dau
Delay:
Mov R7,#0FFH ; gan R7=#0FFH, 1 chu ki may
Kt2: Mov R6,#0FFH ; gan R6=#0FFH, 1 chu ki may
Kt1: Djnz R6,Kt1;giam R6 xuong 1, R6 khac 0->giam
tiep,2 chu kỳ máy
Djnz R7,Kt2 ; giam R7 xuong 1, R6 khac 0-> ve
Kt2,2chu kỳ máy
Ret ; ket thuc chuong trinh con Delay
End ; ket thuc chuong trinh
01/13/24 Phùng Thị Thu Hiền, BM Tin học Công nghiệp, Khoa Điện tử 158
Chương III: Hệ vi điều khiển 8051
3.3. Tập lệnh 8051 và lập trình hợp ngữ cho 8051
01/13/24 Phùng Thị Thu Hiền, BM Tin học Công nghiệp, Khoa Điện tử 159
Chương III: Hệ vi điều khiển 8051
3.3. Tập lệnh 8051 và lập trình hợp ngữ cho 8051
Cách 1:
Làm cho các led sáng bằng cách
thiết đặt các giá trị thích hợp cho
các bit của Port để làm led sáng
theo từng trạng thái
Ưu điểm: Đơn giản
Nhược điểm:
Dài
Tốn dung lượng bộ nhớ Rom.
01/13/24 Phùng Thị Thu Hiền, BM Tin học Công nghiệp, Khoa Điện tử 160
Chương III: Hệ vi điều khiển 8051
3.3. Tập lệnh 8051 và lập trình hợp ngữ cho 8051
ORG 000H ; khai bao dia chi de bat dau chuong trinh tren Rom
Mov P1,#00000000B ; lam 8 led noi P1 tat
LCall Delay ; goi chuong trinh con Delay
Xuat: Mov P1,#00000001B ; lam led 1 sang
LCall Delay
Mov P1,#00000010B ; lam led 2 sang
LCall Delay
Mov P1,#00000100B ; lam led 3 sang
LCall Delay
Mov P1,#00001000B ; lam led 4 sang
LCall Delay
Mov P1,#00010000B ; lam led 5 sang
LCall Delay
Mov P1,#00100000B ; lam led 6 sang
LCall Delay
Mov P1,#01000000B ; lam led 7 sang
LCall Delay
Mov P1,#10000000B ; lam led 8 sang
LCall Delay
Sjmp Xuat ; nhay ve thuc hien tu dau
Delay:
Mov R7,#0FFH ; gan R7=#0FFH, 1 chu ki may
Kt2: Mov R6,#0FFH ; gan R6=#0FFH, 1 chu ki may
Kt1: Djnz R6,Kt1 ; giam R6 xuong 1, R6 khac 0-> giam
tiep
Djnz R7,Kt2 ; giam R7 xuong 1, R6 khac 0-> ve Kt2
Ret ; ket thuc chuong trinh con
End ; ket thuc chuong trinh
01/13/24 Phùng Thị Thu Hiền, BM Tin học Công nghiệp, Khoa Điện tử 161
Chương III: Hệ vi điều khiển 8051
3.3. Tập lệnh 8051 và lập trình hợp ngữ cho 8051
Cách2:
Để led sáng lần lượt, cần làm cho tín hiệu
xuất ra giá trị 1 một khoảng thời gian để
có thể nhận biết được.
Đầu tiên cho P1 tắt, sau đó làm cho bit
A.0 lên 1, sử dụng lệnh xoay trái dữ liệu
trên thanh Ram A, mỗi lần xoay giá trị 1
sẽ chuyển lần lượt qua A.1 - A.2 - A.3 -
A.4 - A.5 -A.6 - A.7 - A.0, mỗi lần xoay
xuất tín hiệu ra P1 sẽ thấy led sáng lần
lượt từ led 1 đến led 8.
01/13/24 Phùng Thị Thu Hiền, BM Tin học Công nghiệp, Khoa Điện tử 162
Chương III: Hệ vi điều khiển 8051
3.3. Tập lệnh 8051 và lập trình hợp ngữ cho 8051
01/13/24 Phùng Thị Thu Hiền, BM Tin học Công nghiệp, Khoa Điện tử 163
Chương III: Hệ vi điều khiển 8051
3.3. Tập lệnh 8051 và lập trình hợp ngữ cho 8051
ORG 000H ; khai bao dia chi de bat dau chuong trinh tren Rom
Mov P1,#0 ;===>>>> lam 8 led noi P1 tat
LCall Delay ;===>>>>goi chuong trinh con Delay
Mov A,#00000001B ;===>>>> A co gia tri 00000001B
Xuat:
Mov P1,A ; xuat du lieu A ra P1 dieu khien led
LCall Delay ;===>>>>goi chuong trinh con Delay
RL A
Sjmp Xuat ;===>>>> nhay ve thuc hien tu dau
Delay:
Mov R7,#0FFH
Kt2: Mov R6,#0FFH
Kt1: Djnz R6,Kt1
Djnz R7,Kt2
Ret
End
01/13/24 Phùng Thị Thu Hiền, BM Tin học Công nghiệp, Khoa Điện tử 164
Chương III: Hệ vi điều khiển 8051
3.3. Tập lệnh 8051 và lập trình hợp ngữ cho 8051
01/13/24 Phùng Thị Thu Hiền, BM Tin học Công nghiệp, Khoa Điện tử 165
Chương III: Hệ vi điều khiển 8051
3.3. Tập lệnh 8051 và lập trình hợp ngữ cho 8051
Cách 1:
Làm cho các led sáng bằng cách
thiết đặt các giá trị thích hợp cho
các Port để làm led sáng theo từng
trạng thái
Ưu điểm: đơn giản
Nhược điểm: viết dài và tốn dung
lượng bộ nhớ Rom.
Giải: giống cách 1 bài 4
01/13/24 Phùng Thị Thu Hiền, BM Tin học Công nghiệp, Khoa Điện tử 166
Chương III: Hệ vi điều khiển 8051
3.3. Tập lệnh 8051 và lập trình hợp ngữ cho 8051
Cách 2:
Dùng lệnh xoay A với cờ C
Mỗi lần xoay đều SetB C (C=1)
Sau mỗi lần xoay xuất kết quả ra P0 .
Đặt giá trị ban đầu cho A là #00000000B, vì C luôn
được set lên 1 nên sau lần xoay đầu tiên thanh ghi A
có giá trị là: #00000001B, lần 2: #00000011B, lần3:
#00000111B ....
Khi thanh ghi A đầy: #11111111B chương trình
phải được khởi động lại với giá trị ban đầu của A
là #00000000B.
Để nhận biết được khi nào thanh ghi A đầy để
khởi động lại các thông số, sau mỗi lần xoay
kiểm tra cờ nhớ C. Vì sau mỗi lần xoay giá trị
của cờ nhớ C do bit A.7 chuyển sang.
01/13/24 Phùng Thị Thu Hiền, BM Tin học Công nghiệp, Khoa Điện tử 167
Chương III: Hệ vi điều khiển 8051
3.3. Tập lệnh 8051 và lập trình hợp ngữ cho 8051
01/13/24 Phùng Thị Thu Hiền, BM Tin học Công nghiệp, Khoa Điện tử 168
Chương III: Hệ vi điều khiển 8051
3.3. Tập lệnh 8051 và lập trình hợp ngữ cho 8051
ORG 000H ;khai bao dia chi de bat dau chuong trinh tren Rom
Tudau:
Mov P0,#0 ;lam 8 led noi P0 tat
X1: LCall Delay ; goi chuong trinh con Delay
SetB C ;lam cờ C len 1
Mov A,P0
RLC A ; xoay thanh ghi A
Mov P0,A ; xuat ra led
JNC X1 ; nhay ve nhan "X1" neu C=0
Sjmp Tudau ; nhay ve thuc hien tu dau
Delay:
Mov R7,#0FFH
Kt2: Mov R6,#0FFH
Kt1: Djnz R6,Kt1
Djnz R7,Kt2
Ret
End ; ket thuc chuong trinh
01/13/24 Phùng Thị Thu Hiền, BM Tin học Công nghiệp, Khoa Điện tử 169
Chương III: Hệ vi điều khiển 8051
3.3. Tập lệnh 8051 và lập trình hợp ngữ cho 8051
Ví dụ
Chương trình đọc vào 1 giá trị x từ P1 và đưa ra x2 ở P2
ORG 0 ; assembler directive
MOV DPTR, #LUT ; 300H is the LUT address
MOV A, #0FFH
MOV P1, A ; program the port P1 to input data
Again:
MOV A, P1 ; read x
CPL A
MOVC A, @A+DPTR ; get x^2 from LUT
MOV P2, A ; output x^2 to P2
SJMP again ; for (1) loop
ORG 300H ;Look-up Table starts at 0x0300
LUT: DB 0, 1, 4, 9, 16, 25, 36, 49, 64, 81
01/13/24 END Phùng Thị Thu Hiền, BM Tin học Công nghiệp, Khoa Điện tử 170
Chương III: Hệ vi điều khiển 8051
3.2. Kiến trúc vi điều khiển 8051
01/13/24 171
Chương III: Hệ vi điều khiển 8051
3.2. Kiến trúc vi điều khiển 8051
01/13/24 172
Chương III: Hệ vi điều khiển 8051
3.2. Kiến trúc vi điều khiển 8051
01/13/24 173
Chương III: Hệ vi điều khiển 8051
3.2. Kiến trúc vi điều khiển 8051
org 0
mov tmod, #00001001B
mov TH0,#0
mov TL0,#0
SetB TR0
lap:
mov A, TH0
CJNE A, TH0, lap
mov B,#4
div AB; A = do rong xung us: 256/4
Acall hienthi
sjmp lap
01/13/24 174
Chương III: Hệ vi điều khiển 8051
3.2. Kiến trúc vi điều khiển 8051
hienthi:
acall bcdto7seg
mov p1,a
ret
bcdto7seg:
mov dptr, #dulieu
movc A, @A+dptr
ret
dulieu: DB 40h, 79h, 24h, 30h, 19h
DB 12h, 02h, 78h, 00h, 10h
Done: nop
end
01/13/24 175
Chương III: Hệ vi điều khiển 8051
3.2. Kiến trúc vi điều khiển 8051
Truyền thông nối tiếp vạn năng: UART
Truyền thông nối tiếp
Ví dụ:
Giả sử cổng nối tiếp của 8051 được nối vào cổng COM của máy
tính IBM PC và mà đang sử chương trình Terminer.exe để gửi và
nhận dữ liệu nối tiếp. Cổng P1 và P2 của 8051 được nối tới LED
và các công tắc chuyển mạch tương ứng. Hãy viết một chương
trình cho 8051.
a) Gửi thông báo “We Are Ready” tới máy tính PC.
b) Nhận dữ liệu từ PC gửi đến và chuyển đến các đèn
LED đang nối đến các chân của cổng P1.
c) Nhận dữ liệu trên các nút bấm được nối tới P2 và gửi
nó tới máy tính.
Chương trình phải thực hiện một lần a), nhưng b) và c) chạy
liên tục với tốc độ 4800 baud.
01/13/24 Phùng Thị Thu Hiền, BM Tin học Công nghiệp, Khoa Điện tử 176
Chương III: Hệ vi điều khiển 8051
3.2. Kiến trúc vi điều khiển 8051
Truyền thông nối tiếp vạn năng: UART
Xác định giá trị nạp cho các thanh ghi
TMOD: Chọn Timer1, chế độ 2 (tự động nạp lại)TMOD = 20H
TH1: Với Fxtal = 12MHz, Baud = 4800, giá trị nạp cho TH1= -6
SCON: SCON = 50H
Nhận dữ liệu trên các nút bấm nối tới P2 rồi truyền tới máy
tính
Nhận dữ liệu từ PC; truyền tới LED đang nối vào P1
01/13/24 Phùng Thị Thu Hiền, BM Tin học Công nghiệp, Khoa Điện tử 177
Chương III: Hệ vi điều khiển 8051
3.2. Kiến trúc vi điều khiển 8051
Truyền thông nối tiếp vạn năng: UART
Giải:
ORG 0
MOV P2, #0FFH ; Lấy cổng P2 làm cổng vào
MOV TMOD, #20H ; Chọn bộ Timer1, chế độ 2 (tự động nạp lại)
MOV TH1, # 0FAH ; Chọn tốc độ 4800 baud (-6)
MOV SCON, #50H ; Tạo khung dữ liệu 8 bít, 1bít Stop cho phép REN.
SETB TR1 ; Khởi động bộ Timer1
MOV DPTR, #MYDATA ; Nạp con trỏ đến thông báo
TBao: CLR A
MOVC A, @A + DPTR ; Lấy ký tự
JZ lientuc ; Nếu ký tự cuối cùng muốn gửi ra
ACALL SEND ; Nếu chưa thì gọi chương trình con SEND
INC DPTR ; Chạy tiếp
SJMP TBao ; Quay lại vòng lặp
01/13/24 Phùng Thị Thu Hiền, BM Tin học Công nghiệp, Khoa Điện tử 179