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

Tài liệu Cấu trúc bộ VĐK 8051 doc

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 (288.82 KB, 24 trang )

Cấu trúc bộ VĐK 8051
Giới thiệu về lập trình hợp ngữ
Bài 2
Bộ môn TĐ
Khoa KTĐK
Bài 2: Mục đích
•Cấu trúc bên trong 8051
•Tập thanh ghi
•Tập lệnh
•Bản đồ bộ nhớ

Giớithiệuvề ngănxếpSFR

Giới

thiệu

về

ngăn

xếp
,
SFR
•Lập trình hợp ngữ
Cấu trúc 8051
•Tổng quan cho người lập trình
Tập thanh ghi

Tập


thanh

ghi
–Tập lệnh
Bản đồ bộ nhớ

Bản

đồ

bộ

nhớ
•Tổng quan cho người thiết kế phần cứng
Sơ đồ chân



đồ

chân
– Các thông số về thời gian

Các yêu cầuvề dòng điệnvàđiệnáp

Các

yêu

cầu


về

dòng

điện



điện

áp
Tổng quan cho người thiết kế phần

c

ng
9
Tạo nguồn điệnáp5Vtừ nguồn 220V
9
Tạo

nguồn

điện

áp

5V


từ

nguồn

220V

50Hz
XMM1
XMM2
XSC1
G
T
XMM1
V1
220 V
60 Hz
0Deg
D2
1B4B42
1
2
4
3
U3
LM7824CT
LINE VREG
COMMON
VOLTAGE
XMM3
AB

T2
NLT_PQ_4_12
C1 C2 C3
10uF-POL
U2
LM7812CT
LINE VREG
COMMON
VOLTAGE
XMM4
1000uF-POL
100nF
C4
10uF-POL
U1
LM7805CT
LINE VREG
COMMON
VOLTAGE
XMM5
C5
10uF-POL
Tổng quan cho người thiết kế phần

c

ng
9
Tạo nguồn điệnáp5Vtừ nguồn 12V
9

Tạo

nguồn

điện

áp

5V

từ

nguồn

12V
U1
LM7805CT
XMM1
V1
12 V
LINE VREG
COMMON
VOLTAGE
C1
C2
C4
C3
C1
100pF
C2

1000uF-POL
C4
100pF
LED1
C3
10uF-POL
R1
4.70K
Ω
LED1
Tổng quan cho người thiết kế phần

c

ng
9
Mạch tạo dao động và Reset cho 8051
9
Mạch

tạo

dao

động



Reset


cho

8051
VCC
5V
18(XTAL1)
19(XTAL2)
20(GND)
5V
R1
10k
Ω
X1
HC-49/U_11MHz
C3
330pF
C1
330
p
F
C2
330
p
F
J1
Ke
y
= S
p
ace

p
p
yp
Toi chan Reset (9)
Toi chan Reset (9)
Tổ h ờilậ tì h
Tổ
ng quan c
h
o ngư
ời

lậ
p
t
r
ì
n
h
-
Tập thanh ghi
Tập

thanh

ghi
• Các thanh ghi
ABtừ R0 đến R7: là các thanh ghi 8 bit

A

,
B
,
từ

R0

đến

R7:



các

thanh

ghi

8

bit
– DPTR: [DPH:DPL] thanh ghi 16 bit

PC: Bộ đếmchương trình (16 bit)
PC:

Bộ

đếm


chương

trình

(16

bit)
–4 bộ thanh ghi từ R0 đến R7
– Con trỏ ngăn xếp SP
– PSW: thanh ghi từ trạng thái chương trình
– SFR: Thanh ghi chức năng đặc biệt
ề ể ế

Đ
i

u khi

n các thi
ế
t bị ngoại vi trên board
Tập thanh ghi-Thanh ghi tích luỹ
A, ACC
A,

ACC
• Được sử dụng phổ biến cho lệnh mov và phép tính số
học
• ACC có địa chỉ SFR là 0E0H

•Ví dụ có chỉ dẫn đầy đủ
Lệnh: mov A R0 ;copy nội dung củaR0vàoA

Lệnh:

mov

A
,
R0

;copy

nội

dung

của

R0

vào

A
–Mã lệnh: E8
– Thanh ghi tích luỹ được giải mã hoàn toàn trong mã lệnh
Chỉ dẫn đầ đủ ề thanh ghi tích l ỹ

Chỉ


dẫn

đầ
y
đủ
v


thanh

ghi

tích

l
u

–Lệnh: Push ACC
–Mã lệnh C0 E0
Tập thanh ghi-Thanh ghi B
•Thường được sử dụng như là thanh ghi
tạmthờigiống như thanh ghi thứ 9
tạm

thời
,
giống

như


thanh

ghi

thứ

9
• Được sử dụng bởi 2 mã lệnh
mul AB div AB

mul

AB
,
div

AB
• Thanh ghi giữ toán hạng thứ 2 và sẽ giữ
mộtphầncủakếtquả
một

phần

của

kết

quả
– 8 bit cao của kết quả phép tính nhân


