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

Bài giảng Kỹ thuật vi xử lý: Chương 2 - Nguyễn Văn Thọ

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (774.45 KB, 30 trang )

DuyTan University

Kỹ thuật Vi xử lý

ĐẠI HỌC DUY TÂN
KHOA CÔNG NGHỆ THÔNG TIN

CHƯƠNG 2

VI ĐIỀU KHIỂN MCS51

Nguyễn Văn Thọ
Khoa Điện tử viễn thông
Đại học Duy Tân – 2010

Nguyen Van Tho – Duy Tan University

GIỚI THIỆU
Các vi bộ điều khiển và các bộ vi xử lý có ba điểm khác
nhau chính sau:
9 Kiến trúc phần cứng
9 Phạm vi ứng dụng
9 Đặc điểm tập lệnh
Các họ vi điều khiển phổ biến
9 Intel 8051
9 PIC16C5x
9 Motorola MC68xxx
9 AVR
9 PSoC
5-2



DuyTan University

Kỹ thuật Vi xử lý

Nguyen Van Tho – Duy Tan University

VI ĐIỀU KHIỂN 8051
Hiện nay có hơn 40 cơng ty sản xuất các loại vi điều khiển
khác nhau của họ 8051.
Một số cơng ty có trên 40 version 8051.
Các CORE 8051 có thể được tổ hợp trong các FPGA hay
ASIC.
Trên 100 triệu vi điều khiển 8051 được bán ra mỗi năm.
Họ 8051 gặt hái được rất nhiều thành công và nó cũng
trực tiếp ảnh hưởng đến cấu trúc của các họ vi điều khiển
hiện nay.

5-3

Nguyen Van Tho – Duy Tan University

VI ĐIỀU KHIỂN 8051
8051 thuộc họ vi điều khiển MCS-51.
MCS-51 được phát triển bởi Intel và các nhà sản xuất khác
(như Siemens, Philips) là các nhà cung cấp đứng thứ hai
của họ này.
Tóm tắt một số đặc điểm chính của họ 8051:









4K bytes ROM trong
128 bytes RAM trong
4 cổng I/O 8-bit
2 bộ định thời 16 bit
Giao diện nối tiếp
Quản lý được 64K bộ nhớ code bên ngoài
Quản lý được 64K bộ nhớ dữ liệu bên ngoài
5-4


DuyTan University

Kỹ thuật Vi xử lý

Nguyen Van Tho – Duy Tan University

SƠ ĐỒ KHỐI 8051
External interrupts
Interrupt
Control

On-chip
ROM for
program

code

Timer/Counter

On-chip
RAM

Timer 1
Timer 0

Counter
Inputs

CPU

OSC

Bus
Control

Serial
Port

4 I/O Ports

TxD RxD

P0 P1 P2 P3

Address/Data


5-5

Nguyen Van Tho – Duy Tan University

CÁC CHÂN CỦA 8051
P1.0
P1.1
P1.2
P1.3
P1.4
P1.5
P1.6
P1.7
RST
(RXD)P3.0
(TXD)P3.1
(INT0)P3.2
(INT1)P3.3
(T0)P3.4
(T1)P3.5
(WR)P3.6
(RD)P3.7
XTAL2
XTAL1
GND

1
2
3

4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20

8051

40
39
38
37
36
35
34
33
32
31

30
29
28
27
26
25
24
23
22
21

Vcc
P0.0(AD0)
P0.1(AD1)
P0.2(AD2)
P0.3(AD3)
P0.4(AD4)
P0.5(AD5)
P0.6(AD6)
P0.7(AD7)
EA/VPP
ALE/PROG
PSEN
P2.7(A15)
P2.6(A14)
P2.5(A13)
P2.4(A12)
P2.3(A11)
P2.2(A10)
P2.1(A9)

P2.0(A8)

5-6


DuyTan University

Kỹ thuật Vi xử lý

Nguyen Van Tho – Duy Tan University

