Tạo và tính thời gian trễ cho 8051

6 comments
Tạo và tính thời gian trễ cho 8051. Hay còn gọi là delay cho 8051 

Tính thời gian trễ (delay) cho 8051

Delay là khoảng thời gian trễ mà người dùng tạo ra nhằm mục đích làm cho VĐK không làm gì trong khoảng thời gian yêu cầu đó. Trong vòng lặp delay VĐK lặp đi lặp lại một câu lệnh nhằm kéo dài thời gian theo yêu cầu, nó làm tốn thời gian xử lý của CPU mà không yêu cầu CPU thực hiện nhiệm vụ khác. Để thực hiện delay ta có thể sử dụng 2 cách đó là: dùng vòng lặp hoặc là dùng Timer. Trong bài này tôi sẽ hướng dẫn các bạn dùng Vòng lặp để tạo thời gian trễ.

Đối với 8051 thì 1 chu kỳ máy = 12 chu kỳ dao động thạch anh. Do vậy để tính chu kỳ máy ta lấy chu kỳ dao động của thạch anh chia cho 12.

Ví dụ: tính chu kỳ máy khi sử dụng tần số dao động thạch anh sau đây:
A,11,0592MHz B,12MHz C,20 MHz
Giải:
A, Fmc là tần số máy. Tosc là chu kỳ máy
Fmc = 11,0592/12 = 0,9216MHz => chu kỳ máy : Tosc = 1/0,9216 = 1.085uS
B,
Fmc = 12/12 = 1MHz => Tosc = 1/1 = 1uS.
C,
Fmc = 20/12 = 1,6667MHz => Tosc = 1/1,6667 = 0,6uS

Trong bài này tôi dùng thạch anh 12MHz

Trong Vi điều khiển có nhiều câu lệnh và mâu câu lệnh có thời gian thực hiện khác nhau. Và thời gian đó cố định cho từng câu lệnh. Ví dụ một số câu lệnh thường dùng để tính delay:

Lệnh thời gian thực hiện
MOV 1 x Tosc = 1 x 1uS = 1 uS ( micro giây)
DJNZ 2 x Tosc = 2 x 1uS = 2 uS
NOP 1 x Tosc = 1 x 1uS = 1 uS
RET 2 x Tosc = 2 x 1uS = 2 uS

Phần chính: phần tính thời gian delay

Ví dụ 1: tính thời gian delay sau:
Chu kỳ máy
DELAY: MOV R1,#200 1
HERE: DJNZ R1,HERE 2
RET 2

Chọn thạch anh = 12MHz => Tosc = 1uS 
Như vậy tổng thời gian delay là : [(2x200) + 1+ 2] x Tosc = 403 uS

Ví dụ 2: Tính thời gian delay sau:
Chu kỳ máy
DL: MOV R3,#250 1
HERE: NOP 1
NOP 1
NOP 1
NOP 1
DJNZ R3,HERE 2
RET 2

Vậy tổng thời gian delay là : [ 250 x ( 4+2) +2+1] x Tosc = 1503 uS

Như vậy muốn tính thời gian delay 300mS thì ta dùng các vòng lặp lồng nhau như sau:

DELAY: MOV R1,#20
LAP1: MOV R2,#99
LAP2: MOV R3,#74
LAP3: DJNZ R3,LAP3
DJNZ R2,LAP2
DJNZ R1,LAP1
RET

Tính tổng thời gian delay:
T = [(((74*2)+3)*99+3)*20+3]* Tosc = 299041 uS ~ 300mS

 ta có công thức tính thời gian delay:
 T = [(( 2*X + 3)*Y+3)*Z +3]* Tosc
 Với X, Y, Z là

DELAY: MOV R1,#Z
LAP1: MOV R2,#Y
LAP2: MOV R3,#X
LAP3: DJNZ R3,LAP3
DJNZ R2,LAP2
DJNZ R1,LAP1
RET

Thank for watching!

6 nhận xét: