Ee3480 VXL

You might also like

Download as pdf or txt
Download as pdf or txt
You are on page 1of 126

Vi Xử Lý

EE 3480 Microprocessor - MicroController

Nguyen Tuan Ninh - 3I - SEEE - HUST ninh.nguyentuan@hust.edu.vn


Kiến trúc hệ VXL
 Kiến trúc Von Neumann
Memory

A
CPU D
C

 CPU: Bộ vi xử lý trung tâm: thực hiện lệnh và công việc


 Memory: Bộ nhớ lưu trữ lệnh, chương trình
 A (Address bus): Quyết định độ lớn miền không gian nhớ
 D (Data bus): 8 bit (D0 – D7)
 C (Control bus): Các tín hiệu Rd, Wr, Int, …

Nguyen Tuan Ninh - 3I - SEEE - HUST ninh.nguyentuan@hust.edu.vn


Kiến trúc hệ VXL
 Nguyên tắc hoạt động
Memory

A
CPU D
C

 Mỗi CPU thực hiện một tập lệnh hữu hạn


 Tập hợp các lệnh trở thành 1 chương trình, lưu dưới dạng mã nhị phân trong
bộ nhớ chương trình.
 CPU thực hiện lệnh 1 cách tuần tự
 Để thực hiện lệnh rẽ nhánh có điều kiện, CPU căn cứ vào các cờ (flag)
 CPU truy cập đến ô nhớ, thiết bị ngoại vi thông qua nguyên tắc địa chỉ
Nguyen Tuan Ninh - 3I - SEEE - HUST ninh.nguyentuan@hust.edu.vn
Kiến trúc hệ VXL
 Kiến trúc Von Neumann mở rộng

Memory

A
CPU D
C

Input/Output

 Input/Output (I/O): Thiết bị ngoại vi

Nguyen Tuan Ninh - 3I - SEEE - HUST ninh.nguyentuan@hust.edu.vn


Kiến trúc hệ VXL
 Kiến trúc Harvard

Program Data
Mem Mem

APro AData
A
CPU D
C

Input/Output

 Tách Bộ nhớ chương trình ( Program Mem) và Bộ nhớ dữ liệu (Data Mem)

Nguyen Tuan Ninh - 3I - SEEE - HUST ninh.nguyentuan@hust.edu.vn


Nguyên tắc thực hiện 1 lệnh
 Đọc tài liệu mcs51-manual( trang 2-21 … )
 Bảng 10, 8051 instruction set summary: Mô tả các lệnh, số bit cần dùng
 Bảng 11: Instruction opcodes in Hexadecimal Orders: bảng mã lệnh
 Trang 2-28: Giải thích cụ thể các lệnh và cung cấp các ví dụ
 Thanh ghi (Register) và Ô nhớ (Memory): Mem
[Addr+0]
CPU A Bus
[Addr+1]
N Reg [Addr N+1]
D Bus

C Bus

X Reg [Addr N+k]


[Addr+7]
Nguyen Tuan Ninh - 3I - SEEE - HUST ninh.nguyentuan@hust.edu.vn
Document continues below

Discover more from:

Kỹ thuật vi xử lý (ET3300) (ET3300)

100 documents

Go to course

Danh sách tập lệnh thường xuyên sử dụng của 8086


35
Kỹ thuật vi xử lý 100% (2)

Tập lệnh 8051


8
Kỹ thuật vi xử lý 100% (1)
Hướng dẫn lập trình hợp ngữ 8088 8086
10
Kỹ thuật vi xử lý 100% (1)
Nguyên tắc thực hiện 1 lệnh
Dsp mid exam 2018 1 ab - no description
 Cấu 4trúc câu lệnh:
Kỹ thuật vi xử lý None

 Các chế độ địa chỉ:


Bài tập lớn VXL VĐK-Điều khiển động cơ DC 2015
 Câu
27 lệnh chung : Mov OP1, OP2; #
Kỹ thuật vi xử lý None

mã lệnh toán hạng chú thích


Taplenh 89 - Tập lệnh
 Câu
9 lệnh có 1 toán hạng : INC OP1
Kỹ thuật vi xử lý None
 Câu lệnh chỉ có mã lệnh : NOP
 Các chế độ địa chỉ (Addressing mode):
 Direct Addressing Add A, 7FH
 Indirect Addressing Add A,@R0
 Register Addressing Add A,R7
 Immediate Constants Add A,#127
 Indexed Addressing

Nguyen Tuan Ninh - 3I - SEEE - HUST ninh.nguyentuan@hust.edu.vn


Nguyên tắc thực hiện 1 lệnh
 Phân tích câu lệnh cơ bản MSC 51:
Mov R0, #30H; 78H 30H Mem
Mov A, @R0; E6H 78H [Addr+0]
Mov R1, A; F9H 30H [Addr+1]
Mov A, @R1; E7H E6H
F9H

E7H [Addr+4]

Nguyen Tuan Ninh - 3I - SEEE - HUST ninh.nguyentuan@hust.edu.vn


Nguyên tắc thực hiện 1 lệnh

 PC (Program counter)  ALU: Bộ ALU  Register : Thanh ghi


 MAR: Memory Addr Reg  EU: Excution Unit  Op1, Op2: Toán hạng
 IR: Instruction Reg  BIU : Bus Interface  Buffer: Bộ đệm
Nguyen Tuan Ninh - 3I - SEEE - HUST ninh.nguyentuan@hust.edu.vn
Nguyên tắc thực hiện 1 lệnh
 Power On, đưa
giá trị của PC
(0000H) lên
Addr bus , qua
giải mạch mã
địa chỉ truy cập
đến Mem, lấy
giá trị đưa vào
Buffer.

 CPU gửi tiếp tín hiệu Rd lên  Qua giải mã lệnh thì CPU sẽ
Control bus, đưa số liệu lên biết làm gì tiếp theo (tùy vào
Databus, đưa vào IR câu lệnh ở chế độ địa chỉ)

Nguyen Tuan Ninh - 3I - SEEE - HUST ninh.nguyentuan@hust.edu.vn


Nguyên tắc thực hiện 1 lệnh
 Giải thích các câu lệnh:
Mov R0, #30H ;78H 30H
Mov A, @R0 ;E6H
Mov R1, A ;F9H
Mov A, @R1 ;E7H

 Sv giải thích câu lệnh:


Add A,@R0 ; 26H

Nguyen Tuan Ninh - 3I - SEEE - HUST ninh.nguyentuan@hust.edu.vn


Tăng tốc độ xử lý CPU
 Vấn đề: Thực hiện lệnh
lệnh 1 -> lệnh 2 -> lệnh 3
Nhiều lệnh hơn thì CPU sẽ
tốn thời gian thực hiện CPU
chậm.
 Khắc phục:

 C1: tăng tần số xung


nhịp (giới hạn bởi
công nghệ làm chất
bán dẫn -> gần như
không thể)
 C2: chia CPU thành nhiều phần khác nhau (BIU và EU). Trong
lúc giải mã và thực hiện lệnh 1 thì đọc tiếp tục lệnh 2 và tương tự
đối với lệnh 3 => Chỉ tốn 5.t0
Nguyen Tuan Ninh - 3I - SEEE - HUST ninh.nguyentuan@hust.edu.vn
PipeLine- Hàng đợi lệnh
 Khi đọc xong lệnh 1, CPU lại tiếp tục đọc lệnh 2, khi đó lệnh 1
