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ậplệnh
z Bảnđồbộnhớ
z Giớithiệuvềngăn xếp, SFRs
z Ngôn ngữlập trình Assembly
23 trang |
Chia sẻ: Mr Hưng | Lượt xem: 678 | Lượt tải: 0
Bạn đang xem trước 20 trang nội dung tài liệu Kiến trúc 8051 và giới thiệu về ngôn ngữ lập trình Assembly, để 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:
- chap2_8051_microcontroller_4599.pdf