You are on page 1of 53

CHƢƠNG 2: VI ĐIỀU KHIỂN

MCS-51
Lê Minh Thùy
Bộ môn KTĐ&THCN - ĐHBK HN

Học phần: Kỹ thuật vi xử lý


EE3480
Mục lục
 Chƣơng 1: Cấu trúc và hoạt động của máy tính
 Chƣơng 2: Vi điều khiển MCS-51
 Chƣơng 3: Lập trình bằng hợp ngữ MC-S51
 Chƣơng 4: Vào ra số
 Chƣơng 5: Ghép nối cơ bản

Chương 2: Vi điều khiển MCS-51 2


Các tài liệu tham khảo
 MCS-51 Microcontroller Family Users Manual – Intel 1994
 Cấu trúc lập trình họ Vi điều khiển 8051, NXB KH&KT
2004, Nguyễn Tăng Cƣờng
 Programming and Interfacing the 8051 Microcontroller, S.
Yeralan, Addison-Wesley 1993

Chương 2: Vi điều khiển MCS-51 3


Tóm tắt nội dung chƣơng 2
1. Vi điều khiển là gì?
2. Kiến trúc họ vi điều khiển MCS-51
 Các đặc tính chung
 Sơ đồ khối
 Sơ đồ chân
 Tổ chức bộ nhớ
 Các thanh ghi chức năng
đặc biệt
3. Ghép nối với bộ nhớ ngoài
4. Chế độ truy nhập địa chỉ
5. Tập lệnh
6. Cấu trúc ngắt của MCS-51

Chương 2: Vi điều khiển MCS-51 4


1. Vi điều khiển ?

 Cùng với việc phát triển các VXL cho hệ máy tính
(Microprocessor) các hãng cũng chế tạo các vi xử lý chuyên
dụng  vi điều khiển (VĐK)
 VĐK (Microcontroller) là một thiết bị tích hợp một số các
phần tử của một hệ vi xử lý lên trên cùng một chip
 Vi điều khiển là IC có các thành phần cơ bản sau
 Lõi CPU
 Bộ nhớ (cả ROM và RAM)
 Các cổng I/O
 VĐK cũng có thể có
 Timer : phục vụ cho các hoạt động có tính chu kỳ
 Truyền tin nối tiếp : dùng để kết nối với các thiết bị khác
 ADC : cho phép xử lý các tín hiệu tương tự

Chương 2: Vi điều khiển MCS-51 5


1.1 Vi điều khiển là gì?
 VĐK là IC có tích hợp các thành phần cơ bản:
 CPU
 Bộ nhớ (cả ROM và RAM)
 Các cổng I/O
 Ngoài ra VĐK cũng có thể tích hợp thêm:
 Timer
 Truyền tin nối tiếp (Serial COM Port)
 ADC
 …
CPU RAM ROM
Một IC
Serial vi điều khiển
I/O Timer COM
Port Port

Chương 2: Vi điều khiển MCS-51 6


1.2 Tại sao chúng ta cần phải học VĐK?
 Hầu hết các thiết bị điện tử hiện nay đều sử dụng các
chip vi điều khiển
 Ứng dụng trong nhiều lĩnh vực khác nhau:
 Thiết bị dùng trong công nghiệp: bộ điều khiển áp suất/nhiệt độ,
điều khiển động cơ…
 Thiết bị điên tử mang theo người: Điện thoại di động, máy ghi
âm bỏ túi
 Thiết bị dùng cho máy tính xách tay: bàn phím, chuột, modem,
bộ sạc pin
 Thiết bị dùng trong nhà: mở cửa, cảnh báo cửa, điều hòa nhiệt
độ, điều khiển tivi, lò vi sóng
 Tivi, CD players, radio, Video game, ô tô
 Các hệ thống bảo vệ, báo cháy…Máy in

Chương 2: Vi điều khiển MCS-51 7