vào IR chưa giải mã xong, lệnh 2 cũng được đưa đến IR.
=> Sử dụng hàng đợi lệnh: các lệnh được xếp vào hàng đợi lệnh
trước khi được đưa vào IR
 Hàng đợi lệnh hoạt động theo nguyên tắc FIFO (First In First Out)

Nguyen Tuan Ninh - 3I - SEEE - HUST ninh.nguyentuan@hust.edu.vn


Stack – Ngăn xếp
 Định nghĩa: là một vùng nhớ, thông
thường đặt ở trong RAM, dùng để lưu trữ
các số liệu tạm thời của một chương trình
con hoặc một chương trình phục vụ ngắt
 Tại sao ngăn xếp đặt ở trong RAM?
Xét theo tốc độ truy cập:
thanh ghi > RAM > ROM
Tuy nhiên vì độ dài chương trình tạm thời có
độ dài không xác định (phụ thuộc người viết)
nên không dùng được thanh ghi (dung lượng
ít và có hạn). Vì vậy, dùng RAM vừa có tốc
độ nhanh hơn ROM, vừa có dung lượng lớn
hơn và còn có khả năng mở rộng.

Nguyen Tuan Ninh - 3I - SEEE - HUST ninh.nguyentuan@hust.edu.vn


Stack – Ngăn xếp
 SP (Stack Pointer): con trỏ ngăn xếp
(chỉ vào đỉnh ngăn xếp)
 Xác định độ rộng ngăn xếp
 C1: sử dụng địa chỉ bắt đầu (Start
address) và địa chỉ kết thúc (End
address)
 C2: địa chỉ bắt đầu + dung lượng
ngăn xếp cần thiết
 Nguyên tắc hoạt động của ngăn xếp
 LIFO (Last In First Out)
 FIFO (First In First Out)

Nguyen Tuan Ninh - 3I - SEEE - HUST ninh.nguyentuan@hust.edu.vn


Stack – LIFO

 Lệnh thao tác ngăn xếp


 Push Reg; Lệnh cất vào ngăn xếp
Sp = Sp +1
Cất gtri Reg vào ô nhớ chỉ bởi SP

Nguyen Tuan Ninh - 3I - SEEE - HUST ninh.nguyentuan@hust.edu.vn


Stack – LIFO

 Lệnh thao tác ngăn xếp


 Pop Reg; Lệnh lấy ra từ ngăn xếp
Lấy gtri ô nhớ chỉ bởi SP chuyển vào Reg
Sp = Sp -1
Nguyen Tuan Ninh - 3I - SEEE - HUST ninh.nguyentuan@hust.edu.vn
Stack – LIFO
VD: xác định gtrị các thanh ghi, SP và nội dung trong ngăn xếp sau
khi thực hiện các lệnh sau
MOV SP, #2F h
MOV A, #1E h
MOV R0 , #E2 h
MOV R1, #7D h
ADD A, #1C h
PUSH Acc
PUSH 0
MOV R0, R1
POP 1
POP 7
Nguyen Tuan Ninh - 3I - SEEE - HUST ninh.nguyentuan@hust.edu.vn
Stack – LIFO
Thực hiện 4 lệnh đầu
MOV SP , #2F h
MOV A , #1E h
MOV R0 , #E2 h
MOV R1 , #7D h
Chuyển các giá trị 2F, 1E,
E2, 7D lần lượt vào SP,
thanh ghi A, R0 và R1

Nguyen Tuan Ninh - 3I - SEEE - HUST ninh.nguyentuan@hust.edu.vn


Stack – LIFO
Thực hiện lệnh
ADD A , #1C h
cộng giá trị tại thanh
ghi A với giá trị 1C
được giá trị 3A rồi lưu
lại vào thanh ghi A

Nguyen Tuan Ninh - 3I - SEEE - HUST ninh.nguyentuan@hust.edu.vn


Stack – LIFO

Thực hiện lệnh


PUSH Acc
SP = SP+1, cất giá
trị tại thanh ghi A
vào ngăn xếp đang
được trở bởi SP

Nguyen Tuan Ninh - 3I - SEEE - HUST ninh.nguyentuan@hust.edu.vn


Interrupt – Ngắt
- PC được nạp vào địa chỉ
của lệnh đầu tiên của
chương trình phục vụ ngắt.
Địa chỉ của lệnh a là địa
chỉ đầu tiên của vector ngắt
- Kết thúc chương trình ngắt
là lệnh Reti dùng để quay
lại chương trình trước khi
có ngắt, khi quay về, CPU
khôi phục lại các cờ, tiếp
đến là các thanh ghi liên
quan và cuối cùng là giá trị
PC (chứa địa chỉ của lệnh
k+1)

Nguyen Tuan Ninh - 3I - SEEE - HUST ninh.nguyentuan@hust.edu.vn


Interrupt – Ngắt

Mức độ ưu tiên ngắt


Nếu đang CTPVN1 lại có ngắt tiếp thì sẽ kiểm tra xem ưu tiên của
hai ngắt để CPU thực hiện Int 1 hay Int 2
Để phân biệt (định nghĩa) ưu tiên ngắt sử dụng: thanh ghi IP (interrupt
Piority)
Nguyen Tuan Ninh - 3I - SEEE - HUST ninh.nguyentuan@hust.edu.vn
Interrupt – Ngắt
 Cách xác định nguồn báo ngắt bằng phần cứng

Nguyen Tuan Ninh - 3I - SEEE - HUST ninh.nguyentuan@hust.edu.vn


Interrupt – Ngắt
 Cách xác định nguồn báo ngắt bằng phần mềm

Nguyen Tuan Ninh - 3I - SEEE - HUST ninh.nguyentuan@hust.edu.vn


Interrupt – Ngắt

Rdy1 Rdy2 Rdy3 Rdy4 Rdy5 Rdy6 Rdy7 Rdy8

1 1 1 1 1 1 1 1

Rdy2=Rdy5=0 1 0 1 1 1 1 1 0

 Sau khi CPU đọc dữ liệu từ databus vào thanh ghi, và kiểm tra
giá trị Reg và mức độ ưu tiên ngắt để quyết định thực hiện
CTpvn tương ứng
Nguyen Tuan Ninh - 3I - SEEE - HUST ninh.nguyentuan@hust.edu.vn
Ngắt- MCS 51
 Đối với MCS51, người dùng có thể sử dụng 5 véc-tơ ngắt, tuy
nhiên, trên thực tế, MCS51 có 6 nguồn báo ngắt (bao gồm cả ngắt
RESET- luôn ở đầu tiên của bảng vector ngắt)

Ngắt ngoài 0

Ngắt Timer 0

Ngắt ngoài 1

Ngắt Timer 1

Ngắt nối tiếp

Nguyen Tuan Ninh - 3I - SEEE - HUST ninh.nguyentuan@hust.edu.vn


Ngắt- MCS 51
 Bảng vector ngắt Ngắt Kí hiệu Int Vector
Addr
 Sử dụng ngắt trong MCS-51 RESET RESET 0000H
 Setb EA (enable all) (IE register) Ngắt ngoài 0 IE0 0003H
 Setb Ngắt tương ứng (IE register) Timer 0 TF0 000BH
 CT phục vụ ngắt tại địa chỉ vector ngắt Ngắt ngoài 1 IE1 0013H
Timer 1 TF1 001BH
Ngắt nối tiếp RI&TI 0023H

 Mức độ ưu tiên ngắt : IP

Nguyen Tuan Ninh - 3I - SEEE - HUST ninh.nguyentuan@hust.edu.vn


Ngắt- MCS 51
 IE – thanh ghi kích hoạt ngắt, cho phép truy cập theo từng bit.

EA - ET2 ES ET1 EX1 ET0 EX0

EA IE.7 Cho phép/cấm hoạt động của cả thanh ghi


- IE.6 Chưa sử dụng
ET2 IE.5 Cho phép ngắt timer 2 (chỉ với 8052)
ES IE.4 Cho phép ngắt cổng truyền thông nối tiếp
ET1 IE.3 Cho phép ngắt timer 1
EX1 IE.2 Cho phép ngắt ngoài 1
ET0 IE.1 Cho phép ngắt timer 0
EX0 IE.0 Cho phép ngắt ngoài 0

Nguyen Tuan Ninh - 3I - SEEE - HUST ninh.nguyentuan@hust.edu.vn


Ngắt- MCS 51
 Thiết lập cho ngắt ngoài 1, timer 0 và truyền tin.
7 6 5 4 3 2 1 0
1 0 0 1 0 1 1 0

Lệnh: mov IE, #10010110B

Cách viết khác: setb ET0 hoặc setb IE.1


setb EX1 setb IE.2
setb ES setb IE.4
setb EA setb IE.7

Nguyen Tuan Ninh - 3I - SEEE - HUST ninh.nguyentuan@hust.edu.vn


Ngắt- MCS 51
 IP – thanh ghi định nghĩa cấp độ ưu tiên ngắt

- - PT2 PS PT1 PX1 PT0 PX0

- IP.7 Chưa sử dụng


- IP.6 Chưa sử dụng
PT2 IP.5 Định nghĩa mức ưu tiên cho ngắt timer 2 (chỉ với 8052)
PS IP.4 Định nghĩa mức ưu tiên cho ngắt cổng truyền thông nối tiếp
PT1 IP.3 Định nghĩa mức ưu tiên cho ngắt timer 1
PX1 IP.2 Định nghĩa mức ưu tiên cho ngắt ngoài 1
PT0 IP.1 Định nghĩa mức ưu tiên cho ngắt timer 0
PX0 IP.0 Định nghĩa mức ưu tiên cho ngắt ngoài 0

Nguyen Tuan Ninh - 3I - SEEE - HUST ninh.nguyentuan@hust.edu.vn


Ngắt- MCS 51
 Mặc định thứ tự ưu tiên lần lượt cho từng ngắt là: IE0, TF0, IE1,
TF1, RI&TI.
7 6 5 4 3 2 1 0
0 0 0 1 0 0 1 0

Thứ tự ưu tiên: TF0 -> RI/TI -> IE0 -> IE1 -> TF1
Lệnh: mov IP, #00010010B
Cách viết khác: setb PT0 hoặc setb IP1
setb PS setb IP4

Nguyen Tuan Ninh - 3I - SEEE - HUST ninh.nguyentuan@hust.edu.vn


Các phương pháp vào ra – Vào ra bằng chương trình

 Sử dụng một chương trình


để điều khiển việc trao đổi
dữ liệu giữa CPU và thiết bị
ngoại vi.
 Điều kiện: Mỗi 1 ngoại vi
cần phải có tín hiệu báo cho
CPU biết về việc sẵn sàng
trao đổi dữ liệu

Nguyen Tuan Ninh - 3I - SEEE - HUST ninh.nguyentuan@hust.edu.vn


Các phương pháp vào ra – Vào ra bằng chương trình
 Phương pháp ưu tiên quay vòng

 Phương pháp ưu tiên tuyệt đối

Nguyen Tuan Ninh - 3I - SEEE - HUST ninh.nguyentuan@hust.edu.vn


Các phương pháp vào ra – Vào ra bằng chương trình
 Ưu điểm :
 Dễ viết chương trình .
 Người lập trình có thể thay đổi mức độ ưu tiên.
 Nhược điểm:
 Tốn thời gian để hỏi từng ngoại vi dù không có nhu cầu.
 Khi 1 ngoại vi thứ k bị hỏng -> Làm cho ngoại vi thứ k + 1, k + 2 không
được kiểm tra.

Nguyen Tuan Ninh - 3I - SEEE - HUST ninh.nguyentuan@hust.edu.vn


Các phương pháp vào ra – Vào ra bằng ngắt
 Xem lại phần Ngắt trong hệ Vi xử lý :
 Ưu điểm: CPU không tốn thời gian hỏi các I/O không có nhu cầu
trao đổi dữ liệu.
 Nhược điểm : Khi ngắt xảy ra mà lượng trao đổi dữ liệu lớn, CPU
sẽ tốn nhiều thời gian với ngắt đó.

Nguyen Tuan Ninh - 3I - SEEE - HUST ninh.nguyentuan@hust.edu.vn


Các phương pháp vào ra – Vào ra DMA
 DMA – Direct Memory Access: Phương pháp ngắt, việc trao đổi
dữ liệu giữa I/O và Mem cần phải thông qua CPU bằng databus.

 DMA cho phép việc trao


đổi dữ liệu giữa I/O và
Mem trực tiếp, không cần
thông qua CPU.
 DMAC (DMA Controller)
thay CPU điều khiển quá
trình trao đổi dữ liệu I/O
và Mem.
 DMA cải thiện tốc độ trao
đổi dữ liệu và lượng dữ
liệu lớn.
Nguyen Tuan Ninh - 3I - SEEE - HUST ninh.nguyentuan@hust.edu.vn
Các phương pháp vào ra – Vào ra DMA
 I/O gửi DMA Req tới DMAC
 DMAC gửi DMA Hold tới CPU
 CPU sẽ kiểm tra các điều kiện
cần thiết trước khi cho phép
DMA
 Đủ đk: CPU trả lời DMA Hold
Ack đến DMAC. Đồng thời,
CPU đưa tất cả các đường bus
lên trạng thái cao trở và CPU
tách hoàn toàn ra khỏi hệ
thống) nhường quyền điều
khiển cho DMAC
 DMAC gửi tín hiệu xác nhận DMA Ack tới I/O cho phép trao đổi
dữ liệu I/O và Mem.
Nguyen Tuan Ninh - 3I - SEEE - HUST ninh.nguyentuan@hust.edu.vn
Các phương pháp vào ra – Vào ra DMA
 DMAC xác định từ địa chỉ đầu, vùng nhớ cần trao đổi, tiếp đó I/O
thực hiện trao đổi dữ liệu với Mem.
 Khi kết thúc trao đổi dữ
liệu, I/O gửi tín hiệu tới
DMAC, DMAC gửi tín hiệu
về CPU. CPU lấy lại quyền
điều khiển đường bus, phản
hồi về DMAC và ngoại vi,
kết thúc quá trình.
 Nhược điểm DMA và
hướng khắc phục

Nguyen Tuan Ninh - 3I - SEEE - HUST ninh.nguyentuan@hust.edu.vn


Vi Điều Khiển
 So sánh điểm khác nhau giữa vi xử lý & vi điều khiển:
Vi xử lý Vi Điều Khiển
(Microprocessors): (MicroController):
 Tốc độ xử lý cao.  Dùng trong công nghiệp nên
 CPU, MEM, I/O là tách biệt ít đòi hỏi tốc độ xử lý cao.
với nhau.  CPU, MEM, I/O tích hợp
OnChip Độ ổn định tốt.
 Mở rộng, nâng cấp dễ dàng.
 Thường được ứng dụng cho
 Thường phục vụ cho những