Số dư trong phép tính chia

Số



trong

phép

tính

chia
Các thanh ghi - PC
• PC là bộ đếm chương trình

Được xem như con trỏ lệnh trong các bộ VXL
Được

xem

như

con

trỏ

lệnh

trong


các

bộ

VXL

khác
• PC luôn trỏ tới lệnh kế tiếp của chương trình
Skhi ộtlệ h(1h ặ hiề bt)PC

S
au
khi
nạp m
ột

lệ
n
h

(1

h
o

c n
hiề
u
b

y
t
e
)
,
PC

được tự động tăng để trỏ tới lệnh kế tiếp

Không thể thao tác trựctiếptới PC (ngoạitrừ
Không

thể

thao

tác

trực

tiếp

tới

PC

(ngoại

trừ


câu lệnh JMP)
• Không thể đọc trực tiếp nội dung của PC (trừ
mộtsố thủ thuật)
một

số

thủ

thuật)
Tập thanh ghi – R0 tới R7
•Một bộ 8 thanh ghi R0, R1, … R7, mỗi thanh ghi
8bit
8

bit
•Phần lớn được sử dụng như các thanh ghi tạm
•Có sẵn tron
g
4 băn
g

(
bank
)

(
Th

c tế như là các

g g( )( ự
thanh ghi 4x8)
•Băng được lựa chọn bằng cách thiết lập các bit
RS1 RS0 t th h hi từ t thái h
RS1
:
RS0

t
rong
th
an
h
g
hi

từ

t
rạng
thái
c
h
ương
trình PSW.

Băng mặc định (lúc bật nguồn) là bank 0

Băng


mặc

định

(lúc

bật

nguồn)



bank

0
Các thanh ghi - PSW
•Từ trạng thái chương trình là thanh ghi 8 bit có thể địa
chỉ hoá theo bit, thanh ghi này có các cờ:
•CY-cờ nhớ
–Thiết lập khi có nhớ ở trong phép tính số học

AC
-
Cờ nhớ phụ
AC

-
Cờ

nhớ


phụ
– Có nhớ từ D3 sang D4. Sử dụng cho các phép toán với số BCD
•P -Cờ chẵn lẻ
P1Nế Aótổ á ố 1là ố lẻ

P
=
1

Nế
u
A
c
ó

tổ
ng c
á
c s


1


s


lẻ
–P=0 Nếu A có tổng các số 1 là số chẵn

•OV -cờ tràn
–Thiết lập nếu bất cứ một phép tính số học nào gây tràn
Thanh ghi từ trạng thái chương
ìh
PSW
tr
ì
n
h
-
PSW
Minh hoạ về các cờ
•Ví dụ về phép cộng
Các thanh ghi - DPTR
• Thanh ghi 16 bit, được gọi là con trỏ dữ liệu
Đượcsử dụng bởicáclệnh truy cậpbộ nhớ

Được

sử

dụng

bởi

các

lệnh

truy


cập

bộ

nhớ

ngoài

Cũng đượcsử dụng để lưu các giá trị 16 bit

Cũng

được

sử

dụng

để

lưu

các

giá

trị

16


bit
mov DPTR, #data16; Đặt DPTR với địa chỉ ngoài 16 bit
movx A @DPTR ;
[DPTR] tớiA
movx

A
,
@DPTR

;
copy mem
[DPTR]

tới

A
•DPTR được sử dụng cho các thao tác với chuỗi,
LUT (look up table)
LUT

(look

up

table)
Các thanh ghi - SP
• SP là con trỏ ngăn xếp
• SP trỏ tới vị trí cuối cùng đã sử dụng của ngăn xếp


Thao tác nạp trước tiên sẽ tăng SP và sau đó copy dữ liệu
– Thao tác lấy trước tiên sẽ copy dữ liệu sau đó giảm SP
• Ở 8051, ngăn xếp được phát triển theo chiều tăng (từ
ùhớ thấ tớiù hớ )àóthể hỉ là RAM
v
ù
ng n
hớ

thấ
p
tới
v
ù
ng n
hớ
cao
)
v
à
c
ó

thể
c
hỉ




RAM

trong
•Khi bật nguồn, SP có vị trí 07H
ế
•Các băng thanh ghi 2,3,4 (08H tới 1FH) là vùng ngăn x
ế
p
mặc định
•Ngăn xếp có thể định vị trí lại bằng cách đặt SP tới vùng
bộ hớ từ 30H tới7Fh
bộ
n
hớ
cao
từ

30H

tới

7Fh
– Mov SP, #32H
Các thanh ghi - SFR
• Điềukhiểnhoạt
động củacácthiết
bị
i
i


bị
ngoạ
i
v
i
t
r
ê
n
board
• Các thanh ghi chức

năng đặcbịêt

địa
chỉ trựctiếptừ 80H
tới FFH
•Cácbảnsaocủa
8051 có thể có các
SFR bổ sun
g
g
Bản đồ bộ nhớ của 8051
• ROM bên trong phụ thuộc
vào nhà cung cấp
vào

nhà

