Barra

New Member

Download miễn phí Bài giảng Thiết kế hệ thống vi xử lý - Lập trình cho 8051





Stack pointer (con trỏngăn xếp)
• SP (Stack Pointer, Address 81h):
•Con trỏchỉ địa chỉtiếp theo ngắn xếp
•Ngầm định con trỏlà 07H
–Nếu có lệnh PUSH, con trỏtự động tăng lên 1, SP + 1;
• Các lệnh dùng con trỏSP là: PUSH, POP,
LCALL, RET, RETI và ngắt



Để tải bản Đầy Đủ của tài liệu, xin Trả lời bài viết này, Mods sẽ gửi Link download cho bạn sớm nhất qua hòm tin nhắn.
Ai cần download tài liệu gì mà không tìm thấy ở đây, thì đăng yêu cầu down tại đây nhé:
Nhận download tài liệu miễn phí

Tóm tắt nội dung tài liệu:

1Electrical Engineering
1
Lập trình cho 8051
• Tập thanh ghi - Register Set
• Tập lệnh - Instruction Set
• Quản lý bộ nhớ– Memory map
Electrical Engineering
2
Tập thanh ghi
Các thanh ghi chính
– A, B, R0 to R7 : 8 bit registers
– DPTR : [DPH] 16 bit register
– PC : Program Counter (Instruction Ptr) 16bits
– 4 sets of R0-R7
– Stack pointer SP
– PSW Program Status Word (Flags)
Carry CY, Aux Carry AC, Reg Bank selector,
Overflow, Parity
– Special Function Registers (SFRs)
Timers, Interrupt (enable, priority), Serial port,
power
2Electrical Engineering
3
Hợp ngữ – nét cơ bản nhất
(assembly)
Intel Assembly format
Operation destination source ; comment
Giá trị luôn có dấu thăng đứng trước #
– #55, #32 etc
Số Hex thì kết thúc bằng chữ H
– #55H, #32H
Thường khi với số bắt đầu bằng chữ #0FFH,
#0C1H, #0D2H
- Ví dụ lệnh cơ bản nhất : No operation : NOP !
Electrical Engineering
4
Thanh ghi A
Sủ dụng thường xuyên với lệnh mov
Ví dụ về lệnh thường dùng nhất
– Instruction : mov A, R0
– Mã máy (Opcode) : E8
Ngoài ra trong thanh ghi có trong lệnh khác nhưu
– Instruction : push ACC
– Mã máy : C0 E0
3Electrical Engineering
5
Thanh ghi A, B
• ACC (Accumulator, Addresses E0h, Bit-
Addressable): Dùng lưu trữ các giá trị trung gian
MOV A,#20h -> MOV E0h,#20h.
• B (B Register, Addresses F0h, Bit-
Addressable): Sử dụng trong các phép nhân và
chia.
Electrical Engineering
6
Ví dụ
• MUL AB, nhân 2 số 8 bít trong A, B và lưu
kết quả 16, A chứa byte thấp, B chứa byte
cao
• DIV AB, chia A bởi B, kết quả lưu vào A,
dư lưu vào B
4Electrical Engineering
7
Tập thanh ghi R0-R7
• R0, R1, … R7 dùng làm thanh ghi trung
gian
• Có thể có 4 banks
• Chon Bank nào tùy thuộc vào phần mềm, cụ
thể là sử dùng bit RS1:RS0 bits trong PSW
• Ngầm định là bank 0
Electrical Engineering
8
Thanh ghi DPTR (Data pointer)
• Được dùng để truy xuất bộ nhớ RAM ngoài
• Sử dụng 2 thanh ghi 8 bít để tạo địa chỉ 16
bit
• Chỉ có lệnh tăng DPTR, không có lệnh giảm
• 82 H (DPL), 83H (DPH)
5Electrical Engineering
9
Ví dụ DPTR
MOV A, #55 H
MOV DPTR, # 1000H
MOV @DPTR, A
• Chương trình chuyển số liệu từ thanh ghi A,
ra địa chỉ 1000H
Electrical Engineering
10
Con trỏ chương trình (PC)
• The Program Counter (PC) Con trỏ 2 byte để
chỉ chương trình tiếp theo ở lệnh nào
• PC = 0000h khi khởi động
• PC tăng 1,2, 3 byte tùy theo lệnh cụ thể
• Không thể đọc trực tiếp giá trị PC
• Không thể PC=2430h nhưng có thể thực hiện lệnh
tương đương LJMP 2430h
6Electrical Engineering
11
Giới thiệu phần mềm 8051
• Bộ nhớ ngoài
(External code
memory)
• Bộ nhớ RAM
(External RAM)
• Bộ nhớ trên chip
(On chip memory)
Electrical Engineering
12
Kết cấu bộ nhớ - Memory
• Bộ nhớ chương trình
– Chứa trong ROM, hay RAM
– Giới hạn 64 Kbyte
• Bộ nhớ ngoài External RAM
– Static, flash RAM
– Giới hạn 64 Kbyte
7Electrical Engineering
13
Kết cấu bộ nhớ On chip
Electrical Engineering
14
Ram trong
• Dung lượng 128
bytes
• Chia làm 3 phần
– Register banks
– Vùng RAM đa mục
đích
– Vùng RAM dùng
mục đích chuyên
dụng
8Electrical Engineering
15
Register Bank
• Phép cộng dữ liệu
– ADD A, R4
• Tương đương với
– ADD A, 04H, với mặc định thanh ghi bắt đầu
từ địa chỉ 00H
– Việc thay đổi mặc định quyết định bởi phần
mềm
Electrical Engineering
16
Bit memory
• Khoảng giá trị từ 20 – 3F, 16 bytes, 128 bit
• Lệnh làm việc bit:
– SETB 24h
– CLR 24h
• MOV 20h,#0FFh -> SETB 0H, SETB 1H,
...,SETB7H
9Electrical Engineering
17
(Vùng nhớ đặt biệt) SFR
• Bộ nhớ RAM trong khoảng 80H – FFH
(128byte)
• Chỉ có 21 thanh ghi hợp lệ
• Thực hiện các chức năng phục vụ riêng cho
8051
• Làm việc như làm việc với bộ nhớ RAM
bình thường
Electrical Engineering
18
Bảng SFR
10
Electrical Engineering
19
Lưu ý
• Các thanh ghi theo cột dọc thứ nhất đều có
thể làm việc theo bit
• Các thanh ghi SFR còn lại bắt buộc làm
việc theo byte
• 3 loại thanh ghi SFR
– Cổng vào ra
– Điều khiển
– Các thanh ghi khác
Electrical Engineering
20
Các cổng vào ra I/O
• P0 (Port 0, Address 80h, Bit-Addressable):
– Bit 0 của cổng tương ứng với chân P0.0
– Bit 7 của cổng tương ứng với chân P0.7
– SETB 80.0 b SETB P0.0
• P1 (Port 1, Address 90h, Bit-Addressable)
• P2 (Port 2, Address A0h, Bit-Addressable )
• P3 (Port 1, Address B0h, Bit-Addressable )
11
Electrical Engineering
21
Lưu ý
• Nếu sử dụng RAM ngoài thì các cổng P0,
P2 dùng vào tạo dữ liệu địa chỉ
• Cổng P3 có thể dùng cho mục đích đặc biệt
khác
Electrical Engineering
22
Stack pointer (con trỏ ngăn xếp)
• SP (Stack Pointer, Address 81h):
• Con trỏ chỉ địa chỉ tiếp theo ngắn xếp
• Ngầm định con trỏ là 07H
– Nếu có lệnh PUSH, con trỏ tự động tăng lên 1,
SP + 1;
• Các lệnh dùng con trỏ SP là: PUSH, POP,
LCALL, RET, RETI và ngắt
12
Electrical Engineering
23
PCON (power control register)
• PCON (Power Control, Addresses 87h)
• Sử dụng để đặt 8051 ở trạng thái Sleep,
tiết kiệm năng lượng
– RAM giữ nguyên giá trị
– Mạch dao động ngừng lại
– ALE, PSEN giữ ở mức không tích cực
– Vcc chỉ cần giá trị 2 V
Electrical Engineering
24
PSW (program status word)
• PSW (Program Status Word, Addresses
D0h, Bit-Addressable): Lưu trư các cờ làm
việc của 8051, ví dụ
– Cờ nhớ CY Carry Flag, khi thực phép số học
– Cờ tràn OV, khi chuyển từ âm sang dương
– P Parity Flag –Cờ chẵn lẻ, xác định số bit lẻ
trong thanh chứa A, P =1 nếu A có một số lẻ
các bit 1
– Chọn dãy thanh ghi tích cực
13
Electrical Engineering
25
Ví dụ PSW
38 0011 1000
+ 2F 0010 1111
--------- ---------------
67 0110 0111
--------- ---------------
CY = 0
P = 1
Electrical Engineering
26
Thanh ghi thời gian
• TCON (Timer Control, Addresses 88h, Bit-
Addressable): Xác định các thức làm việc của bộ
định thời, bật tắt, ngắt ...
• TMOD (Timer Mode, Addresses 89h): Chế độ
làm việc 8 bit, 16 bít ..
• TL0/TH0 (Timer 0 Low/High, Addresses
8Ah/8Ch): Timer 0, giá trị bộ đếm
• TL1/TH1 (Timer 1 Low/High, Addresses
8Bh/8Dh): Timer 1, giá trị bộ đếm
14
Electrical Engineering
27
Cổng nối tiếp
• SCON (Serial Control, Addresses 98h,
Bit-Addressable): Các giá trị khởi đầu cho
làm việc với cổng nối tiếp
• SBUF (Serial Control, Addresses 99h):
Dữ liệu trao đổi giưa vi điều khiển và thiết
bị ngoại vi qua cổng nối tiếp
Electrical Engineering
28
Ngắt
• IE (Interrupt Enable, Addresses A8h):
Cho phép và không cho phép ngắt
• IP (Interrupt Priority, Addresses B8h,
Bit-Addressable): Xác định mức độ ưu tiên
giữa các ngắt
15
Electrical Engineering
29
Các SFR khác
Electrical Engineering
30
Mode truy cập bộ nhớ
• Immediate Addressing MOV A,#20h
• Direct Addressing MOV A,30h
• Indirect Addressing MOV A,@R0
• External Direct MOVX A,@DPTR
• Code Indirect MOVC A,@A+DPTR
16
Electrical Engineering
31
Immediate Addressing
• Ghán giá trị
• MOV A,#20h
• Cần có ký hiệu ‘ #”, trước giá trị
• Lệnh thực hiện nhanh, nhưng không mềm
dẻo
Electrical Engineering
32
Direct Addressing
• Địa chỉ trực tiếp
• MOV A,30h
• Nạp vào A, giá trị trong ô địa chỉ 30 H
• Chỉ dùng trong 128 byte RAM trong
17
Electrical Engineering
33
Indirect Addressing
• Địa chỉ gián tiếp
• MOV A,@R0
• Phân tích giá trị R0, xem thanh ghi R0 trỏ địa chỉ
nào, copy giá trị trong ô địa chỉ đó vào A
• Ví dụ R0 = 40h, trong ô 40 h chứa 1A, do vậy A
sẽ chứa 1 A
• Dùng trong bộ nhớ RAM trong, không truy cập
được các thanh ghi đặc biệt
Electrical Engineering
34
External Direct
• Truy cập bộ nhớ ngoài
• MOVX A,@DPTR
– Nạp vào A...
 

Các chủ đề có liên quan khác

Top