bài toán lớn là phức tạp ( Hệ những bài toán nhỏ, lập
trình hệ thống riêng
thống ...).

Nguyen Tuan Ninh - 3I - SEEE - HUST ninh.nguyentuan@hust.edu.vn


Vi Điều Khiển –VĐK MCS51
 Cấu trúc chung :

 8-bit CPU.
 4 Ports, 2 Timers/Counters.
 64K bộ nhớ chương trình
(Program Memory Address).
 64K bộ nhớ địa chỉ dữ liệu
(Data Memory Address).
 4kB bộ nhớ chương trình
sẵn trên chip.
 128b sẵn trên chip DataRam.
 Bộ tạo xung nhịp Osc trong

Nguyen Tuan Ninh - 3I - SEEE - HUST ninh.nguyentuan@hust.edu.vn


Vi Điều Khiển –VĐK MCS51
 Chức năng các chân trong VĐK MCS51:
 Pin 1 ÷ 8: Port 1 (P1.0 ÷ P1.7).

 Pin 9, 20, 40: Reset (RST); GND, Vcc


 Pin 10 ÷ 17: Chức năng Port 3 (P3.0 ÷ P3.7)
Chức năng đặc biệt
 Pin18 ÷ 19 Xung nhịp (OSC)
 Pin 21 ÷ 28: Port 2 (P2.0 ÷ P2.7)
Hi_Addr Bus A8 ÷ A15.
 Pin 29: PSEN (Program Store Enable)
 Pin 30: ALE – Cho phép chốt địa chỉ.
 Pin31: EA- Chọn bộ nhớ trong hay ngoài
 Pin 30 ÷ 32: Port 0 (P0.0 ÷ P0.7) or Lo_Addr/Data Bus AD0 ÷ AD7.
Nguyen Tuan Ninh - 3I - SEEE - HUST ninh.nguyentuan@hust.edu.vn
Vi Điều Khiển –VĐK MCS51
Ghép nối bộ nhớ ngoài với MCS 51:
 Ghép nối bộ nhớ chương trình:
 EA = 0 Chương trình chạy tại bộ nhớ ngoài (External
ROM).
 EA = 1 Chương trình chạy bộ tại bộ nhớ trong
(Internal ROM) sau đó chuyển sang bộ nhớ ngoài
(External ROM).

Nguyen Tuan Ninh - 3I - SEEE - HUST ninh.nguyentuan@hust.edu.vn


Vi Điều Khiển –VĐK MCS51
Ghép nối bộ nhớ ngoài với MCS 51:
 Ghép nối bộ nhớ dữ liệu:
 Bộ nhớ dữ liệu ngoài 64K Byte
 Bộ nhớ dữ liệu trong 128 Byte (mặc định)

Nguyen Tuan Ninh - 3I - SEEE - HUST ninh.nguyentuan@hust.edu.vn


Vi Điều Khiển –VĐK MCS51
 Bộ nhớ dữ liệu trong Internal RAM
 Cách truy cập đến các vùng nhớ trong Internal RAM

Nguyen Tuan Ninh - 3I - SEEE - HUST ninh.nguyentuan@hust.edu.vn


Vi Điều Khiển –VĐK MCS51
 128 Byte Internal RAM
7FH 0 1 2 3 4 5 6 7 8 9 A B C D E F
0
1
Ô
2 ...
30H nhớ

2FH 3

20H 4 ...
1FH 5
18H 6 ...
17H 7
10H
0FH  00H ÷ 07H: Là các thanh ghi R0 ÷ R7 => B0.
08H  08H ÷ 0FH; 10H ÷ 17H; 18H ÷ 1FH : B1, B2, B3
07H
 20H ÷ 2FH: Vùng bit hoặc vùng ô nhớ (Mem).
00H
 30H ÷ 7FH: Vùng ô nhớ & vùng stack.
Nguyen Tuan Ninh - 3I - SEEE - HUST ninh.nguyentuan@hust.edu.vn
Vi Điều Khiển –VĐK MCS51
 SFRs (Special Function Registers)
 Truy cập theo chế độ địa chỉ trực tiếp (Direct Addressing mode)

Nguyen Tuan Ninh - 3I - SEEE - HUST ninh.nguyentuan@hust.edu.vn


Vi Điều Khiển –VĐK MCS51
 Tập lệnh MCS -51- tra cứu Mcs51 Manual
 Nhóm lệnh chuyển số liệu:
Mov TH1, TH2 ;
Push TH ;
Pop TH ;
Xch A,TH ;
Xchd A@Ri ;
Xch A,Rn ;
Xch A@Ri ;
Xch A,[Mem] ;

Nguyen Tuan Ninh - 3I - SEEE - HUST ninh.nguyentuan@hust.edu.vn


Vi Điều Khiển –VĐK MCS51
 Tập lệnh MCS -51- tra cứu Mcs51 Manual
 Nhóm lệnh số học:
Add A,TH ; A<= A+TH
Addc A,TH ; A<= A+TH + (c)
Subb A,TH ; A<= A-TH-(c)
INC TH ; TH <= TH+1
DEC TH ; TH<= TH-1
MUL AB ; AxB
DIV AB ;A:B
DA A ; Adjust Acc
;
Nguyen Tuan Ninh - 3I - SEEE - HUST ninh.nguyentuan@hust.edu.vn
Vi Điều Khiển –VĐK MCS51
 Tập lệnh MCS -51- tra cứu Mcs51 Manual
 Nhóm lệnh Logic:  Nhóm lệnh khác:
ANL A,TH SWAP A
ORL A,TH RR A
XRL A,TH RRC A
CPL TH RL A
Mov C,bit RLC A
Mov bit,C
Setb bit
Clr bit

Nguyen Tuan Ninh - 3I - SEEE - HUST ninh.nguyentuan@hust.edu.vn


Vi Điều Khiển –VĐK MCS51
 Tập lệnh MCS -51- tra cứu Mcs51 Manual
 Nhóm lệnh nhảy rẽ nhánh có điều kiện:
JZ Nhãn ctrinh JC Nhãn ctrinh
JNZ Nhãn ctrinh JNC Nhãn ctrinh
DJNZ TH, Nhãn ctrinh JB bit, Nhãn ctrinh
CJNE TH1, TH2, Nhãn ctrinh JNB bit, Nhãn ctrinh

 Nhóm lệnh Rẽ nhánh không có điều kiện:


Jmp Nhãn ctrinh ; Nhãn Ctrinh cách vị trí nhảy 128 Byte
Ljmp Nhãn ctrinh ; Nhãn Ctrinh cách vị trí nhảy 64K Byte
Ajmp Nhãn ctrinh ; Nhãn Ctrinh cách vị trí nhảy 2K byte

Nguyen Tuan Ninh - 3I - SEEE - HUST ninh.nguyentuan@hust.edu.vn


Vi Điều Khiển –VĐK MCS51
 Tập lệnh MCS -51- tra cứu Mcs51 Manual
 Nhóm lệnh gọi chương trình con:
Call Tên_ctrinhC ;Tên_Ctrinh cách vị trí gọi 128 Byte
Lcall Tên_ctrinhC ;Tên_Ctrinh cách vị trí gọi 64K Byte
Acall Tên_ctrinhC ;Tên_Ctrinh cách vị trí gọi 2K byte

Nguyen Tuan Ninh - 3I - SEEE - HUST ninh.nguyentuan@hust.edu.vn