1.2 Tại sao chúng ta cần phải học VĐK?
Bộ điều khiển động cơ 3 phase sử dụng
Cortex-M3 Stellaris LM3S818 của TI

Xe tự vận hành

Chương 2: Vi điều khiển MCS-51 8


Bộ điều khiển nhiệt độ của Partlow
1.2 Tại sao chúng ta cần phải học VĐK?

Enabletalk Glove: sản phẩm đạt giải nhất ý tưởng sáng tạo Microsoft năm
2012. Găng tay cho phép chuyển đổi ngôn ngữ tay thành tín hiệu tiếng nói

Chương 2: Vi điều khiển MCS-51 9


1.2 Tại sao chúng ta cần phải học VĐK?

Thẻ DSRC trong hệ thống thu


phí cầu đường tự động

Chương 2: Vi điều khiển MCS-51 10


1.2 Tại sao chúng ta cần phải học VĐK?
 Ngƣời thiết kế cần:
 Hiểu kiến trúc của VĐK
 Chọn lựa sử dụng loại VĐK phù hợp:
 Giảm giá thành sản xuất
 Tăng độ tin cậy của sản phẩm

Chương 2: Vi điều khiển MCS-51 11


1.3 Lịch sử phát triển của VĐK
 Năm 1971, VĐK 4-bit đầu tiên (TMS 1000) được phát minh ra
bởi 2 kỹ sư của Texas Instrument (Gary Boone và Michael
Cochran). VĐK TMS 1000 tích hợp các khối CPU, ROM,
RAM và được thương mại hóa vào năm 1974.
 Năm 1976, dựa trên nền vi xử lý 6800, Motorola đã cho ra
đời MC6801 có tích hợp CPU, ROM, RAM và các cổng I/O.
 Năm 1976, Intel thương mại hóa thành công VĐK 8048 8-bit
có tích hợp bộ nhớ 1K bytes EPROM, 64 bytes RAM, 1 bộ
timer 8-bit, 27 chân I/O.
 VĐK 8-bit 8051 thuộc họ MCS-51 được Intel công bố năm
1980 tích hợp 4K bytes ROM, 128 bytes RAM, 1 cổng nối
tiếp, 2 bộ timer 16-bit, 32 chân I/O.

Chương 2: Vi điều khiển MCS-51 12


1.3 Lịch sử phát triển của VĐK
 Họ MCS-51 trở nên phổ biến rộng rãi sau khi Intel cho phép
các nhà sản xuất khác sản xuất các dòng sản phẩm tương
thích lõi 8051, bao gồm: Atmel, Philips/Signetics, Infineon,
Dallas Semi/Maxim, Siemens...
 Intel giới thiệu VĐK 16-bit 8096 vào năm 1982. Tiếp theo đó
là họ VĐK 16-bit 80c196.
 Microchip công bố VĐK 8-bit PIC16C64 năm 1985.
 Atmel công bố VĐK Flash 8-bit dựa trên lõi 8051 năm 1993.
Dòng VĐK AT89 tiêu thụ công suất thấp, tốc độ nhanh.
 VĐK 32-bit MPC 505 với các tập lệnh rút gọn RISC (reduced
instruction set computer) được phát triển bởi IBM và
Motorola.
 Gần đây nhất, ARM Cortex M3, 16/32-bit với RISC được
ARM thiết kế.
Chương 2: Vi điều khiển MCS-51 13
Một số dòng VĐK của Microchip

Chương 2: Vi điều khiển MCS-51 14


Một số VĐK 8-bit của Atmel

Dòng Tiny

Chương 2: Vi điều khiển MCS-51 15


VĐK tƣơng thích lõi 8051 của Infineon
 Năm 2007, họ VĐK XC866 một biến thể mới của C868 được
Infineon sản xuất với công suất tiêu thụ nhỏ, tốc độ nhanh
 2 xung nhịp cho một chu kỳ lệnh ( VĐK 8051: 12 xung nhịp
cho một chu kỳ lệnh)

