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

Kỹ thuật vi điều khiển-p6 pot

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 (142.66 KB, 17 trang )

Xung & Hoi1
1.Giới thiệu
2.Sơ đồ khối vàchân
3.Tổchức bộ nhớ
4.Các thanh ghi chức năng đặc biệt
5.Dao động vàhoạt động reset
6.Tập lệnh (Instruction Set)
7.Các mode định địa chỉ
8.Lập trình IO
9.Tạo trễ
10.Lập trình Timer/Counter
11.Lập trình giao tiếp nối tiếp
12.Lập trình ngắt
13.Lập trình hợp ngữ
Xung & Hoi2
MOV dest, source ; dest = source
MOVA, #72H;A=72H
MOVR4, #62H;R4=62H
MOVA, R4;A=62H
MOVB, 7EH
MOVP1, A;mov A to port 1
Chúý 1:
MOVA,#72H ≠ MOVA,72H
8086 8051
MOVAL,72HMOVA,#72H
MOVBX,72H
MOVAL,[BX]MOVA,72H
Chúý 2:
MOVA,R3 ≡ MOVA,3
MOVDPTR, #7634H
MOVDPL, #34H


MOVDPH, #76H
MOVDPTR, A
MOVRm, Rn
Xung & Hoi3
ADDA, Source ;A=A+Source
ADDA,#6;A=A+6
ADDA,R6;A=A+R6
ADD A,6;A=A+[6] or A=A+R6
ADDCA, source ;A=A+source+CY
SETBC;CY=1
ADDCA,R5;A=A+R5+1
SUBBA, source ;A=A-source-CY
SETBC;CY=1
SUBBA,R5;A=A-R5-1
Xung & Hoi4
SETBbit; bit=1
CLRbit; bit=0
SETBC; CY=1
SETBP0.0;bit 0 from port 0 =1
SETBP3.7;bit 7 from port 3 =1
SETBACC.2;bit 2 from Accumulator =1
SETB05
Chúý:
Lệnh xóa bit CLR tương tự lệnh set bit SETB
CLRC;CY=0
Song tồn tại 1 ngoạilệcâu lệnh sau đây chỉ cho CLR
CLRA;A=0
;set bit địa chỉ 05h (tại RAM có địa chỉ byte20h)
Xung & Hoi5
DECbyte;byte=byte-1

INCbyte;byte=byte+1
INCR7
DECA
DEC40H; [40]=[40]-1
CPLA;1’s complement
MOVA,#55H;A=01010101 B
L01:CPLA
MOVP1,A
ACALLDELAY
SJMPL01
Xung & Hoi6
ANL -ORL –XRLdest, source
vd:
MOVR5,#89H
ANLR5,#08H
RR A
RL A
RRC A
RLC A
NOP & RET & RETI
Giống như các lệnh của 8086
Xung & Hoi7
MULAB ;B|A = A*B
MOVA,#25H
MOVB,#65H
MULAB;25H*65H=0E99
;B=0EH, A=99H
DIVAB ;A = A/B, B = A mod B
MOVA,#25
MOVB,#10

DIVAB;A=2, B=5
Xung & Hoi8
Jump if bit=1 & clear bitJBC bit, rel
Jump if bit=0JNB bit, rel
Jump if bit=1JB bit, rel
Jump if CY=0JNC rel
Jump if CY=1JC rel
Jump if dest ¹ source
CJNE dest, source, rel
Decrement & jump if byte¹0
DJNZ byte, rel
Jump if A¹0
JNZ rel
Jump if A=0JZ rel
Các lệnh nhảy có điều kiện:
Xung & Hoi9
ØDJNZbyte, rel-addr
Viết chương trình xóa thanh ghiA, sau đócộng 3 vào A mười
lần?
à ORG 0000H
MOVA,#0;
MOVR2,#10
AGAIN:ADDA,#03
DJNZR2,AGAIN ;repeat until R2=0 (10 lần)
MOVP1,A
Xung & Hoi10
CJNE <dest-byte>, <src-byte>, rel
•So sánh vànhảy nếu không bằng. CJNE so sánh 2 giátrị đầu
tiên vàrẽnhánh nếu các giátrị của 2 toán hạng không bằng
nhau

