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!
Thông tin thật hưu ích, thank bạn đã share.
Trả lờiXóaTìm hiểu website : Bán đá thạch anh
RET là 1 chu kỳ máy chứ???
Trả lờiXóaRET là 2MC nha bạn. Bạn có thể search và xem lại bảng mã
XóaEND và ORG có chu kì máy ko bạn ơi
XóaCam on ban nhieu lam
Trả lờiXóaORG và END có chu kì máy không bạn ơi
Trả lờiXóa