Xem mẫu
- 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ới thiệu về ngăn xếp SFR
xếp,
• 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 lệnh
– Bản đồ bộ nhớ
• Tổng quan cho người thiết kế phần cứng
– Sơ đồ chân
– Các thông số về thời gian
– Các yêu cầu về dòng điện và điện áp
- Tổng quan cho người thiết kế phần
cứng
ứ
Tạo nguồn điện áp 5V từ nguồn 220V
50Hz XSC1
G
XMM2 T
XMM1
A B XMM3
V1
2 D2
U3
T2 L M 7 8 2 4 CT
220 V 4 1 LINE VREG
6 0 Hz VOLTAGE
0 De g C1 C2
COMMON
C3
NL T_ PQ _ 4 _ 1 2 3 1B4B42 1 0 u F- PO L
100nF XMM4
1 0 0 0 u F- PO L
U2
L M 7 8 1 2 CT
LINE VREG
VOLTAGE
COMMON C4
1 0 u F- PO L
XMM5
U1
L M 7 8 0 5 CT
LINE VREG
VOLTAGE
COMMON C5
1 0 u F- PO L
- Tổng quan cho người thiết kế phần
cứng
ứ
Tạo nguồn điện áp 5V từ nguồn 12V
XMM1
U1
LM7805CT
LINE VREG
VOLTAGE
V1
COMMON
12 V
C1 C2 C3 C4
100pF 1000uF-POL 10uF-POL 100pF
R1
4.70KΩ
LED1
- Tổng quan cho người thiết kế phần
cứng
ứ
Mạch tạo dao động và Reset cho 8051
18(XTAL1) 19(XTAL2) 20(GND)
V CC
5V
X1
C3
R1
10kΩ 330pF HC-49/U_11MHz
J1 C1 C2
Key = Spac e
y p p
330pF p
330pF
Toi chan Reset (9)
- Tổng
Tổ quan cho người lậ t ì h
h ời lập trình-
Tập thanh ghi
• Các thanh ghi
– A, B,
A B từ R0 đến R7: là các thanh ghi 8 bit
– DPTR: [DPH:DPL] thanh ghi 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
• Đượ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ủa R0 vào A
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 đầ đủ về thanh ghi tích l ỹ
đầy ề luỹ
– 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ạm thời giống như thanh ghi thứ 9
thời,
• Được sử dụng bởi 2 mã lệnh
– mul AB div AB
AB,
• Thanh ghi giữ toán hạng thứ 2 và sẽ giữ
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
- 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
khác
• PC luôn trỏ tới lệnh kế tiếp của chương trình
• S khi nạp một lệnh (1 h ặ nhiều b t ) PC
Sau ột lệ h hoặc hiề byte),
được tự động tăng để trỏ tới lệnh kế tiếp
• 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ộ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
8 bit
• Phần lớn được sử dụng như các thanh ghi tạm
• Có sẵn trong 4 băng (
g g (bank) ( ự tế như là các
) (Thực
thanh ghi 4x8)
• Băng được lựa chọn bằng cách thiết lập các bit
RS1:RS0 t
RS1 RS0 trong thanh ghi từ t
th h hi trạng thái chương
h
trình PSW.
• Băng mặc định (lúc bật nguồn) là 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ụ
– 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ẻ
– P 1 Nế A có tổ các số 1 là số lẻ
P=1 Nếu ó tổng á ố ố
– 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
trình- PSW
ì h
- 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
• Được sử dụng bởi các lệnh truy cập bộ nhớ
ngoài
• 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 ; copy mem[DPTR] tới A
A, [DPTR]
• DPTR được sử dụng cho các thao tác với chuỗi,
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ừ
vùng nhớ thấ tới vùng nhớ cao) và có thể chỉ là RAM
ù hớ thấp ù hớ ) à ó hỉ
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ộ nhớ cao từ 30H tới 7Fh
hớ
– Mov SP, #32H
- Các thanh ghi - SFR
• Điều khiển hoạt
động của các thiết
bị ngoại vi t ê
i i trên
board
• Các thanh ghi chức
năng đặc bịêt ở địa
chỉ trực tiếp từ 80H
tới FFH
• Các bản sao của
8051 có thể có các
SFR bổ sung g
- Bản đồ bộ nhớ của 8051
• ROM bên trong phụ thuộc
vào nhà cung cấp
• Khi bật nguồn PC bắt đầu
từ địa chỉ 0000H trong
không i
khô gian 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ề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,
– cjne, djnz, ret, reti
j j
• 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 ngữ
ợp g
– 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ợp dich biết kết thúc tệp nguồn
nguon tai.lieu . vn