Vi Điều Khiển –VĐK MCS51
 Lập trình VĐK MCS 51
 Phần mềm thường dùng lập trình: Keil µVision
 Ngôn ngữ lập trình: Hợp ngữ (Assembly language) hoặc C
 Lập trình hợp ngữ VĐK MCS51:
 Quy tắc đặt tên nhãn, tên chương trình, biến, hằng số
 Không được trùng với các từ khóa
 Không dài quá 31 ký tự, không phân biệt chữ hoa hay chữ thường
 Không tồn tại các dấu cách trong tên và các ký tự đặc biệt
 Tên thường bắt đầu các chữ cái và có tính chất gợi nhớ
 Riêng tên nhãn và tên chương trình phải kết thúc bằng dấu “:”
 Khai báo biến và hằng số:
Tên Biến EQU Giá trị ; chú thích
Tên Hằng số EQU Giá trị hằng ; chú thích

Nguyen Tuan Ninh - 3I - SEEE - HUST ninh.nguyentuan@hust.edu.vn


Vi Điều Khiển –VĐK MCS51
 VD:
Buffer1 EQU 50h ; Biến Buffer1 được gán giá trị 50H
Constant_A EQU 10 ;Hằng số Constant_A được gán 10 (=0AH)
 Khai báo chương trình con:
Cú pháp: Ví dụ:

Tên chương trình con: Add2_1byte_Hex:


; Biến (thanh ghi) vào :……………. ; Biến vào: R0, R1
; Biến (thanh ghi) ra: ……………… ; Biến ra : Acc ,C flag
; Biến (thanh ghi) thay đổi: ……….. ; Thanh ghi thay đổi: Acc, C flag
; ------------------------------------------------ ;--------------------------------------------
Câu lênh 1 Mov A, R0
Câu lệnh 2 Add A, R1
………… Ret
Câu lệnh n
Ret

Nguyen Tuan Ninh - 3I - SEEE - HUST ninh.nguyentuan@hust.edu.vn


Vi Điều Khiển –VĐK MCS51
 Cấu trúc chương trình hợp ngữ:

Nguyen Tuan Ninh - 3I - SEEE - HUST ninh.nguyentuan@hust.edu.vn


Vi Điều Khiển –VĐK MCS51

Nguyen Tuan Ninh - 3I - SEEE - HUST ninh.nguyentuan@hust.edu.vn


Vi Điều Khiển –VĐK MCS51

Nguyen Tuan Ninh - 3I - SEEE - HUST ninh.nguyentuan@hust.edu.vn


Vi Điều Khiển –VĐK MCS51
 Thao tác và quản lý bảng số liệu:

Nguyen Tuan Ninh - 3I - SEEE - HUST ninh.nguyentuan@hust.edu.vn


Vi Điều Khiển –VĐK MCS51

Nguyen Tuan Ninh - 3I - SEEE - HUST ninh.nguyentuan@hust.edu.vn


Vi Điều Khiển –VĐK MCS51
 Sử dụng con trỏ thao tác bảng hay miền nhớ:
 Nếu bảng trong vùng RAM trong của MCS51 :
 Lệnh đọc từ vùng nhớ Mov A, @Ri ; (Ri là R0, R1)
 Lệnh viết vào vùng nhớ Mov @Ri, A ; (Ri là R0, R1)
 Nếu bảng trong vùng RAM ngoài của MCS51 :
 Lệnh đọc từ vùng nhớ Movx A, @Dptr
Movx A, @A+Dptr
 Lệnh viết vào vùng nhớ Movx @Dptr, A
 Nếu bảng trong vùng ROM của MCS51 :
 Lệnh đọc từ vùng nhớ Movc A, @A+Dptr
Movc A, @A+PC

Nguyen Tuan Ninh - 3I - SEEE - HUST ninh.nguyentuan@hust.edu.vn


Vi Điều Khiển –VĐK MCS51
 Viết đoạn chương trình đếm số
lần xuất hiện 1Byte trong 1
vùng nhớ RAM trong 10Byte,
biết địa chỉ đầu chứa trong
thanh ghi R7, Byte giá trị trong
thanh ghi R2
 Sinh viên viết chương trình:

Nguyen Tuan Ninh - 3I - SEEE - HUST ninh.nguyentuan@hust.edu.vn


Vi Điều Khiển –VĐK MCS51
 Viết đoạn trình
chuyển hai mảng
dữ liệu 50 byte.
Biết mảng 1 có địa
chỉ 50h trong Ram
trong và mảng 2 có
địa chỉ 1234h ở
RAM ngoài.

Nguyen Tuan Ninh - 3I - SEEE - HUST ninh.nguyentuan@hust.edu.vn


Cổng vào ra
 Cổng vào đơn giản:
 Mục tiêu: Đọc dữ liệu từ thiết bị ngoại vi, đưa vào CPU
Buffer
D₀ ÷ D₇
DEC
A Q₀÷Q₇
1
CPU Aᵢ ÷ Aₖ CS TBNV
từ
N
Rd OE

 Nguyên tắc hoạt động:


Data
TBNV Buffer

A
CPU DEC CS = 0
Aᵢ ÷ Aₖ D
OR OE = 0 Q₀÷Q₇ CPU
D₀ ÷ D₇
CPU Rd = 0

Nguyen Tuan Ninh - 3I - SEEE - HUST ninh.nguyentuan@hust.edu.vn


Cổng vào ra
 Giản đồ thời gian:

Aᵢ ÷ Aₖ Aᵢ ÷ Aₖ

CS

Rd

OE

D₀ ÷ D₇ D 0 – D7
t

Nguyen Tuan Ninh - 3I - SEEE - HUST ninh.nguyentuan@hust.edu.vn


Cổng vào ra
 Cổng vào có đối thoại:
 Cấu tạo:
Buffer Latch
D₀ ÷ D₇
Dᵢ Data Data
D-FF
DEC
A CS₀ ➀
1 D Q
Aᵢ ÷ Aₖ
từ
CPU CS₁ TBNV
N CLR CLK

0
Rd LE
OE
INT

OE
➁ IBF
Buffer 2

Nguyen Tuan Ninh - 3I - SEEE - HUST ninh.nguyentuan@hust.edu.vn


Cổng vào ra
 Cổng vào có đối thoại:
 Nguyên lý hoạt động: Buffer Latch
D₀ ÷ D₇
Data Data
D-FF
DEC 1
A 1 CS₀
➀ D Q 0
Aᵢ ÷ Aₖ
từ
CPU CS₁ TBNV
N CLR CLK
0
0 0 0
Rd LE
0 OE
INT 0
0 1 0 1
IBF

Data Data
TBNV Latch TBNV LE = 0 Latch Buffer
TBNV CLK D_FF = 1
IBF = 0
Q=D=1 Q=0 D-FF TBNV và Int CPU
Input Buffer Full

Nguyen Tuan Ninh - 3I - SEEE - HUST ninh.nguyentuan@hust.edu.vn


Cổng vào ra
 Cổng vào có đối thoại:
 Nguyên lý hoạt động: Buffer Latch
D₀ ÷ D₇
Data Data
D-FF
DEC 1
A 1 CS₀
➀ D Q 0
Aᵢ ÷ Aₖ
từ
CPU CS₁ TBNV
N CLR CLK
0
0 0 0
Rd LE
0 OE
INT 0
0 1 0 1
IBF