C868 XC866

Chương 2: Vi điều khiển MCS-51 16


2. Kiến trúc họ vi điều khiển MCS-51TM

2.1 Các đặc tính chung

Đặc trƣng (feature) 8031 8051 8052


ROM (bytes) NO 4k 8k
RAM (bytes) 128 128 256
Timers 2 2 3
I/O Pins 32 32 32
Serial port 1 1 1
Interrupt sources 6 6 8

Chương 2: Vi điều khiển MCS-51 17


2.2 Sơ đồ khối 8051
External interrupts
4Kbytes Timer/Counter

Interrupt 128
ROM Timer 1 Counter
Control Bytes
Timer 0 Inputs
RAM

CPU

Bus Serial
4 I/O Ports
OSC Control Port

P0 P2 P1 P3 TxD RxD
Address/Data

Chương 2: Vi điều khiển MCS-51 18


2.3 Sơ đồ chân

 8051 có 40 chân, trong đó


32 chân là các cổng vào/ra
(I/O).
 24 chân có 2 chức năng,
chúng có thể vừa là cổng
I/O vừa là các đường tín
hiệu trong bus dữ liệu
hoặc bus địa chỉ của các
khối truyền tin.

 PSEN: Program Store


Enable

 EA = Vcc (Rom onchip)


EA= Vss (External ROM)

Chương 2: Vi điều khiển MCS-51 19


2.4 Tổ chức bộ nhớ của 8051 (1/3)
 Kiến trúc bộ nhớ của 8051 là kiến trúc Harvard
 Không gian bộ nhớ chương trình và bộ nhớ dữ liệu là tách rời

ROM RAM

Data memory (Read/Write)


Program memory (Read Only)

Chương 2: Vi điều khiển MCS-51 20


2.4 Tổ chức bộ nhớ của 8051 (2/3)
 Có khả năng quản lý bộ nhớ chương trình và dữ liệu ngoài qua:
 Bus dữ liệu 8 bit AD0-AD7 (~ P0.0 và P0.7)
 Bus địa chỉ tới 16 bit
 AD0 – AD7
 A8 – A15 (~ P2.0 – P2.7)
 Bus điều khiển PSEN, ALE, RD (P3.7), WR (P3.6)
 Chỉ sử dụng một trong hai bộ nhớ code lệnh (chân EA)
 Có thể sử dụng đồng thời bộ nhớ dữ liệu trong (internal RAM) và
bộ nhớ dữ liệu ngoài

Chương 2: Vi điều khiển MCS-51 21


2.4 Tổ chức bộ nhớ của 8051 (3/3)

Phân vùng bộ nhớ dữ liệu bên trong của 8051*


7FH
Vùng RAM cho
mục đích dùng * RAM trong (internal RAM)
chung 8051 có 128 byte (00-7F)
30H
8052 có 256 byte (00-FF)
2FH 7F 78 Vùng nhớ đánh địa
chỉ theo bit (128 bits)
20H 07 00
1FH
Băng thanh ghi 3
18H
17H
Băng thanh ghi 2
10H
0FH Băng thanh ghi 1 /
08H Ngăn xếp (Stack)
07H
00H Băng thanh ghi 0

Chương 2: Vi điều khiển MCS-51 22


2.4.1 Truy cập bộ nhớ dữ liệu trong
 Vùng RAM cho mục đích dùng chung: 30H-7FH
 80bytes RAM này có thể đƣợc truy cập theo 2 chế độ:
 Truy cập trực tiếp (direct addressing mode)
mov A, 36H ;đọc nội dung của ô nhớ ở địa chỉ 36H vào thanh
;chứa A

 Truy cập gián tiếp (indirect addressing mode) thông qua thanh
