Trang 1 Giới thiệu chungSách tham khảo:Tống Văn On, Họ vi điều khiển 8051.. Trang 16 2.1.8 Các thanh ghi khácThanh ghi địa chỉ bộ nhớ MAR: chứa địa chỉ mà vi xử lý cầnđến trong việc đọc
Trang 1Giới thiệu chung
Sách tham khảo:
Tống Văn On, Họ vi điều khiển 8051 NXB: Lao Động - 2001 Phạm Quang Huy & Nguyễn Trọng Hiếu, Vi điều khiển và Ứng dụng Ardunio dành cho người tự học NXB: Bách khoa Hà Nội -2015.
Bài giảng Kĩ thuật Vi xử lý, Lê Trung Dũng
Đường link giới thiệu:
https://sites.google.com/site/dung80/Home/introduction
https://sites.google.com/site/machdientu/
https://www.facebook.com/electricalengineeringTLU
Trang 41.1 Khái niệm vi xử lý
Vi xử lý là một vi mạch tích hợp rất lớn (VLSI- Very Large
Scale Integrated circuit)
Vi xử lý đa năng (general-pupose microprocessors): các thànhphần chủ yếu cho tính toán
Vi điều khiển (microcontrollers): chứa cả phần tính toán, bộnhớ và các cổng vào ra
Trang 51.2 Những đặc điểm cấu trúc
Công suất của bộ vi xử lý :
Độ dài từ : 4-bit, 8-bit, 16-bit, 32-bit, 64-bit
Khả năng đánh địa chỉ : thông thường phụ thuộc vào thanhghi địa chỉ (address register) Với bộ xử lý 8-bit, thanh ghi địa
Trang 82.1 Sơ đồ cấu trúc
Hình: Sơ đồ cấu trúc của đơn vị xử lý trung tâm theo kiến trúc Von
Neumann
Trang 92.1.1 Đơn vị điều khiển CU
Đưa ra ngoài CPU các tín hiệu điều khiển để tác động đến
việc trao đổi dữ liệu;
Đưa ra các tín hiệu điều khiển bên trong CPU, tác động đếnALU thực hiện các nhiệm vụ cụ thể
Trang 102.1.2 ALU
Có thể thực hiện các chức năng:
ADD: cộng, SUB: Trừ;
AND, OR, XOR;
Shift Right, Shift Left;
2s Complement: Bù nhị phân;
Increment, Decrement
Trang 112.1.3 Thanh ghi tích lũy A: Accumulator
Tham gia vào phần lớn các phép tính;
Cất trữ toán hạng hoặc kết quả phép tính của ALU;
Ví dụ X = 25 + 30
25 Ñ A
30 nằm ở một ô nhớ nào đó;
X = 25 + 30 Ñ A (X thay thế cho 25)
Trang 132.1.5 Thanh ghi trạng thái
Trang 142.1.6 Con trỏ ngăn xếp SP
Bộ nhớ có cơ chế truy nhập kiểu LIFO
CALL: gọi chương trình con
PUSH: đẩy vào ngăn xếp
RET: trở về từ chương trình con
POP: phục hồi từ ngăn xếp
Trang 152.1.7 Thanh ghi đa năng
Chứa các toán hạng để thực hiện các phép tính số học, logic,dịch bit
Có thể kết hợp thành các cặp thanh ghi để thao tác như là
các thanh ghi có độ dài lớn hơn
Trang 17Tổ chức bus bên trong vi xử lý 8 bit
Trang 18Phân loại
Tổ chức vào ra có thể phân loại như sau:
Đầu vào/ra lập trình (Programmed I/O),
Đầu vào/ra theo ngắt (Interrupt I/O),
Truy cập bộ nhớ trực tiếp (Direct Memory Access)
Trang 192.3.1 Vào/ra lập trình
Vi xử lý giao tiếp với thiết bị ngoài thông qua thanh ghi đượcgọi là cổng vào/ra
Từng bit riêng lẻ có thể lập trình là đầu vào hay đầu ra,
Toàn bộ bit trên một cổng có thể lập trình là vào hay ra
Trang 202.3.1 Vào/ra lập trình không/có điều kiện
Không điều kiện : vi xử lý có thể trao đổi dữ liệu với thiết bịngoài bất kì lúc nào
Có điều kiện : Vi xử lý trao đổi dữ liệu với thiết bị ngoài
thông qua cơ chế bắt tay (handshaking)
Bit 7
Bit 0
Bit 0 Bit 2
Output Enable Conversion complete Start
Trang 212.3.2 Vào/ra ngắt
Thiết bị ngoại vi kết nối và trao đổi dữ liệu với vi xử lý
Để cập nhật kịp thời, thiết bị kết nối chủ động với vi xử lý
qua hệ thống ngắt (INT)
Trang 22Module IO đưa ra tín hiệu ngắt đến CPU,
CPU yêu cầu đọc dữ liệu,
Module IO chuyển dữ liệu tới CPU
Trang 23Phức tạp nếu viết chương trình bằng ngôn ngữ cấp thấp,
Khó để phối hợp tốt với nhau,
Thường được hệ điều hành hay các các nhà sản xuất phần
cứng hỗ trợ
Trang 242.3.2 Vào/ra ngắt
IR0 IR1 IR2 IR3 IR4 IR5 IR6 IR7
Device 00 Device 01
Device 07
Slave Interrupt Controller 1
IR0 IR1 IR2 IR3 IR4 IR5 IR6 IR7
Device 08 Device 09
Device 15
Salve Interrupt Controller 2
IR0 IR1 IR2 IR3 IR4 IR5 IR6 IR7
Master Interrupt Controller
INT INTR
Microprocessor
Trang 252.3.2 Vào/ra ngắt
Cách thức xử lý ngắt:
Polled technique: Vi xử lý trả lời một ngắt bằng cách xử lý
một quy trình dịch vụ chung cho tất cả các thiết bị
Daisy chain technique: Bộ vi xử lý tạo ra tín hiệu xác nhận
ngắt (INTA) ở mức ưu tiên cao nhất
Trang 272.3.2 Vào/ra ngắt
Daisy Chain Interrupts
Vi xử lý tạo một tín hiệu ngắt INTA có mức ưu tiên cao nhất,Nếu thiết bị có ngắt thì nó sẽ chấp nhận INTA,
Nếu thiết bị không có ngắt thì tín hiệu INTA sẽ được chuyểnqua thiết bị tiếp theo
Nếu được chấp nhận, dữ liệu sẽ được chuyển tới phần cứngtạo vecto địa chỉ ngắt và chuyển tới vi xử lý
Device 1 Device 2 Device N INTA
INT
Vi xử lý
Trang 282.3.3 Truy nhập bộ nhớ trực tiếp DMA
Là kỹ thuật truyền dữ liệu giữa bộ nhớ máy tính và thiết bị vào/rakhông cần sự can thiệp của vi xử lý
Kỹ thuật DMA sử dụng chip điều khiển DMA,
Bộ điều khiển DMA có ít nhất ba thanh ghi:
Thanh ghi địa chỉ: chứa địa chỉ bắt đầu của dữ liệu,
Thanh ghi đếm đầu cuối, chứa khối dữ liệu cần trao đổi,
Thanh ghi trạng thái, chứa thông in như quá trình trao đổi dữ liệu đã hoàn thành.
Trang 292.3.3 Truy nhập bộ nhớ trực tiếp DMA
Thiết bị vào/ra yêu cầu hoạt động DMA thông qua DMA request.
DMA Controller chip kích hoạt chân HOLD yêu cầu vi xử lý giải phóng Bus,
Vi xử lý gửi tín hiệu qua HLDA (HOLD Acknowledge) trở lại DMA Controller thông báo Bus đã bị khóa, DMA Controller thay thế giá trị hiện tại của thanh ghi nội, trên Bus hệ thống và gửi DMA ACK tới thiết bị.
RAM
Address lines Address lines Address lines
Data lines Data lines Data lines
Data lines HOLD
HOLD
HLDA
HLDA CS
Decoding logic
CS
RS INT
INT HLDA HOLD Data Bus Address Bus
I/O Device
DMA Request
DMA Controller Chip
Vi xử lý INT
Trang 30Bộ nhớ
Bộ nhớ là nơi chứa những chỉ dẫn và dữ liệu để vi xử lý hoạt động.Phân loại theo phân tầng
Bộ nhớ cấp vi xử lý: thanh ghi lưu trữ kết quả tạm thời;
Bộ nhớ chính: nơi lưu trữ chương trình thực thi: ROM, RAM;
Bộ nhớ thứ cấp hay được gọi là bộ nhớ ảo: ổ cứng
Trang 31Phân loại bộ nhớ
Phân loại theo kiểu truy cập
Bộ nhớ truy cập ngẫu nhiên RAM (Random Access Memory);
Bộ nhớ truy cập tuần tự SAM (Seqential Access Memory);
Bộ nhớ chỉ đọc ROM (Read Only Memory)
Trang 32Phân loại bộ nhớ
Phân loại theo khả năng duy trì dữ liệu
Bộ nhớ không ổn định (Volatile memory);
Bộ nhớ ổn định (Nonvoltatile memory)
Trang 34Phân loại bộ nhớ
Trang 35Dải địa chỉ
“ 65.536hay 64K bytes bộ nhớ
ra
bộ nhớ
Trang 36Giao tiếp với RAM chip
Trang 37Thiết kế bộ nhớ chính
Kỹ thuật chính để kết nối vi xử lý với ROM/RAM chip
Giải mã tuyến tính (Linear decoding)
Giải mã đầy đủ (Full decoding)
Trang 38Linear Decoding
Giả thiết cần thiết kế 4k SRAM bằng các chip 1K SRAM
Dùng A9-A0 để truy xuất 1K SRAM
Dùng A13-A10 để lựa chọn chip
3800-3BFF3400-37FF2C00-2FFF1C00-1FFF
IIIIIIIV
Trang 39Linear Decoding
Thiết kế 4k SRAM bằng các chip 1K SRAM
CS2 Chip RAM I
CS2 Chip RAM I
CS2 Chip RAM I
Chip RAM I 10
10 10
10 10
Dải địa chỉ (Hex) Chip SRAM 3800-3BFF 2C00-2FFF
I II III IV
Trang 41Full Decoding
Sử dụng chip giải mã 3x8 để giải mã địa chỉ
CS2 Chip RAM I
CS2 Chip RAM I
CS2 Chip RAM I
Chip RAM I 10
10 10
10 10
Chip SRAM 0 0
I II III IV
0 1 0 0
A B C 0 1 2 3 4 5 6 7
Trang 43Giới thiệu chung
Intel công bố vi điều khiển 8 bit 8051 năm 1980
4k ROM, 128 byte RAM, 32 I/O,
1 port truyền thông nối tiếp,
2 bộ timer,
Interrupts Control 4k bytes FlashROM 128 bytesRAM
Counter Input T0 (P3.4) T1 (P3.5) INT0
(P3.2) INT1 (P3.3)
ALE EA T0 Serial port
Trang 443.2.1 Chức năng các chân
8051
P0.7 P0.5 P0.3 P0.1
32 34 36 38
AD7 AD5 AD3 AD1
P1.7 P1.5 P1.3 P1.1
8 6 4 2
P2.7 P2.5 P2.3 P2.1
28 26 24 22
A15 A13 A11 A9
RD WR T1 INT1 TXD
17 15 13 11
P3.7 P3.5 P3.3 P3.1 VSS 20
9 31 ALE 29 30 PSEN
EA RST
VCC XTAL1
XTAL2 40
8051
1 P1.0 2 P1.1 3 P1.2 4 P1.3 P1.5 P1.7 5 7 9 RST 10 (RXD) P3.0 12 (TXD) P3.1 (INT0) P3.2 (T0) P3.4 13 15 (WR) P3.6 (RD) P3.7 XTAL1 17 19 XTAL2 20 GND
VCC 40 P0.0 (AD0) 39 P0.1 (AD1) 38 P0.2 (AD2) 37 35 33 P0.3 (AD3) P0.5 (AD5) P0.7 (AD7) 32 EA/VPP ALE/PROG 31 PSEN 30 28 26 P2.7 (A15) P2.5 (A13) 25 23 P2.3 (A11) P2.1 (A9) 22 P2.0 (A8) 21
Trang 463.2.1 Chức năng các chân
Port 1
Xuất nhập dữ liệu
Trang 483.2.1 Chức năng các chân
Port 3
Xuất nhập dữ liệu
RxD Nhận dữ liệu của cổng truyền thông nối tiếp
TxD Truyền dữ liệu của cổng truyền thông nối tiếp
Ę
INT0 Cổng vào của ngắt ngoài 0
Ę
INT1 Cổng vào của ngắt ngoài 1
T0 Cổng vào của bộ định thời/đếm 0
T1 Cổng vào của bộ định thời/đếm 1
Trang 49ALE Cho phép chốt địa chỉ khi làm việc với bộ nhớ ngoài.
Ď
EA Logic 1, thực thi chương trình trong ROM nội Logic 0,thực thi chương trình ở ROM ngoài
RST Đưa vi xử lý về trạng thái ban đầu,
XTAL1 và XTAL2 thường được nối với thạch anh tạo xung
dao động cho hệ thống vi xử lý
Trang 50(P3.2) (P3.3)INT1
ALE PSEN EA RST T0 Serial port
Trang 51Program Memory (Read Only) FFFFh
0FFFh
0003h 000Bh 0013h 001Bh 0023h
Reset INT0 TF0 INT1 TF1
RI and TI
Địa chỉ ngắt trên ROM
Trang 5200FFh Truy cập bằng định địa tiếp
Truy cập bằng định địa chỉ trực tiếp
Cấu trúc bộ nhớ dữ liệu Cấu trúc bộ nhớ trong
0080h
Cấu trúc 128 byte thấp của
bộ nhớ trong
00h 00h 0Fh
18h 10h 1Fh
2Fh 20h 30h 7Fh
4 bộ thanh
00 01 10 11
PSW
Định địa chỉ từng bit
RAM đa mục đích
Trang 53RAM đa mục đích
80 byte
32 bytes
Định địa từng bit
10 18 20 22
2F 2E 2C 2A
23 25 27 29 30
7F
Địa chỉ byte Địa chỉ bit
DPH PCON 8F 8E 8D 8C 8B 8A 89 88 TCON
TMOD TL0 TH0
97 96 95 94 93 92 91 90 P1 9F 9E 9D 9C 9B 9A 99 98 SCON
SBUF A7 A6 A5 A4 A3 A2 A1 A0 P2
AF - - ACABAA A9 A8 IE B7 B6 B5 B4 B3 B2 B1 B0 P3
- - - BCBBBA B9 B8 IP D7 D6 D5 D4 D3 D2 - D0 PSW E7 E6 E5 E4 E3 E2 E1 E0 ACC F7 F6 F5 F4 F3 F2 F1 F0 B Địa chỉ bit Địa chỉ byte FF F0 E0 D0 B8 B0 A8 A0 99
90 8D 8B 89 87 83
Trang 543.2.3 Ghép nối với bộ nhớ chương trình ngoài
Kết nối bộ nhớ EPROM 4k với vi điều khiển 8051
8051
P0.7 P0.5 P0.3 P0.1
32 34 36 38
P1.7 P1.5 P1.3 P1.1
8 6 4 2
P2.7 P2.5 P2.3 P2.1
28 26 24 22
A15 A13 RD
T1 INT1 TXD
17 15 13 11
P3.7 P3.5 P3.3 P3.1 VSS 20
9 31 ALE 29 30 PSEN
EA RST
VCC XTAL1
XTAL2 40
8282
EPROM 2732 4K
D7 D5 D3 D1
D7 D5 D3 D1
DO7 DO5 DO3 DO1
A7 A5 A3 A1
A11 A9
OE CE STB OE
VCC
GND GND
VCC
Trang 553.2.3 Ghép nối với bộ nhớ dữ liệu ngoài
Kết nối bộ nhớ dữ liệu 64k với vi điều khiển 8051
8051
P0.7 P0.5 P0.3 P0.1
32 34 36 38
P1.7 P1.5 P1.3 P1.1
8 6 4 2
P2.7 P2.5 P2.3 P2.1
28 26 24 22
WR T1 INT1 TXD
17 15 13 11
P3.7 P3.5 P3.3 P3.1 VSS
9 31 ALE 29 30 PSEN
EA RST
VCC XTAL1
XTAL2 40
D7 D5 D3 D1
D7 D5 D3 D1
Q7 Q5 Q3 Q1
A7 A5 A3 A1
A11 A9 OE LE
VCC
GND GND
VCC
A15 A13 A15 A13 A15
A13
WR RD
Trang 563.2.3 Ghép nối với bộ nhớ dữ liệu ngoài
Ghép nối vi điều khiển 8051 với ROM 64k và RAM 64k
8051
P0.7 P0.5 P0.3 P0.1
P3.5 P3.3 P3.1
P2.7 P2.5 P2.3 P2.1
WR
P1.7 P1.5 P1.3 P1.1
9 31 ALE 29 30 PSEN
EA RST
XTAL1
XTAL2 74HCT573
RAM 64K
D7 D5 D3 D1
D7 D5 D3 D1
Q7 Q5 Q3 Q1
A7 A5 A3 A1
RD
ROM 64K
D7 D5 D3 D1
A7 A5 A3 A1 A11 A9
A15 A13 A11
A9
A15 A13
OE LE
OE WR
Trang 584.1.1 Định địa chỉ thanh ghi
Dùng thanh ghi như là các toán hạng chưa dữ liệu
Ví dụ
MOV A, R0; A:=R0
ADD A, R0; A:=A + R0
Trang 604.1.3 Định địa chỉ gián tiếp
Dùng để truy xuất các ô nhớ có địa chỉ thay đổi khi chươngtrình đang chạy
Ví dụ
MOV R0, #60H; R0:=60H
LOOP: MOV @R0, #0; Xóa ô nhớ
INC R0; R0:=R0+1; tăng địa chỉ
CJNE R0, #80H, LOOP; Nếu R0 = #80H thì tiếp tục.
Trang 624.1.5 Định địa chỉ tương đối
Được dùng cho các lệnh nhảy ngắn với bước nhảy là một giátrị 8 bit có dấu (-127 ˜ +127)
Trang 634.1.6 Định địa chỉ tuyệt đối
Dùng cho các lệnh ACALL và ẠJMP tới vị trí được thể hiệnbằng 2 byte, được chia thành 5 bit + 11 bit, tương đương
64K bộ nhớ
5 bit là vị trí của trang trong giới hạn trang
11 bit thể hiện vị trí chính xác trong trang 2K
Ví dụ: THERE đặt trước địa chỉ 0F46H
AJMP THERE; Lệnh nhảy có địa chỉ 0900H và 0901H
Khi này lệnh nhảy và đích nhảy nằm trong cùng 1 trang 2K(11 bit)
Trang 684.2.3 Lệnh di chuyển dữ liệu
MOV
XCH, hoán đổi dữ liệu
XCHD, hoán đổi nửa thấp của byte
MOVC, di chuyển dữ liệu trong bộ nhớ chương trình
Ví dụ
MOV R5,#25H; nạp số 25H vào thanh ghi R5
XCH A, @R0; hoán đổi nội dung A và byte có địa chỉ tại R0 XCHD A, R2; hoán đổi 4 bit thấp của A và R2
MOVC A, @A+DPTR; nạp nội dung byte có địa chỉ A+ DPTR
Trang 704.2.5 Lệnh rẽ nhánh
SJMP, LJMP, AJMP, nhảy tới nhãn vô điều kiện
ACALL, LCALL, gọi chương trình con
DJNZ, CJNE, JNC, nhảy tới nhãn có điều kiện
Ví dụ
DJNZ R7, LOOP; Nếu R7 #0 thì nhảy về LOOP
CJNE A, #03H, LOOP; Nếu A #03H thì nhảy về LOOP
JNC LOOP; Nếu cờ nhớ = 0, nhảy tới LOOP.
Trang 724.3.2 Cấu trúc chung chương trình hợp ngữ
Các thành phần cơ bản của ngôn ngữ Assembly
Labels: đánh dấu cho một đoạn lệnh
Instructions: Lệnh
Directives: Định hướng chương trình dịch
Comments: Lời chú thích
Trang 734.3.2 Cấu trúc chung chương trình hợp ngữ
ORG 00H ;(con trỏ chương trình bắt đầu từ 00h)
LJMP MAIN ; nhảy tới vị trí có nhãn là MAIN)
; (vị trí bắt đầu chương trình chính MAIN): ORG 0030H
Trang 744.3.3 Các bước lập trình cho vi điều khiển
Dùng chương trình soạn thảo để tạo file "ten_bat_ki.asm"Dùng phần mềm biên dịch hỗ trợ ngôn ngữ Assembly để tạo
dự án Phần mềm tự động tạo "ten_du_an.lst" và
"ten_du_an.obj"
Dự án có thể mở rộng bằng cách mở và kết nối nhiều file
".asm"
Biên dịch dự án sang file mã máy "ten_bat_ki.hex"
Dùng công cụ đặc biệt để nạp file mã máy vào ROM của viđiều khiển
Trang 754.3.4 Ví dụ
Từng bước thực hiện trên phần mềm MCU 8051 IDE
Trang 76Cấu trúc chương trình
To be continued