CÁC CHÂN CỦA 8051
ƒ Vcc (chân 40):
9Cung cấp nguồn cho chip
9+5V
ƒ GND (chân 20): đất
ƒ XTAL1 & XTAL2 (chân 19, 18)
92 chân cung cấp xung clock ngoài
9Cách 1: dao động dùng thạch anh
9Cách 2: dao động từ nguồn xung clock TTL bên ngoài
9Quan hệ giữa chu kỳ máy và XTAL
5-7

Nguyen Van Tho – Duy Tan University

CÁC CHÂN CỦA 8051
ƒ RST (chân 9): reset
9input & kích hoạt mức cao
9Để đảm bảo hoạt động reset xảy ra, xung kích khởi
phải kéo dài ít nhất là 2 chu kỳ máy

9Giá trị các thanh ghi chịu tác động bởi hoạt động reset,
xem bảng trong phần 5 bài giảng
9Mạch reset có chống rung

5-8


DuyTan University

Kỹ thuật Vi xử lý

Nguyen Van Tho – Duy Tan University

CÁC CHÂN CỦA 8051
¾ /EA (chân 31): External Access
9/EA nối mass chỉ định rằng code lưu trên bộ nhớ ngoài
9/PSEN & ALE dùng cho ROM ngoài
9Với 8051, 8031, 8032 thì /EA nối Vcc
9“/”: chỉ định tác động mức thấp
¾ /PSEN (chân 29): Program Store Enable
9Output, cho phép truy xuất bộ nhớ chương trình ngồi
9Nối tới chân /OE của ROM/EPROM
9Khi thực thi chương trình ở ROM nội, /PSEN được giữ ở
mức 1
5-9

Nguyen Van Tho – Duy Tan University

CÁC CHÂN CỦA 8051
¾ ALE (pin 30):Address Latch Enable

¾Là chân output cho phép chốt địa chỉ để giải đa hợp (demultiplexing) bus dữ liệu và bus địa chỉ
¾ALE xuất tín hiệu để chốt địa chỉ (byte thấp địa chỉ 16-bit)
vào 1 thanh ghi ngoài trong suốt nửa đầu của chu kỳ bộ nhớ
(memory cycle). Trong nửa chu kỳ bộ nhớ còn lại, P0 sẽ
xuất/nhập dữ liệu
¾ALE có f=1/6fclock
¾Có 1 ngoại lệ: trong thời gian thực thi lệnh MOVX, một
xung ALE bị bỏ qua
¾ Cổng I/O: P0, P1, P2, & P3. Mỗi cổng: 8 chân.
5-10


DuyTan University

Kỹ thuật Vi xử lý

Nguyen Van Tho – Duy Tan University

CÁC CỔNG I/O
¾ 4 cổng I/O
Port 0 (chân 32-39)
Port 1 (chân 1-8)
Port 2 (chân 21-28)
Port 3 (chân 10-17)

:P0 (P0.0~P0.7)
:P1 (P1.0~P1.7)
:P2 (P2.0~P2.7)
:P3 (P3.0~P3.7)


Mỗi cổng có 8 chân
Đánh tên P0.X (X=0,1,...,7), P1.X, P2.X, P3.X
Ex:P0.0 là bit 0 (LSB) của P0
Ex:P0.7 là bit 7 (MSB) của P0
8 bits này cấu thành 1 byte
Mỗi cổng có thể được dùng như input hay output
5-11

Nguyen Van Tho – Duy Tan University

TỔ CHỨC BỘ NHỚ
Bộ nhớ chương trình

Bộ nhớ dữ liệu

FFFFh

FFFFh
External
(ngồi)

External

Internal
(trong)

External
(ngồi)
EA=0


0000h

PSEN

EA=1

FFh

Internal

00h

Kiến trúc Harvard

0000h

RD

5-12
WR


DuyTan University

Kỹ thuật Vi xử lý

Nguyen Van Tho – Duy Tan University

KHÔNG GIAN BỘ NHỚ RAM NỘI
Byte address


7F 7E 7D 7C 7B 7A 79 78