ghi R0 và R1
mov R1,#36H ;chuyển giá trị 36H vào thanh ghi R1
mov A, @R1 ;chuyển gián tiếp: R1 chứa địa chỉ của ô nhớ
;RAM trong (36H), nội dung của ô nhớ
;này được chuyển vào thanh chứa A

Chương 2: Vi điều khiển MCS-51 23


2.4.2 Vùng nhớ định địa chỉ theo bit
 Từ 20H đến 2FH là 16 bytes (128 bits)
có thể định địa chỉ theo bit
 128 bit trong vùng nhớ RAM đƣợc Vùng RAM cho
đánh địa chỉ từ 00-7F mục đích dùng
chung
 Các bit này có thể tác động thông qua
các lệnh bit
setb 07h Vùng nhớ đánh
địa chỉ theo bit
Thiết lập bit 07 (~ với bit MSB của byte 20H)
 Giúp tiết kiệm bộ nhớ dữ liệu đối với Băng thanh ghi 3
các biến logic (chỉ có giá trị 0 hoặc 1)
Băng thanh ghi 2

Băng thanh ghi 1

Băng thanh ghi 0

Chương 2: Vi điều khiển MCS-51 24


2.4.3 Các bank thanh ghi
 8051 có 4 bank thanh ghi
 Mỗi bank có 8 thanh ghi 8 bits được ký
hiệu R0 đến R7
Vùng RAM cho
 Nằm tại địa chỉ từ 00H– 1FH (8 x 4 = mục đích dùng
chung
32bytes)
 Việc lựa chọn bank thanh ghi đƣợc
thực hiện thông qua thanh ghi PSW Vùng nhớ đánh
địa chỉ theo bit
 Các lệnh sử dụng bank thanh ghi
 Code lệnh ngắn hơn Băng thanh ghi 3

so với các lệnh tƣơng đƣơng sử Băng thanh ghi 2


dụng chế độ truy cập trực tiếp hoặc
Băng thanh ghi 1
gián tiếp
Băng thanh ghi 0

Chương 2: Vi điều khiển MCS-51 25


2.5 Các thanh ghi có chức năng đặc biệt (1/2)
 8051 có một tập (21) các thanh ghi có chức năng đặc biệt
(SFR) đƣợc đánh địa chỉ từ 80H đến FFH:
 Phục vụ cho các hoạt động tính toán của ALU
 Điều khiển các module timer, truyền tin, port
 Một số thanh ghi truy cập đến từng bit

* RAM trong (internal RAM)


8051 có 128 byte (00-7F)
8052 có 256 byte (00-FF)

Vùng SFR: chỉ có thể được truy cập trực tiếp (direct addressing)
Chương 2: Vi điều khiển MCS-51 26
2.5 Các thanh ghi có chức năng đặc biệt (2/2)

Truy
Chương cậpđiều
2: Vi đếnkhiển
từng MCS-51
bit 27
Thanh ghi từ trạng thái chƣơng trình PSW

CY AC F0 RS1 RS0 OV -- P

Cờ nhớ PSW.7 CY
Cờ nhớ phụ PSW.6 AC
Cho phép người dùng định nghĩa chức năng PSW.5 --
Chọn băng thanh ghi, bit 1 PSW.4 RS1
Chọn băng thanh ghi, bit 0 PSW.3 RS0
Cờ tràn PSW.2 OV
Dự trữ PSW.1 --
Cờ kiểm tra chẵn lẻ PSW.0 P

PSW: Là thanh ghi ở địa chỉ D0H, là thanh ghi truy cập đến từng bit

RS1 RS0 Register Bank Address

0 0 0 00H-07H

0 1 1 08H-0FH

1 0 2 10H-17H

1 1 3 18H-1FH

Chương 2: Vi điều khiển MCS-51 28


Ví dụ

Example 1: Example 2:

MOV A,#38H MOV A,#88H


ADD A,#2FH ADD A,#93H

