Lược đồ bộ nhớ của 8051
z Tách biệt bộ nhớ mã lệnh và dữ liệu
z Bộ nhớ mã lệnh
– Lên tới 64K (some maybe onboard) (0x0000 to 0xFFFF)
– PSEN là tín hiệu điều khiển
– Chỉ có thể dùng để lưu trữ chương trình (Read only)
z Bộ nhớ dữ liệu
– Lên tới 64K (0x0000 to 0xFFFF)
– RD/WR là các tín hiệu điều khiển
– Chỉ có thể dùng để lưu trữ dữ liệu (Read and Write)
z Bộ nhớ RAM nội
– 128 bytes 0x00 to 0x7F (includes register banks)
– SFRs 0x80 to 0xFF (not all available)
Tập lệnh của 8051
z Dịch chuyển dữ liệu - Move/Copy dữ liệu từ vùng này
đến vùng khác
mov, movc, movx, push, pop, xch, xchd
z Các lệnh logic – thực hiện các phép toán logic trên dữ
liệu
anl, orl, xrl, clr, cpl, rl, rlc, rr, rrc, swap
z Các lệnh số học - thực hiện các phép toán số học trên
dữ liệu
add, addc, subb, inc, dec, mul, div
z Điều khiển chương trình - điều khiển luồng thực hiện
của chương trình (jumps, subroutine calls)
jmp, ajmp, ljmp, sjmp, jc, jnc, jb, jnb, jbc, jz, jnz, acall, lcall, cjne, djnz,
ret, reti
z NOP
23 trang |
Chia sẻ: trungkhoi17 | Lượt xem: 543 | Lượt tải: 0
Bạn đang xem trước 20 trang tài liệu Bài giảng Microcontroller - Chương 2: Kiến trúc 8051 và giới thiệu về ngôn ngữ lập trình Assembl, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
DCE
Kiến trúc 8051 và giới thiệu về
ngôn ngữ lập trình Assembly
Microcontroller
Chapter 2
Ngo Nhu Khoa
Department of Computer Engineering
ThaiNguyen University of Technology
10/1/2005 2 DCE
Các vấn đề chính
z Kiến trúc bên trong của 8051
z Tập các thanh ghi
z Tập lệnh
z Bản đồ bộ nhớ
z Giới thiệu về ngăn xếp, SFRs
z Ngôn ngữ lập trình Assembly
10/1/2005 3 DCE
1. Kiến trúc của 8051
z Quan niệm của người lập trình
– Tập thanh ghi
– Tập lệnh
– Bản đồ bộ nhớ
z Quan niệm của người thiết kế phần cứng
– Sơ đồ chân ra
– Các đặc trưng về định thời
– Các yêu cầu về dòng/áp
10/1/2005 4 DCE
2. Tập thanh ghi
z Các thanh ghi:
– A, B, R0 đến R7 là các thanh ghi 8 bit
– DPTR : [DPH:DPL] là thanh ghi 16 bit
– PC : Con đếm chương trình (con trỏ lệnh -Instruction Ptr) là
thanh ghi 16bit
– 4 tập dãy thanh ghi R0-R7
– Thanh ghi con trỏ ngăn xếp SP
– PSW : Thanh ghi từ trạng thái (các cờ)
– SFR : Các thanh ghi chức năng đặc biệt
z Điều khiển các thiết bị ngoại vi trên board
10/1/2005 5 DCE
2.1. Các khái niệm cơ bản
z Định dạng của 1 lệnh Assembly
– Operation destination source ; comment
z Các giá trị được đặt trước bởi 1 dấu #
– VD: #55, #32,
z Các giá trị hệ 16 được ký hiệu thêm chữ cái H vào
cuối.
– VD: #55H, #32H
z Nếu ký tự đầu tiên của giá trị 16 là 1 chữ cái, thì
thêm vào trước nó ký tự số 0.
– VD: #0FFH, #0C1H, #0D2H
10/1/2005 6 DCE
2.2. Accumulator A, ACC
z Thường được sử dụng cho việc dịch chuyển dữ liệu,
thực hiện các phép toán số học và logic trên dữ liệu 8
bit.
z Ví dụ:
z mov A, R0 ;copy nội dung của R0 vào A
z push ACC ;Cất A vào ngăn xếp
z mov A, #10 ;A ← 10
z mov B, A ;B ← A
z mov A, 10 ;A ← mem(10)
z mov A, 0xFF ;A ← 0xFF
z mov A, 0FFH ;như trên24
10/1/2005 7 DCE
2.3. B Register
z Thường được sử dụng như là 1 thanh ghi nháp, có thể
xem như thanh ghi thứ 9 trong tập thanh ghi R
z Được sử dụng trong 2 mã lệnh:
mul AB, div AB
– Thanh ghi B lưu toán hạng thứ 2 và sẽ lưu giữ 1 phần kết quả:
– 8bits cao của kết quả sau phép nhân
– Phần dư của phép chia
10/1/2005 8 DCE
2.4. R0 to R7
z Tập 8 thanh ghi R0, R1, R7, mỗi thanh ghi có độ
rộng 8 bit
z Được sử dụng rộng rãi như là các thanh ghi nháp
z Có mặt ở cả 4 dãy (effectively 4x8 registers)
z Mỗi dãy được chọn nhờ thiết lập các bit RS1:RS0
trong thanh ghi từ trangh thái PSW
z Dãy ngầm định (khi bật nguồn) là dãy 0 (bank0)
z Ví dụ:
mov R0, A ;R0 ← A
mov A, R0 ;A ← R0
mov R1, #45 ;R1 ← 45
10/1/2005 9 DCE
2.5. DPTR
z Thanh ghi 16 bit, được gọi là con trỏ dữ liệu
z Được sử dụng bởi các lệnh truy xuất đến bộ nhớ ngoài
z Có thể được sử dụng để lưu trữ các giá trị 16 bit
mov DPTR, #data16 ; setup DPTR with 16bit ext address
movx A, @DPTR ; copy mem[DPTR] to A
z Thanh ghi DPTR rất hữu dụng đối với các thao tác trên
chuỗi, trên các bảng tra
10/1/2005 10 DCE
2.6. PC
z PC là 1 con đếm chương trình
z Được xem như là con trỏ (IP) trong các bộ vi xử lý
khác.
z PC luôn trỏ đến lệnh kế tiếp trong chương trình.
z Sau khi lấy 1 lệnh (1 hoặc nhiều byte), PC tự động
được tăng lên để trỏ đến lệnh kế tiếp
10/1/2005 11 DCE
2.7. SP
z SP là con trỏ ngăn xếp, nó luôn trỏ đến đỉnh của ngăn xếp
z Lệnh push: làm tăng SP và sau đó copy dữ liệu vào ngăn
xếp.
z Lệnh pop: copy dữ liệu từ đỉnh ngăn xếp, sau đó giảm SP
z Trong 8051, ngăn xếp có hướng phát triển lên trên (từ
vùng thấp đến vùng cao của bộ nhớ) và chỉ có thể được
đặt trong bộ nhớ RAM nội.
z Khi bật nguồn, SP có giá trị là 07H
z Các dãy thanh ghi 2,3 và 4 (08H to 1FH) là vùng ngăn xếp
ngầm định.
z Ngăn xếp có thể được cấp phát lại bằng cách thiết lập SP
trỏ đến vùng nhớ cao hơn (trong vùng từ 30H đến 7FH):
mov SP, #32H
10/1/2005 12 DCE
2.8. PSW
z Thanh ghi từ trạng thái là 1 thanh ghi 8 bit, có thể địa
chỉ hoá bit “bit addressable”, mà các bit của nó là các
cờ.
z CY - Cờ nhớ (Carry Flag)
z Được lập khi có 1 số nhớ trong phép toán số học
z AC - Cờ nhớ phụ (Aux. Carry Flag): nhớ từ bit D3 sang
bit D4; được sử dụng cho phép toán BCD.
z P - Cờ chẵn lẻ (Parity Flag): P=1 nếu A có số bit 1 là
lẻ.
z OV - Cờ tràn (Overflow Flag): lập nếu bất kỳ phép toán
số học nào gây ra 1 kết quả tràn.
10/1/2005 13 DCE
Flags - Illustration
z Ví dụ phép cộng:
mov A, #38h
add A, #2Fh
38h 0011 1000
+ 2Fh 0010 1111
--------- ---------------
67 0110 0111
--------- ---------------
z CY = 0
z AC = 1
z P = 1
10/1/2005 14 DCE
2.9. SFRs
z Điều khiển sự vận
hành của các thiết bị
ngoại vi trên board
z Các thanh ghi chức
năng đặc biệt ở địa
chỉ trực tiếp 80H đến
FFH
z Các dòng 8051 có
thể có thêm các
thanh ghi chức năng
đặc biệt khác.
z Tất cả các thanh ghi
đều có 1 địa chỉ
10/1/2005 15 DCE
3. Lược đồ bộ nhớ của 8051
z Tách biệt bộ nhớ mã lệnh và dữ liệu
z Bộ nhớ mã lệnh
– Lên tới 64K (some maybe onboard) (0x0000 to 0xFFFF)
– PSEN là tín hiệu điều khiển
– Chỉ có thể dùng để lưu trữ chương trình (Read only)
z Bộ nhớ dữ liệu
– Lên tới 64K (0x0000 to 0xFFFF)
– RD/WR là các tín hiệu điều khiển
– Chỉ có thể dùng để lưu trữ dữ liệu (Read and Write)
z Bộ nhớ RAM nội
– 128 bytes 0x00 to 0x7F (includes register banks)
– SFRs 0x80 to 0xFF (not all available)
10/1/2005 16 DCE
3. Lược đồ bộ nhớ của 8051()
10/1/2005 17 DCE
3. Lược đồ bộ nhớ của 8051()
z Internal ROM is vendor dependant
z On power-up PC starts at 0000H in ROM space
z Clones may have internal memory that may be used as both
Code+Data
mov A, xxH 0xFF 0x80 SFRs
PSEN
RD, WR
Signal
movc A,@A+DPTR 0xFFFF 0x0000 Code
movx A, @DPTR 0xFFFF 0x0000 Data
mov A, xxH
mov A, @Ri
0x7F 0x00 RAM
Instruction End Start Memory
Type
10/1/2005 18 DCE
4. Tập lệnh của 8051
z Dịch chuyển dữ liệu - Move/Copy dữ liệu từ vùng này
đến vùng khác
mov, movc, movx, push, pop, xch, xchd
z Các lệnh logic – thực hiện các phép toán logic trên dữ
liệu
anl, orl, xrl, clr, cpl, rl, rlc, rr, rrc, swap
z Các lệnh số học - thực hiện các phép toán số học trên
dữ liệu
add, addc, subb, inc, dec, mul, div
z Điều khiển chương trình - điều khiển luồng thực hiện
của chương trình (jumps, subroutine calls)
jmp, ajmp, ljmp, sjmp, jc, jnc, jb, jnb, jbc, jz, jnz, acall, lcall, cjne, djnz,
ret, reti
z NOP
10/1/2005 19 DCE
4. Tập lệnh của 8051 ()
z Đọc qua toàn bộ tập lệnh
– Không phải nhớ tất cả các lệnh
– Không phải nhớ tất cả các trường hợp
– Nhớ các loại lệnh
z Khi viết chương trình
– Viết ra các thao tác cần thực hiện (bằng tiếng anh)
– Tìm kiếm trong tập lệnh để tìm lệnh tương ứng thực
hiện các công việc đó
10/1/2005 20 DCE
Assembly → Opcode
z Mỗi lệnh assembly dịch thành 1 mã lệnh nhị phân duy
nhất
– Có thể dài 1, 2 hoặc 3 bytes
– Danh sách các lệnh thường có trong tài liệu hướng dẫn lập
trình.
z Ví dụ 1: mov A, #data
2 bytes, 1 cycles
0111 0100 data8
mov A, 0xAA → 0111 0100 1010 1010 → 74 AA
z Ví dụ 2: acall address11
a10 a9 a8 1 0001 a7 a6 a5 a4 a3 a2 a1 a0
acall 0x557 → 1011 0001 0101 0111 → B1 57
10/1/2005 21 DCE
Những định hướng Assembler
z Cấu trúc lệnh Assembly:
[Nhãn:] mã lệnh [các toán hạng] [; chú thích]
[label:] opcode [operands] [;comment]
Ví dụ:
start: mov A, #D0H ;code starts here
z Những định hướng chương trình dịch chỉ thỉ cho
assembler thực hiện 1 nhiệm vụ riêng biệt
– ORG xxxxH : origin, bắt đầu chương trình tại xxxxH
– EQU : định nghĩa 1 hằng
– Ví dụ: count EQU 25
– DB : define byte, định nghĩa cấp phát cho việc lưu trữ
– DATA1: DB 28
– DATA2: DB “hello world”
– END : end of assembly file
10/1/2005 22 DCE
Assembly Example #1
z Target 8051 dev
system
z Std 8051 device
z 2K on-chip ROM
running a monitor
program
z 32K external RAM at
address 0x0000 to
0x7FFF
z This RAM is both
code and data
z First 0x30 locations in
external RAM is
dedicated for the
Interrupt Vector Table
(IVT)
ORG 0x30 ;skip the IVT area
Start: mov R0, #10
mov R1, #0A5H
mov R2, #1
mov R3, #0x20
clearA: mov A, #0 ;now A = 0
Addup: add A, R0 ;now A = A + R0
add A, R1
add A, R2
add A, R3
mov R4, A ;store sum in R4
mov DPTR, #7FFF
movx @DPTR, A ;store in ext. mem
Done: sjmp done ;loop here forever
END
10/1/2005 23 DCE
Chương 2. Ôn tập
z What are the different views/models of a uP ?
z What are the registers available in the 8051 ?
z What are the functions of the 8051 registers ?
z What is stack, PC, SFR, PSW/Flags ?
z What is an instruction set ?
z What is a memory map ? Why is it needed ?
z What is an assembly language program ? How
does it look ?
Các file đính kèm theo tài liệu này:
- bai_giang_microcontroller_chuong_2_kien_truc_8051_va_gioi_th.pdf