7FH

2F
2E

RAM đa mục
30H
2FH

đích
RAM định địa
chỉ bit

20H
1FH
18H
17H
10H
0FH
08H
07H
00H

Bank 3



Bank 2

1F 1E 1D 1C 1B 1A 19 18

Bank 1 (Stack)

17 16 15 14 13 12 11 10

Default Register
Bank for R0-R7

R7
R6

0F 0E 0D 0C 0B 0A 09 08
07 06 05 04 03 02 01 00

20

R5
R4

Bit address

R3
R2
R1
R0

5-13


Nguyen Van Tho – Duy Tan University

GHÉP NỐI VÀ TRUY XUẤT ROM NGOÀI

5-14


DuyTan University

Kỹ thuật Vi xử lý

Nguyen Van Tho – Duy Tan University

GHÉP NỐI VÀ TRUY XUẤT RAM NGOÀI

5-15

Nguyen Van Tho – Duy Tan University

CÁC CHẾ ĐỘ ĐỊA CHỈ
Các kiểu định địa chỉ cho phép xác định nguồn và đích của dữ liệu theo
nhiều cách khác nhau tùy tình huống lập trình
¾

Định địa chỉ tức thời :
MOV A, #65H ; đưa giỏ tr 65h vo thanh ghi A
ặ A=65h




nh a ch thanh ghi
MOV R1, A
; đưa dữ liệu trong thanh ghi A vo thanh ghi R1
ặ R1=A



nh a ch trc tip
MOV R0, 40H ; lấy dữ liệu tại địa chỉ 40h đưa vào thanh ghi R0

¾

Định địa chỉ gián tiếp
MOV A, @R1 ; lấy dữ liệu tại địa chỉ được chứa trong thanh
ghi R1 đưa vào thanh ghi A
5-16


DuyTan University

Kỹ thuật Vi xử lý

Nguyen Van Tho – Duy Tan University

CÁC THANH GHI

5-17

Nguyen Van Tho – Duy Tan University


THANH GHI PSW
Thanh ghi PSW (bit addressable)

C

AC

RS1

RS0

OV

--

P

Cờ nhớ
Cờ nhớ phụ
Available to user for general purpose
Bit chọn dãy thanh ghi 1
Bit chọn dãy thanh ghi 0
Cờ tràn
Dự trữ - User define bit
Cờ chẵn lẻ

PSW.7
PSW.6
PSW.5

PSW.4
PSW.3
PSW.2
PSW.1
PSW.0

RS0
0
1
0
1

Byte Address of R0-R7
00H-07H
08H-0FH
10H-17H
18H-1FH

RS1
0
0
1
1
D7

F0

D6

D5


Register Bank
0
1
2
3
D4

D3

D2

D1

D0

C
AC
-RS1
RS0
OV
-P

Địa chỉ bit

5-18


DuyTan University


Kỹ thuật Vi xử lý

Nguyen Van Tho – Duy Tan University

THANH GHI B
B được dùng với thanh chứa A trong các phép toán
nhân, chia
MUL A,B ; nhân 2 số 8-bit không dấu chứa trong A
& B, KQ 16-bit chứa vào cặp thanh ghi
B:A (B chứa byte cao)
DIV AB
; chia A bởi B, thương số cất trong A, dư
cất trong B
B còn được xử lý như thanh ghi nháp
B được định địa chỉ bit
F7

F6

F5

F4

F3

F2

F1

F0


5-19

Nguyen Van Tho – Duy Tan University

CON TRỎ NGĂN XẾP SP
¾ SP chứa địa chỉ của dữ liệu hiện đang ở đỉnh của stack
¾ Muốn stack bắt đầu ở 60H:
• MOV
SP,#5FH
• Thì vùng stack sẽ là 32 byte trên 8051 vì địa chỉ cao
nhất của RAM nội là 7FH
• 5FH được dùng vì SP tăng lên 60H trước khi thao tác
cất vào stack đầu tiên được thực thi
¾ Nếu khơng khởi động SP, nội dung mặc định là 07H
Ỉ thao tác cất vào stack đầu tiên sẽ lưu dữ liệu vào vị trí
nhớ có địa chỉ 08H
5-20