38 00111000 88 10001000
+2F +00101111 +93 +10010011
---- -------------- ---- --------------
67 01100111 1 1B 1 00011011
CY=0 AC=1 P=1 CY=1 AC=0 P=0

Có một số nhớ từ bit 3 chuyển sang bit 4


Chương 2: Vi điều khiển MCS-51 29
Thanh ghi điều khiển nguồn PCON

Ở địa chỉ 87H

Chương 2: Vi điều khiển MCS-51 30


Chế độ nghỉ (Idl)
 Trong chế độ Idle (chế độ nghỉ)
 Clock đến CPU là off, nhưng vẫn cung cấp cho Interrupt, Timer,
Serial function port
 Nội dung các thanh ghi SFRs và internal RAM được giữ nguyên.
 Các cổng giữ nguyên trạng thái
 ALE và PSEN giữ ở mức cao
 Để thoát ra khỏi chế độ Idle có 2 cách
 Sử dụng các ngắt (INTx, Timer, UART), hoặc
 Sử dụng tín hiệu Reset (nội dung các thanh ghi và RAM không
thay đổi)

Chương 2: Vi điều khiển MCS-51 31


Chế độ giảm nguồn
 Trong chế độ giảm nguồn (Power down)
 On-chip oscillator off
 Các thanh ghi đặc biệt SFRs và internal RAM giữ nguyên giá trị,
các cổng cũng giữ nguyên giá trị
 ALE và PSEN giữ ở mức thấp
 Để thoát ra khỏi chế độ giảm nguồn chỉ có 1 cách
 Sử dụng tín hiệu RESET
 Nội dung của các thanh ghi SFRs bị thay đổi giống như trong
RESET thông thường
 Nội dung của internal RAM không bị ảnh hưởng

Chương 2: Vi điều khiển MCS-51 32


Thanh ghi Stack Pointer
 Là thanh ghi 8-bit ở địa chỉ 81H
 Đƣợc sử dụng để truy cập bộ nhớ ngăn xếp
 Các lệnh sử dụng SP:
 CALL
 RET
 RETI
 PUSH, POP
 Sau khi Start-up, SP đƣợc khởi tạo giá trị 07H

Chương 2: Vi điều khiển MCS-51 33


Thanh ghi Data Pointer
 Thanh ghi Data Pointer, DPTR là thanh ghi 16-bit, đƣợc
sử dụng để truy cập tới địa chỉ bộ nhớ chƣơng trình
hoặc bộ nhớ dữ liệu ngoài.
 DPTR bao gồm hai thanh ghi có chức năng đăc biệt:
 DPL (82H) chứa byte thấp của DPTR
 DPH (83H) chứa byte cao của DPTR

Lưu ý rằng lệnh MOVX* (Move X) được sử dụng để truy cập bộ nhớ ngoài

*Xem thêm ở mục 5-chương 2, tập lệnh của MCS-51


Chương 2: Vi điều khiển MCS-51 34
Thanh ghi cổng
 8051 có 4 cổng P0, P1, P2, P3 tƣơng ứng có 4 thanh ghi
điều khiển ở các địa chỉ 80H, 90H, A0H và B0H
 Thanh ghi cổng có thể truy cập đến từng bit

*Xem thêm ở mục 5-chương 2, tập lệnh của MCS-51


Chương 2: Vi điều khiển MCS-51 35
Các thanh ghi Timer
 Timer 0 : có 2 thanh ghi TH0 (8CH) và TL0 (8AH)
 Timer 1: có 2 thanh ghi TH1 (8DH) và TL1 (8BH)
 Chế độ hoạt động của các bộ timer đƣợc điều khiển
thông qua 2 thanh ghi:
 Thanh ghi chế độ: TMOD (Timer Mode) ở địa chỉ 89H
 Thanh ghi điều khiển: TCON (Timer Control) ở địa chỉ 88H.
TCON là thanh ghi truy cập đến từng bit