•C được set bằng 1 nếu giátrị nguyên không dấu của <dest-
byte> nhỏ hơn của <src-byte>. Ngược lại, C = 0
•Cả2 toán hạng không bịảnh hưởng sau khi thực thi lệnh
Xung & Hoi11
VD:
Viết 1 chương trình so sánh R0, R1:
Nếu R0>R1: gửi 1 ra port 2
Else if R0<R1: gửi 0FFH ra port 2
Else gửi 0 ra port 2
Giải đáp:
CJNER0, 1, NOT_EQ
…;R0=R1
NOT_EQ: JCR0_NHO_HON
…;R0>R1
R0_NHO_HON:…;R0<R1
Xung & Hoi12
VD:
MOV A, 79H
Port 1 làngõ vào cógiátrị thay đổi liên tục.
….
WAIT:CJNEA,P1,WAIT

tác dụng gì?
Trả lời: Chương trình lặp lại tại điểm này cho tới khi nhận giátrị
79H tại đầu vào P1.
Xung & Hoi13
• SJMPrel-addr
Làlệnh nhảy không điều kiện. Làlệnh nhảy ngắn (2-byte).
Byte đầu tiên làopcode, byte thứ 2 là địa chỉ tương đối của
đích. Địa chỉ tương đối trong khoảng 00àFFH nhưng chia

thành 2 hướng: tới, lui (forward, backward) nên tầm nhảy cho
phép là -128 đến +127 bytes trước lệnh vàsau lệnh.
•VD:
0100H:SJMP RelativeAddress

0123H: RelativeAddress
à Byte độ dời của lệnh: 0123H-0102H=21H là độ dời
tương đối
PC
Xung & Hoi14
LJMP addr16
Làlệnh nhảy không điều kiện (3 bytes). Byte đầu tiên là
opcode, byte 2 & 3 chứa địa chỉ đích 16-bit. Tầm nhảy từ
0000àFFFFH
AJMP addr11
Làlệnh nhảy không điều kiện. Nhảy đến địa chỉ tuyệt đối.
Đích nhảy đến phải ở trong vùng 2K của bộ nhớ chương
trình với byte đầu tiên của lệnh theo sau lệnh AJMP. Mã đối
tượng như sau:
10000aaa aaaaaaaa
A10-A8 & A7-A0 của địa chỉ đích
Xung & Hoi15
LCALL
Làlệnh 3 bytes. LCALL dùng để gọi chương trình con nằm
bất kỳ đâu trong khoảng 64K byte không gian địa chỉ của
8051.
CALL
1 lệnh chuyển điều khiển khác làCALL, dùng để gọi 1 chương
trình con (subroutine).
aaaaaaaa

A15-A8 & A7-A0 của địa chỉ đích
01001000
aaaaaaaa
Xung & Hoi16
VD:
Ban đầu không khởi động stack pointer (SP).
Nhãn Subroutine đặt tại vị trí1234H trong bộ nhớ chương trình.
Tại 0123H thực hiện:LCALL Subroutine
Mô tả hoạt động sau khi thực hiện lệnh trên?
26H 26H
0BH
0AH
09H
08H
Start SP=07H
0BH
0AH
09H
08H
SP=08H
01H
0BH
0AH
09H
08H
SP=09H
RAMRAMRAM
34H12H
PC
Xung & Hoi17

ACALL
Làlệnh 2-byte. Chương trình con phải ở trong phạm vi 2K của
bộ nhớ chương trình so với byte đầu tiên của lệnh theo sau
ACALL.
10001aaa aaaaaaaa
A10-A8 & A7-A0 của địa chỉ đích

×