DuyTan University

Kỹ thuật Vi xử lý

Nguyen Van Tho – Duy Tan University

CON TRỎ DỮ LIỆU DPTR
DPTR được dùng để truy xuất bộ nhớ chương trình
ngồi hoặc bộ nhớ dữ liệu ngồi
Phần cao và phần thấp của DPTR cũng có thể được

dùng như 2 thanh ghi 8bit (DPH và DPL)
VD:
MOV
A,#55H
MOV
DPTR,#1000H
MOVX
@DPTR,A
83H
DPTR (High)
82H
DPTR (Low)

5-21

Nguyen Van Tho – Duy Tan University

THANH GHI CỔNG I/O
¾ 8051 có 4 thanh ghi cổng I/O : P0, P1, P2, P3
¾ Tất cả port đều được định địa chỉ bit
¾ Để truy cập đến các bit ta dùng cú pháp sau :
<Port name> . <bit>
Ví dụ để xóa bit 4 của cổng P0
CLR P0.4

5-22


DuyTan University


Kỹ thuật Vi xử lý

Nguyen Van Tho – Duy Tan University

CÁC THANH GHI KHÁC
¾ THANH GHI ĐỊNH THỜI
8051 có 2 bộ đếm/định thời 16-bit để định các khoảng thời gian hoặc
đếm các sự kiện
Hoạt động của bộ định thời được thiết lập bởi:
• TMOD (Timer Mode Register)
• TCON (Timer Control Register)
¾ THANH GHI PORT NỐI TIẾP
8051 có 1 port nối tiếp để truyền thông với các thiết bị nối tiếp
SBUF (Serial Data Buffer): lưu trữ dữ liệu truyền và nhận
SCON (Serial Port Control Register): chọn chế độ hoạt động
¾ THANH GHI NGẮT
IE (interrupt enable)
IP (interrupt priority

5-23

Nguyen Van Tho – Duy Tan University

TẬP LỆNH
¾Lệnh chuyển dữ liệu
MOV dest, source
; dest = source
Ví dụ : MOV A, #72H
;A=72H
MOV A, R4

;A=62H
MOV B, 7EH
MOV P1, A
;mov A to port 1
Chú ý :
¾
MOV A,#72 ≠ MOV A,72
¾

MOV DPTR, A

¾

MOV #30,A

¾ dest và source khơng được đồng thời là Rn
MOV R1,R2

5-24


DuyTan University

Kỹ thuật Vi xử lý

Nguyen Van Tho – Duy Tan University

TẬP LỆNH
¾Truy cập bộ nhớ ROM ngồi
MOVC A, @A + DPTR

MOVC A, @A + PC
¾ Truy cập bộ nhớ RAM ngồi
MOVX A, @Ri
MOVX A, @DPTR
MOVA @Ri, A
MOVX @DPTR, A
¾ Tráo đổi dữ liệu
XCH A, Rn

XCH A, mem

¾Thao tác ngăn xếp
PUSH mem

XCH A, @Ri

POP mem
5-25

Nguyen Van Tho – Duy Tan University

TẬP LỆNH
¾Nhóm lệnh số học
ADD A,Rn
ADDC A,Rn

ADD A,mem
ADDC A,mem

ADD A,@Ri

ADDC A,@Ri

ADD A,#data
ADDC A,#data

SUBB A,Rn

SUBB A,mem

SUBB A,@Ri

SUBB A,#data

INC A

INC Rn

INC mem

INC @Ri

DEC A

DEC Rn

DEC mem

DEC @Ri

MUL AB


; Lấy giá trị trong thanh ghi A nhân với giá trị trong thanh ghi B
; byte thấp của kết quả chứa trong A, byte cao chứa trong B

DIV AB

; Lấy A chia B
; kết quả thương Ỉ A ; số dư Ỉ B

INC DPTR

5-26


DuyTan University

Kỹ thuật Vi xử lý

Nguyen Van Tho – Duy Tan University

TẬP LỆNH
¾ Nhóm lệnh logic
ANL A,Rn

ANL A,mem

ANL mem,A

ANL mem,#data


ORL A,Rn

ORL A,mem

ORL mem,A

ORL mem,#data

XRL A,Rn

XRL A,mem

XRL mem,A

XRL mem,#data

ANL A,@Ri

ANL A,#data

ORL A,@Ri

ORL A,#data

XRL A,@Ri

XRL A,#data

CLR A
CPL A

RL A

RLC A

RR A

RRC A
5-27

Nguyen Van Tho – Duy Tan University

TẬP LỆNH
¾Nhóm lệnh xử lý bit
ƒ
SETB
ƒ
CLR
Vi dụ : SETB
SETB
SETB
CLRB
ƒ
ƒ

bit
bit
C
P0.0
ACC.2
P3.7


ANL C,bit
ORL C, bit

; bit=1
; bit=0
; CY=1
;bit 0 của port 0 =1
;bit 2 của Accumulator =1
;bit 7 của port 3 = 0
; AND cờ C với bit
; OR cờ C với bit

5-28


DuyTan University

Kỹ thuật Vi xử lý

Nguyen Van Tho – Duy Tan University

TẬP LỆNH
¾ Lệnh nhảy khơng điều kiện
ƒ SJMP rel
;
ƒ AJMP Addr11
;
ƒ LJMP Addr16
;

¾ Lệnh gọi chương trình con
ƒ ACALL addr11
;
ƒ LCALL adde16
;
¾ Lệnh trở về từ chương trình con
ƒ RET
¾Lệnh trở về từ ngắt
ƒRETI
5-29

Nguyen Van Tho – Duy Tan University

TẬP LỆNH
Lệnh nhảy có điều kiện
JZ rel

Jump if A=0

JNZ rel

Jump if A≠0

DJNZ byte, rel

Decrement & jump if A≠0

CJNE dest, source, rel

Jump if dest ≠ source


JC rel

Jump if CY=1

JNC rel

Jump if CY=0

JB bit, rel

Jump if bit=1

JNB bit, rel

Jump if bit=0

JBC bit, rel

Jump if bit=1 & clear bit

5-30


DuyTan University

Kỹ thuật Vi xử lý

Nguyen Van Tho – Duy Tan University


LẬP TRÌNH HỢP NGỮ CHO 8051

5-31

Nguyen Van Tho – Duy Tan University

KHN DẠNG CHƯƠNG TRÌNH
Dạng chương trình khơng có ngắt và không khai báo dữ liệu
ORG 00H

; Bắt đầu vùng nhớ chương trình

; các mã lệnh của chương trình
END

; kết thúc chương trình

Dạng chương trình khơng ngắt và có khai báo dữ liệu
ORG 00H
LJMP Main
ORG 20h

; khai báo các hằng số

ORG 30h

; khai báo các ô nhớ đệm (biến)

ORG 100h
Main


; Bắt đầu vùng nhớ chương trình

; các mã lệnh của chương trình
END

; kết thúc chương trình

5-32


DuyTan University

Kỹ thuật Vi xử lý

Nguyen Van Tho – Duy Tan University

KHN DẠNG CHƯƠNG TRÌNH
Dạng chương trình sử dụng ngắt
ORG 0H
LJMP MAIN
ORG 03H
JMP EXINTER0
ORG 0BH
JMP COUNTER0
ORG 13H
JMP EXINTER1
ORG 1BH
JMP COUNTER1


MAIN:
; nhảy tới Main
EXINTER0
; external interrupt 0 ; chương trình phục vụ ngắt 0
RETI
; timer 0 interrupt
EXINTER1
; chương trình phục vụ ngắt 1
; external interrupt 0 RETI
COUNTER0
;timer 1 interrupt
; chương trình phục vụ bộ đếm 0
RETI
COUNTER1
; chương trình phục vụ bộ đếm 1
RETI
END

5-33

Nguyen Van Tho – Duy Tan University

LẬP TRÌNH I/O
¾ Xuất dữ liệu ra cổng :
Xuất dữ liệu ra thanh ghi cổng tương ứng
Ví dụ : MOV P1,#54H ; xuất giá trị 54h ra cổng P1
¾Lấy dữ liệu từ cổng :
Đọc thanh ghi cổng tương ứng
Ví dụ : MOV A, P2 ; lấy dữ liệu từ cổng P2 lưu vào A
Chú ý : Một chân là Input thì phải đưa giá trị 1 ra chân đó

trước khi thao tác với nó.

5-34


DuyTan University

Kỹ thuật Vi xử lý

Nguyen Van Tho – Duy Tan University

LẬP TRÌNH I/O
Ví dụ 1 : Viết chương trình đọc dữ liệu từ cổng P2 vào A, sau
đó cộng 3 vào A mười lần?

GIẢI :

AGAIN:

ORG 00H
MOV P2,#FFH
MOV A, P2
MOV R2, #10
ADD A, #03
DJNZ R2, AGAIN ;repeat until R2=0 (10 lần)
MOV R5, A
END
5-35

Nguyen Van Tho – Duy Tan University


LẬP TRÌNH I/O
Ví dụ 2 : Viết 1 chương trình so sánh R0, R1:
Nếu R0>R1: gửi 1 ra port 2
Else if R0Else gửi 0 ra port 2
Giải đáp:
NOT_EQ:
R0_NHO_HON:

CJNE R0, 1, NOT_EQ

JC
R0_NHO_HON



;R0=R1
;R0>R1
;R0
5-36


DuyTan University

Kỹ thuật Vi xử lý

Nguyen Van Tho – Duy Tan University


TẠO TRỄ (DELAY)
CHU KỲ MÁY :
ƒ Chy kỳ máy (machine cycle) là đơn vị đo thời gian
thực thi các lệnh
ƒ Tần số dao động của thạch anh cho họ 8051 có thể từ
4MHz đến 30 MHz, tùy thuộc nhà sản xuất. Song thông
thường, loại 11.0592 MHz được dùng nhằm làm cho
các hệ thống dựa trên 8051 tương thích với cổng nối
tiếp của IBM PC.
1 Chu kỳ dao động = 1/f = 0.0904 µs
ƒ Với họ 8051, một chu kỳ máy kéo dài 12 chu kỳ dao
động
1 chu kỳ máy = 12 x 0.0904 µs = 1.085µs
5-37

Nguyen Van Tho – Duy Tan University

TẠO TRỄ (DELAY)
Tìm thời gian trễ cho chương trình con say đây, (với
tần số dao động thạch anh là 11.0592 MHz)
DELAY:
HERE:

MOV R3,#250
NOP
NOP
NOP
NOP
DJNZ R3,HERE
RET


;
;
;
;
;
;
;

Answer: [250x(1+1+1+1+2)+2]x1.085 us=1629.67 us

1 MC
1 MC
1 MC
1 MC
1 MC
2 MC
1 MC

5-38


DuyTan University

Kỹ thuật Vi xử lý

Nguyen Van Tho – Duy Tan University

TẠO TRỄ (DELAY)
Đoạn chương trình tạo trễ 500ms

D1:

D2:

MOV
MOV
DJNZ
MOV
DJNZ
DJNZ
MOV
MOV
DJNZ
MOV
DJNZ
DJNZ

R1, #250
R0, #250
R0, $
R0, #250
R0, $
R1, D1
R1, #250
R0, #250
R0, $
R0, #250
R0, $
R1, D2


5-39

Nguyen Van Tho – Duy Tan University

TẠO TRỄ (DELAY)
Ví dụ : Giả sử có 1 hệ thống gồm 8 đèn led ghép nối với port 0 của
8051. Đèn led sáng khi xuất tín hiệu mức 0, tắt khi xuất tín hiệu mức 1.
Hãy lập trình sáng lần lượt từng Led 1 trong thời gian 1 giây

5-40


DuyTan University

Kỹ thuật Vi xử lý

ORG
L1:

0000
MOV
LCALL
LCALL
MOV
LCALL
LCALL
MOV
LCALL
LCALL
MOV

LCALL
LCALL
MOV
LCALL
LCALL
MOV
LCALL
LCALL
MOV
LCALL
LCALL
MOV
LCALL
LCALL

Nguyen Van Tho – Duy Tan University

P2,#00000000b
DELAY_500ms
DELAY_500ms
P2,#00000001b
DELAY_500ms
DELAY_500ms
P2,#00000010b
DELAY_500ms
DELAY_500ms
P2,#00000100b
DELAY_500ms
DELAY_500ms
P2,#00001000b

DELAY_500ms
DELAY_500ms
P2,#000100000b
DELAY_500ms
DELAY_500ms
P2,#001000000b
DELAY_500ms
DELAY_500ms
P2,#010000000b
DELAY_500ms
DELAY_500ms

MOV
P2,#100000000b
LCALL DELAY_500ms
LCALL DELAY_500ms
SJMP
L1
DELAY_500ms:
PUSH 00H
PUSH 01H
MOV
R1, #250
D1:
MOV
R0, #250
DJNZ
R0, $
MOV
R0, #250

DJNZ
R0, $
DJNZ
R1, D1
MOV
R1, #250
D2:
MOV
R0, #250
DJNZ
R0, $
MOV
R0, #250
DJNZ
R0, $
DJNZ
R1, D2
POP
01H
POP
00H
RET
5-41
END

Nguyen Van Tho – Duy Tan University

Dùng lệnh quay chương trình sẽ gọn hơn
ORG
L1:


0000
MOV
RL
MOV
LCALL
LCALL
SJMP

A,#01H
A
P2,A
DELAY_500ms
DELAY_500ms
L1

DELAY_500ms:

PUSH 00H
PUSH 01H

D1:

MOV
MOV
DJNZ
MOV
DJNZ
DJNZ


R1, #250
R0, #250
R0, $
R0, #250
R0, $
R1, D1

D2:

MOV
MOV
DJNZ
MOV
DJNZ
DJNZ

R1, #250
R0, #250
R0, $
R0, #250
R0, $
R1, D2

POP
POP
RET

01H
00H


END

5-42


DuyTan University

Kỹ thuật Vi xử lý

Nguyen Van Tho – Duy Tan University

LẬP TRÌNH TIMER/COUNTER
8051 có 2 bộ timer/counter
¾Timer/counter 0
¾Timer/counter 1

Chúng có thể được dùng như
ƒ Bộ định thời (Timer) dùng như 1 bộ tạo trễ
ƒ Bộ đếm sự kiện (Event Counter)
9Đầu vào từ chân bên ngoài để đếm số sự kiện
9Có thể dùng để đếm số người qua cổng, số vòng quay
của bánh xe

ƒ Tạo tốc độ baud cho cổng nối tiếp của 8051
5-43

Nguyen Van Tho – Duy Tan University

LẬP TRÌNH TIMER/COUNTER
Thanh ghi điều khiển trạng thái TCON

TR (run control bit)
• TR0 for Timer/counter 0; TR1 for Timer/counter 1.
• TR được thiết lập hay xóa bởi phần mềm để bật tt timer/counter
ắTR=0: off (stop)
ắTR=1: on (start)
TF (timer flag, control flag)
ã Cờ tràn của bộ định thời
• TF0 cho timer/counter 0; TF1 cho timer/counter 1
• Ban đầu TF=0 và được thiết lp =1 khi cú trn ( TH-TL ặ 0)
ã c xóa bởi phần mềm hoặc phần cứng khi bộ vi xử lý trỏ đến trình
phục vụ ngắt
(MSB)
TF1

TR1
Timer 1

TF0
Timer0

TR0

IE1

IT1

IE0

for Interrupt


(LSB)
IT0
5-44


DuyTan University

Kỹ thuật Vi xử lý

Nguyen Van Tho – Duy Tan University

LẬP TRÌNH TIMER/COUNTER
Thanh ghi chế độ định thời TMOD
• Thanh ghi 8-bit
• Thiết lập chế độ hoạt động cho các bộ định thời :
¾4 bits thấp dành cho Timer 0 (Thiết lập = 0000 nếu
khơng sử dụng )
¾4 bits cao dành cho Timer 1 (Thiết lập = 0000 nếu
không sử dụng )
• Khơng được định địa chỉ bit.
(MSB)
GATE

(LSB)
C/T

M1

M0


GATE

C/T

Timer 1

M1

M0

Timer 0
5-45

Nguyen Van Tho – Duy Tan University

LẬP TRÌNH TIMER/COUNTER
Thanh ghi chế độ định thời TMOD
GATE

C/T

M1

Timer 1

M0

GATE

C/T


M1

M0

Timer 0

ƒ GATE = 0
9 Điều khiển bên trong
9 Bật hay tắt timer bằng phần mềm
9 Timer được cho phép khi TR được thiết lập =1
ƒGATE = 1
9 Điều khiển bên ngoài
9 Bật hay tắt timer bằng cả phần mềm và nguồn bên ngoài
9 Timer được cho phép khi chân /INT ở mức cao và TR được thiết
lập bằng 1
5-46


DuyTan University

Kỹ thuật Vi xử lý

Nguyen Van Tho – Duy Tan University

LẬP TRÌNH TIMER/COUNTER
Thanh ghi chế độ định thời TMOD
C//T : Bit chọn chức năng đếm hay định thời
đếm : C//T=1 ; định thời : C//T=0
M1 & M0 : Chọn mode

M1

M0

MODE HOẠT ĐỘNG

0

0

0

0

1

1

1

0

2

1

1

3


Chế độ định thời 13 bit
8 bit TH + 5 bit cao của TL
Chế độ 16 bit
8 bit TH + 8 bit TL
Chế độ 8 bit auto reload
Tự động nạp lại giá trị của TH vào TL khi đếm tràn
Chế độ 1 bộ đếm 8 bit riêng lẻ
Chỉ cho TL0 và TH0
5-47

Nguyen Van Tho – Duy Tan University

LẬP TRÌNH TIMER/COUNTER
Ví dụ : Tìm giá trị TMOD nếu muốn lập trình Timer 0 làm việc
ở mode 2 ? Dùng 8051 XTAL cho xung clock, & dùng lệnh để
bật hay tắt timer
GIẢI :
timer 1

timer 0

TMOD= 0000 0010

Timer 1 không dùng
Timer 0, mode 2
C/T = 0 Ỉ dùng nguồn xung clock (Timer)
GATE = 0 Ỉ điều khiển bằng phần
mềm
5-48



DuyTan University

Kỹ thuật Vi xử lý

Nguyen Van Tho – Duy Tan University

LẬP TRÌNH TIMER/COUNTER
Hoạt động của Timer/Counter
Ví dụ : Chọn Timer 0 làm việc ở Mode 1 - Chế độ 16 bit
MOV TMOD,#01H
MOV TH0,#FFH
MOV TL0,#FCH
CLR TF0
SETB TR0

; chọn chế độ làm việc
; Khởi tạo giá trị ban đầu
; cho TH0 & TL0.
; Xóa cờ TF0 về 0
; bật timer0

5-49

Nguyen Van Tho – Duy Tan University

LẬP TRÌNH TIMER/COUNTER
Hoạt động của Timer/Counter
TH0


TL0

TF

FF
00

FC
FD
FE
FF
00

0
1

TR0

1

¾ Khi có xung clock 8051 đếm lên (tăng giá trị TH-TL)
¾Khi có sự chuyển số đếm về 0000 , cờ TF=1
Clock
t

1.085 µs
5-50



×