Cách 1: Đi vào chân ngắt của CPU, CPU ngắt
D
A OE = 0 Buffer CPU
CPU DEC CS₀ = 0 D₀ ÷ D₇
Aᵢ ÷ Aₖ
OR INT = 1
CPU Rd = 0
CLR = 0 Q=1
IBF = 1, TBNV ck gửi tiếp theo
Nguyen Tuan Ninh - 3I - SEEE - HUST ninh.nguyentuan@hust.edu.vn
Cổng vào ra
 Cổng vào có đối thoại: Buffer Latch
D₀ ÷ D₇
Dᵢ Data Data
D-FF
DEC
A ➀ 1
CS₀ D Q 0
1
Aᵢ ÷ Aₖ
từ
CPU CS₁ TBNV
N CLR CLK
0
0 0 0
Rd LE
0 0 0 OE
INT 0
0 1
➁ OE 0 0 IBF
Buffer 2
Cách 2: CPU đọc khi muốn TBNV cần trao đổi dữ liệu
Dᵢ = 0
A
CPU DEC CS₁ = 0 CPU tiến hành các bước để đọc dữ liệu:
Aᵢ ÷ Aₖ
A D
CPU Rd = 0 CPU DEC OE = 0 Buffer CPU
CS₀ = 0 D₀ ÷ D₇
Aᵢ ÷ Aₖ
OE = 0 ➁ OR
Buffer 2 CPU CPU Rd = 0
Q=0 Dᵢ CLR = 0 Q=1 IBF = 1
TBNV ck tiếp
Nguyen Tuan Ninh - 3I - SEEE - HUST ninh.nguyentuan@hust.edu.vn
Cổng vào ra
 Cổng vào có đối thoại:
CLK
t
Q
t
IBF
t
INT
t
CLR
t
Aᵢ ÷ Aₖ Aᵢ ÷ Aₖ
t
CS
t
Rd
t
OE
t
D₀ ÷ D₇ D 0 – D7
t

Nguyen Tuan Ninh - 3I - SEEE - HUST ninh.nguyentuan@hust.edu.vn


Cổng vào ra
 Cổng ra đơn giản:
 Mục tiêu: Viết dữ liệu từ CPU ra thiết bị ngoại vi
Buffer
D₀ ÷ D₇
Data Data
DEC
A
1
CPU Aᵢ ÷ Aₖ TBNV
từ CS
N
Wr OE

 Nguyên tắc hoạt động:


D
CPU
A D₀ ÷ D₇
CPU DEC CS = 0
Aᵢ ÷ Aₖ Data
OR OE = 0 Buffer TBNV
CPU Wr = 0

Nguyen Tuan Ninh - 3I - SEEE - HUST ninh.nguyentuan@hust.edu.vn


Cổng vào ra
 Giản đồ thời gian:

Aᵢ ÷ Aₖ Aᵢ ÷ Aₖ
t

CS t

Wr t

OE t

D₀ ÷ D₇ D 0 – D7
t

Nguyen Tuan Ninh - 3I - SEEE - HUST ninh.nguyentuan@hust.edu.vn


Cổng vào ra
 Cổng ra có đối thoại:

D
CPU Buffer
D₀ ÷ D₇
A
CPU DEC Data
Aᵢ ÷ Aₖ
CS₀ = 0 OE = 0 : Buffer Latch
OR OBF = 0
CPU Rd = 0 CLK D=1 Q=0 D-FF TBNV
Output Buffer Full Int CPU

Nguyen Tuan Ninh - 3I - SEEE - HUST ninh.nguyentuan@hust.edu.vn
Cổng vào ra
 Cổng ra có đối thoại:

Data
ACK LE Latch TBNV
TBNV Kthuc đọc
ACK CLR Q=1 CPU gửi data tiếp

Nguyen Tuan Ninh - 3I - SEEE - HUST ninh.nguyentuan@hust.edu.vn


Cổng vào ra
 Giản đồ thời gian:

Aᵢ ÷ Aₖ Aᵢ ÷ Aₖ
t

CS t

Wr t

CLK t
OE
t

Q t

OBF
t
ACK t

CLR
t
D₀ ÷ D₇ D 0 – D7
t

Nguyen Tuan Ninh - 3I - SEEE - HUST ninh.nguyentuan@hust.edu.vn


Cổng vào ra
 Cổng Read back:

Nguyen Tuan Ninh - 3I - SEEE - HUST ninh.nguyentuan@hust.edu.vn


Cổng nối tiếp (Serial Port)
 Định nghĩa: Truyền thông nối
tiếp là việc truyền tin giữa 2
thiết bị mà các bit truyền hay
các bit thông tin được truyền
đi 1 cách tuần tự và nối tiếp
nhau trên 1 đường truyền

 Phân loại:
 Truyền tin đồng bộ.
 Truyền tin không đồng bộ (UART)

Nguyen Tuan Ninh - 3I - SEEE - HUST ninh.nguyentuan@hust.edu.vn


Cổng nối tiếp (Serial Port)
 Tốc độ truyền: (bits/s- Baudrate)
 Nguyên lý truyền:
 Biến đổi // thành nối tiếp (Mạch dồn kênh-Mux)

 Thanh ghi dịch (shift register):

Nguyen Tuan Ninh - 3I - SEEE - HUST ninh.nguyentuan@hust.edu.vn


Cổng nối tiếp (Serial Port)
 Chế độ truyền:
TB1 TB2
 Đơn công (Simplex):
Tx Rx

 Bán song công (Half duplex):


TB1 Tx Rx TB2

Rx Tx

 Song công (Full duplex):


TB1 Tx Rx TB2

Rx Tx

Nguyen Tuan Ninh - 3I - SEEE - HUST ninh.nguyentuan@hust.edu.vn


Cổng nối tiếp (Serial Port)
 Truyền tin đồng bộ (synchronous transmission): Sử dụng 1 đường
xung nhịp clock (SCK) và 1 đường dữ liệu (SDA) để truyền thông
tin 1 cách tuần tự.
TB1 SCK TB2

SDA

Nguyen Tuan Ninh - 3I - SEEE - HUST ninh.nguyentuan@hust.edu.vn


Cổng nối tiếp (Serial Port)
 Truyền tin không đồng bộ (asynchronous transmission): Thiết bị
truyền và thiết bị nhận đều có nguồn phát xung clock riêng, thời
điểm nhận dữ liệu được xác định bằng 1 bit start và kết thúc là stop
bit

Tx Rx

Rx Tx

 UART (Universal Asynchronous Receiver-Transmitter)


 RS232/RS232C:
+ ‘1’ : -12Vdc - -3Vdc.
+ ‘0’ : +3Vdc - +12Vdc.
Nguyen Tuan Ninh - 3I - SEEE - HUST ninh.nguyentuan@hust.edu.vn
Cổng nối tiếp (Serial Port)
 Sơ đồ mạch 232:

 RS232 :
 point to point ; Khoảng cách truyền : 10 – 20m
 Baudrate : 19200 – 9600 – 4800 – 2400 – 1200 - 600 – 300
 Frame truyền : 1 byte

Nguyen Tuan Ninh - 3I - SEEE - HUST ninh.nguyentuan@hust.edu.vn


Truyền nối tiếp MCS 51
 MCS51 có một cổng truyền thông UART - Full duplex
 Port 3.0: Rx (serial input port)
 Port 3.1: Tx (serial output port)
 Có 4 chế độ truyền (mode) được xác định bởi bit SM0 và SM1 ở
thanh ghi SCON

Mode SM0 SM1 Description


0 0 0 Shift Reg – f/12
1 0 1 8-bit UART- Variable
2 1 0 9-bit UART- f/64 or f/32
3 1 1 9-bit UART- Variable

