Trả lời: - Một hệ vi xử lý là một mạch tích hợp chứa hàng ngàn,,thậm chí hàng triệu transistor LSI,VLSI được kết nối với nhau - -Các transistor ấy cùng nhau làm việc để lưu trữ và xử lý
Trang 1TRƯỜNG ĐẠI HỌC GIAO THÔNG VẬN TẢI
KHOA ĐIỆN – ĐIỆN TỬ
ĐỀ CƯƠNG ÔN TẬP
KỸ THUẬT VI XỬ LÝ
HÀ NỘI
Tháng 7 năm 2016
Trang 2Mục Lục
A Lý thuyết 2
Câu 1: 2
Câu 2: 2
Câu 3: 4
Câu 4: 5
Câu 5 6
Câu 6: 7
Câu 7 8
Câu 8 8
Câu 9 8
B Bài tập phối ghép VXL 8088 với 8255A 8
Câu1 8
Câu 2: 10
Câu 3: Một số bài tập khác tương tự như 2 bài tập trên 11
C Bài tập thiết kế phần cứng và viết chương trình Phần MCS - 51 11
Câu 1: 11
Câu 2: 14
Câu 3 16
Câu 5: 19
Câu 6: 21
Trang 3ĐỀ CƯƠNG ÔN TẬP MÔN KỸ THUẬT VI XỬ LÝ
A Lý thuyết
Câu 1:
Khái niệm hệ vi xử lý? quá trình phát triển, sơ đồ cấu trúc tổng quát của Hệ
Vi xử lý Cho ví dụ minh họa và cách sử dụng vi xử lý này trên sản phẩm thực tế
Trả lời:
- Một hệ vi xử lý là một mạch tích hợp chứa hàng ngàn,,thậm chí hàng triệu transistor (LSI,VLSI) được kết nối với nhau
- -Các transistor ấy cùng nhau làm việc để lưu trữ và xử lý dữ liệu cho phép hệ vi xử lý có thể thực hiện rất nhiều chức năng hữu ích
- Chức năng cụ thể của một hệ vi xử lý được xác định bằng phần mềm có thể lập trình được
- Hệ vi xử lý đầu tiên của Intel, 4004,được giới thiệu vào năm 1971
Câu 2: Cấu trúc bên trong bộ VXL 8088? Giải thích cơ chế Pipe-lining Thế
nào là địa chỉ logic, địa chỉ vật lý? Cho ví dụ minh họa
Trả lời:
- Cấu trúc bên trong bộ VXL 8088
Addressing Unit (AU)
U
Bus Interface Unit (BU)
Prefect Queue Execution Unit (EU)
Register
Control Unit (CU)
ALU Instruction
Unit (IU)
Address
Data
Trang 4- Cơ chế Pipelining trong VXL 8088 là cơ chế xử lý xen kẽ dòng lệnh Trong cơ chế này CPU được chia thành 2 khối và được phân chia công việc rõ rang, BIU đọc mã lệnh, còn EU giải mã lệnh và thực hiện lệnh Khi EU đang thực hiện lệnh trước thì BIU đã tìm và lấy lệnh sau vào CPU từ bộ nhớ và lưu trữ nó ở PQ Hai khối BIU và EU có khả năng làm việc độc lập với nhau và trong hầu hết trường hợp có sự trùng lặp thời gian thực hiện lệnh trước và lấy lệnh sau và như vậy có thể coi thời gian lấy lệnh xấp xỉ bằng 0 vì EU chỉ việc thực hiện lệnh lấy sẵn bởi BIU Điều này làm tăng tốc độ máy tính lên đáng kể Đối với các VXL thế hệ sau cơ chế này ngày càng được phát triển bằng cách tăng số lượng các bước thực hiện thậm chí cả thay đổi về cấu trúc nhằm mục đích nâng cao tốc độ của bộ VXL
- Bộ VXL thực hiện các lệnh theo các bước sau:
+ Lấy lệnh từ bộ nhớ
+ Đọc toán hạng (nếu lệnh yêu cầu)
+ Thực hiện lệnh
+ Ghi kết quả
Trang 5Mov AX,[021Bh][BX] Mov [0110h],CL
Mov [SI+0C12h], DL Mov AL, [0AC2h]
+ Chế độ địa chỉ gián tiếp qua thanh ghi (register indirect addressing mode)
VD:
MOV AL, [BX]: chuyển nội dung ô nhớ có địa chỉ DS:BX vào AL
F1 D1 E1 F2 D2 E2 F3 D3 E3
Trang 6MOV [SI], BL: chuyển nội dung BL vào ô nhớ có địa chỉ DS : SI MOV [DI], CX: chuyển nội dung CX vào 2 ô nhớ lien tiếp có địa chỉ: DS:DI và DS:(DI+1)
+ Chế độ địa chỉ tương đối cơ sở (base relative addressing mode)
+ Chế độ địa chỉ tương đối chỉ số (Indexed relative addressing mode) VD:
MOV DX,[SI] +10 : chuyển nội dung 2 ô nhớ liên tiếp có địa chỉ DS:[SI +10] và DS:[SI+11] và DX
MOV CL, [DI]+7: chuyển nội dung ô nhớ DS :( DL +7) vào CL + Chế độ địa chỉ tương đối chỉ số cơ sở (Base indexed relative addressing mode)
Cấu trúc và cách mã hóa lệnh cho VXL Intel 8086
+ Bên trong VXL các lệnh được mã hóa như sau :
Ta xét lệnh
MOV Dest.Souree ; D = đích, S= nguồn Dung để chuyển đổi dữ liệu giữa 2 thanh ghi hoặc giữa 2 ô nhớ và thanh ghi
Câu 4: Trình bày cấu trúc khung chương trình ASSEMBLY trên PC cho vi xử
lý x86 ? Cho ví dụ minh hoạ So sánh chương trình *.com và *.exe
Trả lời:
Cấu trúc khung chương trình ASSEMBLY
Khai báo sử dụng quy mô bộ nhớ
Cú pháp:
MODEL Kiểu_kích_thước_bộ_nhớ
Khai báo đoạn ngăn xếp
Trang 7Cú pháp
.STACK Kích_thước (tính theo byte)
Khai báo đoạn dữ liệu
Cú pháp
.DATA
CR EQU 0Dh
LF EQU 0Ah MSG DB “Hello”
MASK EQU 11000101B Khai báo đoạn mã (chứa lệnh của chương trình)
+ So sánh chương trình *.com và *.exe
Chương trình hợp ngữ dịch ra file*.ÊXE có đầy đủ các đoạn Chương trình hợp ngữ viết dịch ra file *.COM là chương trình ngắn gọn và đơn giản hơn nhiều so với chương trình hợp ngữ dịch ra file *.EXE, trong đó các đoạn mã, đoạn dữ liệu và đoạn ngăn xếp được gộp lại trong 1 đoạn duy nhất là đoạn mã
Câu 5. Sơ đồ khối của vi mạch nhớ, các nhóm chân tín hiệu? Có những phương
pháp giải mã địa chỉ cho bộ nhớ nào? Lấy ví dụ minh hoạ
Trang 8Trả lời
- Các nhóm chân tín hiệu
+ Các dây địa chỉ và bộ giải mã địa chỉ (A0 – An-1)
+ Các dây dữ liệu và bộ đếm dữ liệu (d0 – dm-1)
+ Các đường điều khiển (𝐶𝑆̅̅̅̅, 𝑂𝐸̅̅̅̅, 𝑊𝐸̅̅̅̅̅ )
- Phương pháp giả mã địa chỉ cho bộ nhớ
+ Phương pháp giải mã cho ROM và SRAM
+ Phương pháp giải mã cho vi mạch cho DRAM và cấu trúc của IC
- Phối ghép VXL với các cổng đơn giản
+ phối ghép bộ VXL với BUS
IC nhớ Giải
Mã Địa Chỉ
Mảng nhớ (ma trận nhớ- Memory matric)
Đệm dữ liệu
Điều Khiển
Trang 98086 cũng như 8088 đều sử dụng phương pháp dồn kênh tín hiệu
Do đó để tách các tín hiệu địa chỉ, người ta dùng các mạch chốt ngoài, thường là các thanh ghi chốt (74LS373)
Để nâng cao khả năng tải của BUS, và cách ly bộ vi xử lý với BUS
ta sử dụng các bộ đẹm BUS có đầu ra 3 trạng thái
Các bộ VXL 8086 cũng như 8088 đều sử dụng mạch dao động ngoài dùng IC dao động 8284
Cả 8086 và 8088 đề hoạt động trong chế độ MIN hay MAX
+chế độ MIN MAX trang( 61+62) quyển 1 x86
Câu 7. Tổ chức bộ nhớ cho hệ 8088 trong chế độ MAX với các yêu cầu sau::
- Bộ nhớ RAM có dung lượng 8Kx8 bit có địa chỉ đầu là 00000h, sử dụng
các IC nhớ SRAM 2K×8 bit
- Bộ nhớ ROM có dung lượng 64K×8 bit có địa chỉ kết thúc FFFFFh, sử dụng các IC nhớ EEPROM 16K×8 bit
Giải: Xem giáo trình trang 68, 69, 70
Câu 8. Tổ chức bộ nhớ cho hệ 8088 trong chế độ MIN với:
- Bộ nhớ RAM có dung lượng 16Kx8 bit từ các IC nhớ SRAM 4K×8 bit,
sao cho bộ nhớ RAM nằm trong vùng thấp nhất của không gian địa chỉ
- Bộ nhớ ROM có dung lượng 8K×8 bit có địa chỉ nằm trong vùng cao nhất của Không gian địa chỉ, sử dụng các IC nhớ EEPROM 2Kx8 bit Giải: xem trang 71, 72, 73
Câu 9
Thế nào là ngắt vi xử lý? Phân loại ngắt VXL Intel 8086 Cách thi hành một lệnh INT như thế nào? Cho ví dụ minh họa minh hoạ
Giải: xem từ trang 141 ^ ^ Dài quá ngại chép Hề !
B Bài tập phối ghép VXL 8088 với 8255A
Câu1. Vẽ cấu hình và lập trình định nghĩa chế độ 0 (mode 0) cho 8255A ghép
nối với vi xử lý Intel 8088, làm nhiệm vụ đọc dữ liệu có tại PB rồi đưa ra
PA, sau đó đọc dữ liệu từ PCU và đưa ra PCL Cho địa chỉ cơ sở (PA) là 60H
Giải:
I/O mode => D7 = 1
Trang 11Viết đoạn mã chương trình để phát ra 16 xung với T = 100ms, độ rộng 50% ra bit PC5 của 8255A Giả thiết đã có sẵn chương trình trễ 25ms là
Chương trình:
MOV AL, 09H
Trang 12PC5OFF EQU 0AH; từ điều khiển để PC5 = 0 (off):00001010B
Chương trình:
Mov CX, 10H CLI
Out PC, AL Call DELAY Mov AL, PC5OFF Out PC, AL Call DELAY LOOP Lap STI
Câu 3: Một số bài tập khác tương tự như 2 bài tập trên
C Bài tập thiết kế phần cứng và viết chương trình Phần MCS - 51
Câu 1: Thiết lập sơ đồ phần cứng và viết chương trình điều khiển động cơ một chiều loại nhỏ, điều khiển trực tiếp thông qua các phím bấm nối chân vi xử lý
AT89C51 như sau:
- Bấm phím P3.7: Động cơ quay thuận
- Bấm phím P3.6: Động cơ quay nghịch
- Bấm phím P3.5: Động cơ dừng
Kết nối 3 led đơn Xanh, Vàng, đỏ hiển thị chế độ hoạt động tương ứng
Giải:
Trang 13a Sơ đồ phần cứng
Hình1
Trang 15- Bấm phím P3.5: Động cơ quay thuận
- Bấm phím P3.6: Động cơ quay nghịch
- Bấm phím P3.7: Động cơ dừng
Trang 16Kết nối 3 led đơn Xanh, Vàng, đỏ hiển thị chế độ hoạt động tương ứng
mov p0,#00000011b acall delay
mov p1,#11111011b acall delay
start1:
jb p3.6,start2 chay_nghich:
mov p0,#00001100b acall delay
mov p1,#11111101b acall delay
start2:
jb p3.7,start dung:
mov p0,#00000101b acall delay
mov p1,#11111110b acall delay
sjmp start
delay:
mov r0,#0ffh loop:
mov r1,#0ffh djnz r1,$
djnz r0,loop ret
Trang 17end
Câu 3. Thiết kế sơ đồ phần cứng và ghép nối vi xử lý AT89C51 với 4 LED 7
thanh Viết chương trình hiển thị số 1234 trên 4 LED 7 thanh đó
acall delay1ms
mov a,#2 movc a,@a+dptr mov p2,a
acall delay1ms
Trang 18mov a,#3 movc a,@a+dptr mov p3,a
acall delay1ms
mov a,#4 movc a,@a+dptr mov p1,a
acall delay1ms
led7thanh:
DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H
delay1ms:
mov r1,#100 loop:
nop nop nop nop nop nop nop nop djnz r1,loop ret
end
Câu 4: Thiết lập sơ đồ phần cứng và viết chương trình sử dụng vi xử lý
AT89C51 tạo một đồng hồ đếm thời gian, đếm lùi từ 99 về 00, hiển thị trên 2 LED 7 thanh, 1s/1 nhịp
Giải:
a Sơ đồ phần cứng
Trang 20Câu 5: Thiết lập sơ đồ phần cứng và viết chương trình sử dụng vi xử lý
AT89C51 tạo một đồng hồ đếm thời gian, đếm tiến từ 00 đến 99, hiển thị trên 2 LED 7 thanh, 1s/1 nhịp
Trang 21mov r4,#0 hangchuc:
inc r4 mov a,r4 dec a
movc a,@a+dptr mov p0,a
acall hangdonvi mov a,r4
cjne a,#10,hangchuc sjmp start
hangdonvi:
mov r5,#0 hangdonvi1:
inc r5 mov a,r5 dec a
movc a,@a+dptr mov p2,a
acall delay1s mov a,r5 cjne a,#10,hangdonvi1 ret
led7thanh:
DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H
; 0 1 2 3 4 5 6 7 8 9
delay1s:
mov r1,#10 loop1:
mov r2,#100 loop2:
mov r3,#100 loop3:
nop
Trang 22nop nop nop nop nop nop nop djnz r3,loop3 djnz r2,loop2 djnz r1,loop1 ret
end
Câu 6: Thiết lập sơ đồ phần cứng ghép nối 8 LED đơn với cổng P1 của vi xử lý
AT89C51 và 1 phím bấm nối chân P3.2 Viết chương trình quét trạng thái
của phím bấm, khi bấm phím thì sang 8 LED, khi không bấm thì tắt 8
LED trên
Giải:
a Sơ đồ phần cứng
b Chương trình
Trang 23#include <sfr51.inc>
org 000h
ljmp main org 03h
ljmp ngat org 40h
main:
mov sp,#5fh setb ex0 setb ea main_loop:
mov p1,#0ffh acall delay sjmp main_loop ngat:
mov p1,#0 acall delay reti
delay: mov r1,#250
dl1: mov r2,#1
djnz r2,$
djnz r1,dl1 ret
end