Chương 2: Vi điều khiển MCS-51 36


Các thanh ghi cổng nối tiếp
 8051 có 1 bộ truyền tin nối tiếp UART
 Thông tin nhận về đƣợc cất trong thanh ghi SBUF (99H)
 Thông tin truyền đi đƣợc cất trong thanh ghi SBUF
Chú ý: mặc dù tên giống nhau, nhưng thực chất đây là 2 thanh ghi
khác nhau. Do đó việc truyền và nhận có thể hoạt động độc lập
không ảnh hưởng đến nhau
 Chế độ hoạt động của truyền tin nối tiếp đƣợc xác định
thông qua thanh ghi SCON (98H). SCON là thanh ghi truy
cập đến từng bit

Chương 2: Vi điều khiển MCS-51 37


Các thanh ghi ngắt
 8051 có 5 nguồn ngắt và 2 mức ƣu tiên*
 Việc cho phép hoặc cấm các nguồn ngắt đƣợc xác định
thông thanh ghi IE (A8H)
 Mức ƣu tiên của nguồn ngắt đƣợc xác định thông qua
thanh ghi IP (B8H)
 Cả IE và IP là các thanh ghi truy cập đến từng bit

*Xem thêm ở mục 6 - chương 2, cấu trúc ngắt của MCS-51


Chương 2: Vi điều khiển MCS-51 38
3. Ghép nối với bộ nhớ ngoài
 8051 có thể quản lý bộ nhớ ngoài
 64 Kbytes bộ nhớ chương trình
 64 Kbytes bộ nhớ dữ liệu
 Các tín hiệu điều khiển
 PSEN: đọc bộ nhớ chương trình
 RD, WR: đọc, ghi bộ nhớ dữ liệu
 Data bus AD0-AD7
 Address bus AD0-AD7 (thấp) A8-A15 (cao)
 Sử dụng tín hiệu ALE để de-multiplex data/address trên
AD0-AD7
 ALE = 0  cung cấp data
 ALE = 1  cung cấp địa chỉ

Chương 2: Vi điều khiển MCS-51 39


Ghép nối với bộ nhớ chƣơng trình ngoài

PSEN OE
ALE 74LS373 OC
G
P0.0 A0
D
P0.7 A7

D0
D7
EA

P2.0 A8
P2.7 A15

8051 PSEN: Program Store Enable ROM


Chương 2: Vi điều khiển MCS-51 40
Ghép nối với bộ nhớ chƣơng trình ngoài
2. 74373 latches
1. Send address the address and
PSEN to ROM send to ROM OE
ALE 74LS373 OC
G
P0.0 A0
D
P0.7 A7
Address

D0
D7
EA

P2.0 A8
P2.7 A12

8051 MCS-51 - Architecture ROM


Chương 2: Vi điều khiển MCS-51 41
Ghép nối với bộ nhớ chƣơng trình ngoài
2. 74373 latches
the address and
PSEN send to ROM OE
ALE 74LS373 OC
G
P0.0 A0
D
P0.7 Address A7

D0
D7
EA 3. ROM send the
instruction back
P2.0 A8
P2.7 A12

8051 MCS-51 - Architecture ROM


Chương 2: Vi điều khiển MCS-51 42
Chu kỳ máy
 Một chu kỳ máy của 8051 chiếm 12 chu kỳ xung nhịp của
tín hiệu clock
 Một lệnh có thể thực hiện mất một hoặc nhiều chu kỳ
máy
 Ví dụ:
Lệnh: chu kỳ máy
cpl p1.0 1

Thạch anh tần số fosc=12MHz


 1 chu kỳ máy hết To = 12/ fosc= 1µs

Chương 2: Vi điều khiển MCS-51 43


Hoạt động RESET

Internal RAM không


chịu ảnh hưởng của
hoạt động RESET

Chương 2: Vi điều khiển MCS-51 44


4. Cấu trúc cổng I/O