Nguyen Tuan Ninh - 3I - SEEE - HUST ninh.nguyentuan@hust.edu.vn


Truyền nối tiếp MCS 51-Mode 0

Nguyen Tuan Ninh - 3I - SEEE - HUST ninh.nguyentuan@hust.edu.vn


Truyền nối tiếp MCS 51-Mode 1

Nguyen Tuan Ninh - 3I - SEEE - HUST ninh.nguyentuan@hust.edu.vn


Truyền nối tiếp MCS 51-Mode 2
 Mode 2 truyền với baudrate cố định truyền 9 bit UART. 11 bit
được truyền và nhận : 1 bit start (0), 8 bit data với 1 bit data thứ 9
có thể lập trình được, 1 bit stop (1)
 Tốc độ truyền

Nguyen Tuan Ninh - 3I - SEEE - HUST ninh.nguyentuan@hust.edu.vn


Truyền nối tiếp MCS 51-Mode 3
 Mode 3 truyền với baudrate thay đổi truyền 9 bit UART. 11 bit
được truyền và nhận : 1 bit start (0), 8 bit data với 1 bit data thứ 9
có thể lập trình được, 1 bit stop (1)
 Tốc độ truyền theo cách tính ở mode 1

Nguyen Tuan Ninh - 3I - SEEE - HUST ninh.nguyentuan@hust.edu.vn


Truyền nối tiếp MCS 51
 Các thanh ghi dùng trong truyền tin MCS51
 SCON: thanh ghi điều khiển thanh ghi truyền thông.
 SMOD: bit bên trong thanh ghi PCON, giúp định nghĩa
baudrate.
 TI, RI: bit báo ngắt thuộc SCON cho phép ngắt truyền thông.
 Timer 0, timer 1: để định nghĩa baudrate.
 SBUF: ghi dữ liệu truyền nhận

Nguyen Tuan Ninh - 3I - SEEE - HUST ninh.nguyentuan@hust.edu.vn


Truyền nối tiếp MCS 51
 Thanh ghi SCON: (Bit addressable)

SM0 SM1 SM2 REN TB8 RB8 TI RI

 SM0, SM1: xác định mode truyền.


 SM2: bit cho phép khả năng đa xử lý.
 REN: bit bật tắt tính năng tiếp nhận trên chân Rx.
 TB8: bit data thứ 9 được truyền trong mode 2 và 3.
 RB8: bit data thứ 9 được nhận trong mode 2 và 3.
 TI: bit báo ngắt truyền.
 RI: bit báo ngắt nhận

Nguyen Tuan Ninh - 3I - SEEE - HUST ninh.nguyentuan@hust.edu.vn


Timer/Counter -MCS 51
 Nguyên lý chung Timer/Counter:

Ex_Clk

Osc _Clk

 N0 : giá trị đếm ban đầu


 N1 : giá trị đếm tối đa
 TF: cờ báo tràn,

Nguyen Tuan Ninh - 3I - SEEE - HUST ninh.nguyentuan@hust.edu.vn


Timer/Counter -MCS 51
 TF =1 chỉ khi có sự chuyển trạng thái Nmax → 0000H (đếm tăng)
hoặc 0000H→FFFFH (đếm giảm). Sau đó cờ TF lại trở về trạng
thái mặc định.
 Các chế độ đếm:
 AutoReload:
 Output Compare:
 Input Capture:

Nguyen Tuan Ninh - 3I - SEEE - HUST ninh.nguyentuan@hust.edu.vn


Timer/Counter -MCS 51
 Timer/Counter MCS51 : Timer/Counter 0 và Timer/Counter 1
 Các thanh ghi điều khiển Timer/Counter: TMOD, TCON
 Xung nhịp đưa vào đếm:

Nguyen Tuan Ninh - 3I - SEEE - HUST ninh.nguyentuan@hust.edu.vn


Timer/Counter -MCS 51
 TMOD – Thanh ghi chế độ Timer/Counter.

Gate C/T M1 M0 Gate C/T M1 M0


Timer 1 Timer 0

Gate = 0 → ĐK Timer/Counter bằng bit TRx (Điều khiển bằng phần mềm)
Gate = 1 → ĐK Timer/ Counter tín hiệu tại INTx (Điều khiển bằng phần cứng)
C/T = 1 ( Counter) / 0 (Timer)

M1 M0 Ý nghĩa
0 0 Mode 0 13 bit
0 1 Mode 1 16 bit
1 0 Mode 2 8 bit Autoreload
1 1 Mode 3 (Timer 0)
TL0 là 1 Timer/Counter 8bit được điều khiển bởi các bit điều khiển của Timer 0
TH0 là 1 Timer 8bit được điều khiển bởi các bit điều khiển của Timer 1
(Timer 1) Timer/Counter 1 không hoạt động

Nguyen Tuan Ninh - 3I - SEEE - HUST ninh.nguyentuan@hust.edu.vn


Timer/Counter -MCS 51
 TCON – Thanh ghi điều khiển Timer/Counter. ( Bit Addressable)

TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0

 TF1/TF0: cờ báo tràn của Timer 1/0. Set/Clear bởi phần cứng.
 TR1/TR0: Timer 1/0 Run Control bit. Set/Clear bởi phần mềm ĐK
bật (tắt) Timer/Counter 1/0.
 IE1/IE0: cờ External Interrupt 1/0 Edge. Set/Clear bởi phần cứng
 IT1/IT0: Interrupt 1/0 type control bit. Set/Clear bởi phần mềm.

Nguyen Tuan Ninh - 3I - SEEE - HUST ninh.nguyentuan@hust.edu.vn


Timer/Counter -MCS 51
 Viết đoạn chương trình tạo xung với tần số
1KHz tại cổng P1.2, biết xung nhịp thạch
anh 12MHz

Nguyen Tuan Ninh - 3I - SEEE - HUST ninh.nguyentuan@hust.edu.vn


Timer/Counter -MCS 51
 Timer0: Mode1

mov TMOD, #01H


loop:
mov TH0, #0FEH
mov TL0, #0BH
setb TR0
wait:
jnb TF0, wait
cpl p1.2
clr TR0 ; ???????
sjmp loop
Nguyen Tuan Ninh - 3I - SEEE - HUST ninh.nguyentuan@hust.edu.vn
Timer/Counter -MCS 51
 Timer0: Mode2
mov TMOD, #02H
mov TH0, #05H
mov TL0, #05H
mov R0, #02H
setb TR0
loop:
jnb TF0, loop
djnz R0, loop
cpl p1.2
mov R0, #02H
sjmp loop
Nguyen Tuan Ninh - 3I - SEEE - HUST ninh.nguyentuan@hust.edu.vn
Ghép nối Led 7Seg -MCS 51
 Led 7 thanh
 Led Anot chung
 Led Catot chung

R
R

R
R
R

Gnd
Nguyen Tuan Ninh - 3I - SEEE - HUST
(0V) ninh.nguyentuan@hust.edu.vn
Ghép nối Led 7Seg -MCS 51
 Tính toán điện trở R Vcc
Uled
R
Iled

R
 Vi mạch giải mã Led 7Seg

7 Seg Decoder Gnd (0V)


a
NBCD b
A (20)
c
B (21)
C (22) d
D (23) e  Input : NBCD
f  Output: mã Led 7seg
g

Nguyen Tuan Ninh - 3I - SEEE - HUST ninh.nguyentuan@hust.edu.vn


Ghép nối Led 7Seg -MCS 51
 Ghép nối VĐK với mạch giải mã Led 7 seg
 Cách 1: 7 Seg Dec