cung


cấp
•Khi bật nguồn PC bắt đầu
từ địa chỉ 0000H trong
khô i ROM
khô
ng g
i
an
ROM
Tập lệnh của 8051
• Chuyển dữ liệu
– Chuyển/copy dữ liệu tà vị trí này tới vị trí khác

mov movc movx push pop

mov
,
movc
,
movx
,
push
,
pop

•Lệnh lôgic
–Thực hiện các phép tính lôgic trên dữ liệu
– anl, orl, xrl, clr, cpl, rl, rlc, rr, rrc, swap
•Lệnh số học

–Thực hiện các phép tính số học trên dữ liệu
– add, addc, subb, inc, dec, mul, div

Điềukhiểnchương trình

Điều

khiển

chương

trình
– Điều khiển luồng chương trình
– jmp, ajmp, ljmp, sjmp, jc, jnc, jb, jnb, jbc, jz, jnz, acall, lcall,

c
j
ne, d
j
nz, ret, reti
jj
•NOP
Giới thiệu hợp ngữ của 8051
•Cấu trúc lệnh hợp ngữ
[Nhãn:] Mã lệnh [toán hạng] [;giải thích]
•Ví dụ
start: mov A, #D0H; mã bắt đầu từ đây
•Chỉ dẫn h
ợp
n

g

ợpg
– ORG xxxxH : origin, bắt đầu hợp dich từ địa chỉ xxxxH
–EQU : địng nghĩa hằng số
• Count EQU 25
ỉ ẫ

DB : ch

d

n định nghĩa dữ liệu 8 bit
• DATA1: DB 28
• DATA2: DB “hello word”

END
: báo cho trình hợpdichbiếtkết thúc tệp nguồn

END
:

báo

cho

trình

hợp


dich

biết

kết

thúc

tệp

nguồn
Cơ sở về lập trình hợp ngữ
• Định dạng hợp ngữ của Intel
Thực hiện đích nguồn; giải thích
Giá t ị đ đặtt ớ bởidấ #

Giá

t
r


đ
ược
đặt

t


c

bởi

dấ
u
#
– #55, #32 … (không có # được coi như nạp giá trị lưu tại ô
nhớ)
Giá t ị Hth bởihữ H

Giá

t
r


H
ex
th
eo sau
bởi
c
hữ

H
– #55H, #32H…
•Nếu số bắt đầu của số Hex là chữ (A-F) thì phải có số 0 đặt
trướcnó
trước



– #0FFH, #0C1H, #0D2H…
• Không hoạt động: NOP!
Các bước xây dựng chương
trình hợpngữ
trình

hợp

ngữ
Tr×nh
so¹n th¶o
myfile.asm
myfile lst
file obj kh c
Tr×nh
hîp dÞch
myfile
.
lst
myfile.obj
file

obj

kh
¸
c
Tr×nh
liªn kÕt
myfile.abs

Tr×nh
chuyÓn ®æi OH
myfile.hexa
Ví dụ về chương trình hợp ngữ

Đích

hệ
phát
triển
Chương trình làm đày 4 thanh ghi
Đích

hệ
phát
triển
8051
–Thiếtbị 8051 chuẩn

2K R
O
M
o
n-
c
hi
p
để
Chương


trình

làm

đày

4

thanh

ghi

trong băng thanh ghi với một vài số
và tìm tổng của chúng
O
o
cp
để
chạychương trình
giám sát
– 32K RAM bên ngoài ở
địa
chỉ
0
x
0000
tới
địa
chỉ
0

x
0000
tới
0x7FFF
– RAM này chứacả mã
lệnh và dữ liệu
Vị

đầ
tiê
0
30

Vị
t
r
í
đầ
u
tiê
n
0
x
30
của RAM ngoài để bỏ
qua bảng vectơ ngắt
(IVT-Interrupt Vector
Tbl)
T
a

bl
e
)
Ví dụ Demo21 A52
;
; Chuong trinh copy 5 byte du lieu tu d/c 31h sang d/c 60h |
;


dụ

Demo21
.
A52
org 0h ;chuong trinh bat dau tu o 0h
sjmp start
org 30H
start: mov A, #1 ; nap gia tri dau tien vao 31h
R4 #5
mov
R4
,
#5
mov R0, #31H ; nap con tro
L1: mov @R0, A ; chuyen 1, 2 ,3 , 4, 5 vao 5 o nho 31, 32, 33, 34, 35
inc A
INC R0
djnz R4 L1
djnz


R4
,
L1
mov R1,#60h ;con tro dich (destination)
mov R2,#5 ;so byte can chuyen (so vong lap)
mov R0,#31h ;con tro nguon (source)
LOOP: nop
mov A,#00 ;xoa thanh chua ACC
mov A,@R0 ;chuyen 1 byte tro boi R0 vao A
mov @R1,A ;chuyen tu A vao dich
inc R0 ;tang co tro nguon
inc R1 ;tang con tro dich
djnz R2,LOOP ;kiem tra so vong lap
sjmp $
sjmp

$
nop
END

×