Read latch Vcc


TB2
Load(L1)

Internal CPU D Q Chân


bus P1.X P1.X

Write to latch Clk Q M1

TB1
Read pin * Tải L1 chỉ có ở các cổng P1, P2, P3

Chương 2: Vi điều khiển MCS-51


P1 là cổng ra
Viết “1” ra cổng P1.X

Read latch Vcc


TB2
Load(L1) 2. Chân ra
1. Viết “1” nối với Vcc
D Q
1 Chân
Internal CPU
bus P1.X P1.X
0 Output: “1”
Write to latch Clk Q M1

TB1
Read pin

Chương 2: Vi điều khiển MCS-51


P1 là cổng ra
Viết “0” ra cổng P1.X

Read latch Vcc


TB2
Load(L1) 2. Chân ra
nối với GND
1. Viết “0”
D Q
0 Chân
Internal CPU
bus P1.X P1.X
Output: “0”
Clk Q 1 M1
Write to latch

TB1
Read pin

Chương 2: Vi điều khiển MCS-51


P1 là cổng vào
Đọc mức “low’ trên cổng P1

Read latch Vcc


TB2 2. MOV A,P1
Load(L1)
external pin=Low
0
Internal CPU 0 D Q P1.X
bus pin
P1.X
Write to latch Clk Q M1

TB1
Read pin
3. Read pin=0

Chương 2: Vi điều khiển MCS-51


P1 là cổng vào
Đọc mức “high” trên cổng P1

Read latch Vcc


TB2 2. MOV A,P1
Load(L1)
external pin=High
1 D Q 1 Chân
Internal CPU
bus P1.X P1.X

Write to latch Clk Q M1

TB1
Read pin
3. Read pin=1

Chương 2: Vi điều khiển MCS-51


Cổng P0

Read latch
TB2

Internal CPU D Q P0.X


bus P1.X pin

Write to latch Clk Q M1

TB1
Read pin

Khi hoạt động như là một cổng I/O, P0 không có internal L1  cần nối
một điện trở pull-up bên ngoài
Khi hoạt động như là bus AD thì P0 lại có internal pull-up
Chương 2: Vi điều khiển MCS-51 50
Ví dụ 2.1: P1 là cổng ra
 Viết chƣơng trình gửi ra cổng P1 giá trị 55H và AAH một
cách tuần tự

MOV A,#55H ; nạp giá trị 55H vào thanh chứa A


BACK: MOV P1,A ; nạp nội dung thanh chứa A vào thanh ghi cổng P1
ACALL DELAY ;
CPL A
SJMP BACK

DELAY: MOV R2,#250 ; tạo thời gian trễ


STOP: MOV R3,#250
STOP2: DJNZ R3,STOP2
DJNZ R2,STOP
RET

Chương 2: Vi điều khiển MCS-51 51


Ví dụ 2.2: P1 là cổng vào
 Viết chƣơng trình cho cổng P1 là cổng vào, dữ liệu vào
cổng P1 sau đó đƣợc lƣu trữ trong R5 và R7:

MOV A,#0FFH ;A=FF hex


MOV P1,A ;cấu hình cho P1 là cổng vào
MOV A,P1 đọc dữ liệu từ cổng P1
MOV R7,A ;lưu trữ trong thanh ghi R7
ACALL DELAY ;chờ
MOV A,P1 ;đọc tiếp dữ liệu từ P1
MOV R5,A ;lưu trữ trong thanh ghi R5

Chương 2: Vi điều khiển MCS-51 52


Bài tập 2.1
A. Viết chƣơng trình tạo 1 xung vuông gửi ra trên chân
P1.0
B. Trên chân P0.0, viết chƣơng trình tạo xung vuông gửi
đi. Xung vuông này có chu kỳ bằng 50% xung đã tạo
trên chân P1.0

Chương 2: Vi điều khiển MCS-51 53

You might also like