a
Clr Px.0
b
Setb Px.1 VĐK Px.0
A (20)
c
MCS Px.1
B (21)
Setb Px.2
51 Px.2
C (22) d
Px.3
Clr Px.3 D (23) e
f
 Cách 2:
g
Mov Px, #00000110B
 Lưu ý1:  Lưu ý2:
 Cách 3: Mov A,Px Mov A,Px
Mov Px, #06H ANL A, #0F6H ORL A, #06H
Mov Px, A Mov Px, A
Nguyen Tuan Ninh - 3I - SEEE - HUST ninh.nguyentuan@hust.edu.vn
Ghép nối Led 7Seg -MCS 51
 Ghép nối VĐK với giải mã Led 7 seg bằng phần mềm
A Chung

K Chung

Nguyen Tuan Ninh - 3I - SEEE - HUST ninh.nguyentuan@hust.edu.vn


Ghép nối Led 7Seg -MCS 51
 Ghép nối VĐK với giải mã Led 7 seg bằng phần mềm

Mov P1, #82H ;hiển thị 6 trên LED 1


Mov P3, #A4H ;hiển thị 2 trên LED 2

Nguyen Tuan Ninh - 3I - SEEE - HUST ninh.nguyentuan@hust.edu.vn


Ghép nối Led 7Seg -MCS 51
 Ghép nối VĐK với giải mã Led 7 seg bằng phần mềm
Loop: mov P1, #82H
setb P3.0
lcall Delay
clr P3.0
lcall Delay
mov P1, #A4H
setb P3.1
lcall Delay
clr P3.1
lcall Delay
ljmp Loop

Nguyen Tuan Ninh - 3I - SEEE - HUST ninh.nguyentuan@hust.edu.vn


Ghép nối MCS 51-ADC
ADC ( Analog Digital Converter) : là bộ biến đổi giá trị tương tự
đầu vào (U, I) thành giá trị số Nx (Binary)

Nguyen Tuan Ninh - 3I - SEEE - HUST ninh.nguyentuan@hust.edu.vn


Ghép nối MCS 51-ADC
Uv1
Uv 20 CH0 20
Nx Uvk Nx
CHk-1
2n-1 2n-1
Đk Đk
ADC ADC

Uref
Uref

Tín hiệu Đk : Start, Enable, EOC, Rd, Wr, OE, ALE, Addr,………..

ADC n bits (n=8)

Nx D7 D6 D5 D4 D3 D2 D1 D0 Uv (Vdc)

0 0 0 0 0 0 0 0 0 0

1 0 0 0 0 0 0 0 1 ΔU

… ………………………………………… …..

255 1 1 1 1 1 1 1 1 Uref

Nguyen Tuan Ninh - 3I - SEEE - HUST ninh.nguyentuan@hust.edu.vn


Ghép nối MCS 51-ADC
 Biểu diễn trên đồ thị

Nguyen Tuan Ninh - 3I - SEEE - HUST ninh.nguyentuan@hust.edu.vn


Ghép nối MCS 51-ADC
 ADC 0809 (8 kênh)
 SOC ( Start Of Convert) IN3 1 1 IN2
IN4 2 2 IN1
 EOC ( End Of Convert) IN5 3 3 IN0
IN6 4 4 ADD A
 OE( Output Enable) IN7 5 5 ADD B
START 6 ADD C
 ALE ( Address Latch Enable) 6
EOC 7 7 ALE
2-5 8 8 2-1MSB
Output Enable 9 9 2-2
CLOCK 10 10 2-3
VCC 11 11 2-4
VREF(+) 12 12 2-8LSB
GND 13 13 VREF(-)
2-7 14 14 2-6

a)

Nguyen Tuan Ninh - 3I - SEEE - HUST ninh.nguyentuan@hust.edu.vn


Ghép nối MCS 51-ADC
 Giản đồ xung ADC 0809

Nguyen Tuan Ninh - 3I - SEEE - HUST ninh.nguyentuan@hust.edu.vn


Ghép nối MCS 51-ADC
 Ghép nối VĐK MCS 51- ADC 0809

Addr C B A

Nguyen Tuan Ninh - 3I - SEEE - HUST ninh.nguyentuan@hust.edu.vn


Ghép nối MCS 51-DAC
DAC ( Digital Analog Converter)

Piece-wise
Digital Input
Continuous Output
0 bit

011010010101010100101
101010101011111100101
000010101010111110011 n bit DAC Low Filter
010101010101010101010
111010101011110011000
100101010101010001111

nth bit

Nguyen Tuan Ninh - 3I - SEEE - HUST ninh.nguyentuan@hust.edu.vn


Ghép nối MCS 51-DAC
Ur
20 Io Uo
Nx Uref
2n-1 Ur
Đk Mạch

R= 250
DAC

Uref

ΔU

0 T0
1 2 3 Nmax
DAC n bit ( n = 8 )
Nx D7 D6 D5 D4 D3 D2 D1 D0 Io (mA) Uo (Vdc)
0 0 0 0 0 0 0 0 0 0 0
1 0 0 0 0 0 0 0 1 ΔI ΔU
… …………………………………………… …. …..
255 1 1 1 1 1 1 1 1 Imax Uref

Nguyen Tuan Ninh - 3I - SEEE - HUST ninh.nguyentuan@hust.edu.vn


Ghép nối MCS 51-DAC
Vi mạch: DAC 0800, DAC 0808,….

Nguyen Tuan Ninh - 3I - SEEE - HUST ninh.nguyentuan@hust.edu.vn


Ghép nối MCS 51-DAC
Dùng DAC tạo dạng xung điện áp
20 D0

21 D1 UDAC
VĐK DAC m bit

2m-1 Dm-1

Ur Ur

Umax Umax

Ur 0 t
0 t

Umax

0 t
Nguyen Tuan Ninh - 3I - SEEE - HUST ninh.nguyentuan@hust.edu.vn
Ghép nối MCS 51-DAC
 Ghép nối VĐK MCS 51- DAC0808
VĐK DAC

P0.0

P0.7

Nguyen Tuan Ninh - 3I - SEEE - HUST ninh.nguyentuan@hust.edu.vn


Ghép nối MCS 51 –KeyPad
 Phím và bàn phím

Nguyen Tuan Ninh - 3I - SEEE - HUST ninh.nguyentuan@hust.edu.vn


Ghép nối MCS 51 –KeyPad
 Ghép nối phím đơn với VĐK MCS 51

Viết đoạn chương trình: +khi bấm PB1 -> Led nháy 5 lần
+ khi bấm PB2 -> Led nháy 10 lần

Nguyen Tuan Ninh - 3I - SEEE - HUST ninh.nguyentuan@hust.edu.vn


Ghép nối MCS 51 –KeyPad
 Ghép nối phím đơn với VĐK MCS 51

10uF

10 kΩ

Nguyen Tuan Ninh - 3I - SEEE - HUST ninh.nguyentuan@hust.edu.vn


Ghép nối MCS 51 –KeyPad
 Ghép nối ma phím 4x4 với VĐK MCS 51

 Phương pháp quét bàn phím


 Phương pháp đảo dây

Nguyen Tuan Ninh - 3I - SEEE - HUST ninh.nguyentuan@hust.edu.vn


Ghép nối MCS 51 –KeyPad
 Phương pháp đảo dây

Nguyen Tuan Ninh - 3I - SEEE - HUST ninh.nguyentuan@hust.edu.vn

You might also like