Với những ưu điểm mà công nghệ Vi xử lý mang lại, chúng ta cần phải khai thác và phát triển nó rộng rãi hơn, để hiểu và sử dụng công nghệ này vào thực tiễn, nhóm em xin trình bày một vài
Trang 1 Giáo viên hướng dẫn:
Nhóm sv thực hiện:
Trang 2
LỜI NÓI ĐẦU
Công nghệ Vi xử lý là một trong những thành tựu khoa học đánh dấu bước ngoặt trong lịch sử về sự phát triển của ngành khoa học – công nghệ Nó đã đóng góp hàng loạt các ứng dụng và sản phẩm vào đời sống thực tiễn của con người, trên hầu hết tất cả các lĩnh vực Đặc biệt trong nền công nghiệp hóa và hiện đại hóa của nước ta
Với những ưu điểm mà công nghệ Vi xử lý mang lại, chúng ta cần phải khai thác
và phát triển nó rộng rãi hơn, để hiểu và sử dụng công nghệ này vào thực tiễn, nhóm
em xin trình bày một vài ví dụ về lập trình cho xi xử lý và cách kết nối cơ bản của nó với các thiết bị ngoại vi
Một trong những thế hệ chíp thành công nhất của hãng phát triển Intel là bộ vi xử
lý 16 bít được mang tên 8086 Nó đã mở đầu cho một thế hệ vi xử lý x86 8086 có thể quản lý đươc 1MB bộ nhớ, với tốc đô xử lý lên tới 2,5 triệu lệnh trên một giây
Sau đây chúng em xin trình bày chi tiết các bước để mọi người có thể hiểu và lợi dụng những tính năng mà Vi xử lý 8086 mang lại trong quá trình trình bày, có gì sai sótmong các thầy cô bỏ qua và góp ý để chúng em được hoàn thiện hơn trong những bài báo cáo lần sau
Nhóm sv thực hiện:
Trang 3Nhận xét và đóng góp ý kiến của giáo viên:
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
Trang 4………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
………
Chúng em xin chân thành cảm ơn!
Trang 5PHỤ LỤC:
BỘ CÔNG THƯƠNG 1
LỜI NÓI ĐẦU 2
I NỘI DUNG THỰC HIỆN 6
II MỤC ĐÍCH VÀ YÊU CẦU 6
1 Mục đích 6
2 Yêu cầu 6
III CƠ SỞ LÝ THUYẾT 7
1 Cấu trúc máy tính 7
a Khái niệm 7
b Các bộ phậncủa cấu trúc máy tính : 7
c phần cứng và phần mền 8
2 Cấu tạo và chức năng của 806 8
a Sơ đồ khối của 8086 8
Khối thực hiện lệnh (EU) 9
Khối giao tiếp bus (BIU) 11
b Sơ đồ chân của 8086 11
c Các hàm ngắt và tập lệnh của 8086 12
Tập lệnh của 8086 12
Các hàm ngắt 21h của 8086 15
3 Cấu tạo và chức năng của IC 8255A 16
4 Cấu tạo bộ giải mã 18
5 Cấu tạo và chức năng cửa IC 74LS138 19
6 Cấu tạo của LED matrix 8x8 20
IV MỘT SỐ VÍ DỤ 21
1 Phần lập trình bằn g hợp ngữ 21
a Sơ đồ thuật toán 21
b Code chương trình 22
2 Phần ghép nối bộ nhớ 24
a Xây dựng mạch 24
b Mạch ghép nối bộ nhớ 26
3 Thiết kế sản phẩm 26
a Phân tích đề bài và cách chọn cách ghép nối 27
b mạch ghép nối 27
c Sơ đồ thuật toán 28
d Code chương trình 28
V KẾT LUẬN 29
Trang 6I NỘI DUNG THỰC HIỆN
1 Viết chương trình thực hiện phép toán AX = n! (0 < n < 10), n được nhập vào từbàn phím, sau đó hiển thị kết quả dưới dạng số thập phân
2 Xây dựng bộ nhớ dung lượng 16KB từ các vi mạch nhớ RAM (1Kx4) và 6 vimạch nhớ ROM(2Kx8)
3 Thiết kế mạch ghép nối giữa bộ vi xử lý 8086 và 8255 với các địa chỉ của cổng
PA, PB, PC, thanh ghi điều khiển lần lượt là 46h,44h,42h,40h Ghép các đèn led đơn (LED-GREEN, BLUE, …) với cổng PC theo kiểu Anodes chung Viết chương trình điều khiển các led sáng lan với thời gian trễ là 0.5s
1 Cấu trúc máy tính
a Khái niệm
Vi xử lý là một thành phần không thể thiếu của máy tính, ngoài ra để tạo ra một hệ hoàn chỉnh phải cần có các bộ phận khác như bôn nhớ, thiết bị vào/ra như bàn phím, màn hình
Trang 7b Các bộ phậncủa cấu trúc máy tính :
Bộ vi xử lý (CPU- Central Processin Unit)
Đóng vai trò như một bộ não của máy tính Đây là một vi mạch số với mức độ tích hợp cực lớn, bên trong nó bao gồm nhiều khối chức năng khác nhau như đơn vị số nguyên để thao tác tính toán với các số nguyên,
Các thông số quan trọng của một bộ vi xử lý :
+ Tần số làm việc
+ Độ rộng bus dữ liệu m
+ Độ rộng bus địa chỉ n
Bộ nhớ
Bộ nhớ được chia thành RAM và ROM:
+ RAM (Random Access Memory): là bộ nhớ có thể ghi/đọc, có nghĩa là ta có thể đọc thông tin từ bộ nhớ, xóa thông tin cũ trong bộ nhớ hoặc ghi thông tin mới vào bộ nhớ; nội dung thông tin trong RAM sẽ bị mất đi khi bị mất nguồn
+ ROM (Read Only Memory) :dùng để chứa các chương trình điều khiển hệ thống như chương trình để kiểm tra các thiết bị mỗi khi bật nguồn, chương trình khởi động máy… Nội dung bên trong ROM không bị mất đi khi bị mất nguồn
Phần cứng (hardware) là thuật ngữ dùng để chỉ toàn bộ những thiết bị cơ khí, điện
tử tạo nên máy tính như các ổ đĩa, màn hình,…
Phần mền
Phần mền (software) là thuật ngữ dùng để chỉcác chương trình máy tính, nó đượcthực thi trên phần cứng bằng cách điều khiển sự hoạt động của phần cứng
Các phần mền được chia thành các loại sau:
Hệ điều hành như DOS, Windows,…
Trình tiện ích như NC, NU, BKAV,…
Trang 8Chương trình ứng dụng như MS Word, Protel,……
Ngôn ngữ lập trình pascal, C, C++, Java,…
2 Cấu tạo và chức năng của 806
a Sơ đồ khối của 8086
- Bên trong bộ vi xử lý 8086 bao gồm 2 khối chính:
+ Khối thực hiện lệnh (EU- Execution Unit) là nơi giả mã và thi hành các lệnh+ giao tiếp bus (BIU- Bus Interface Unit) có nhiệm vụ đẩm bảo việc trao đổi thông tin giữa 8086 với các linh kiện bên ngoài
- Sau đây chúng ta sẽ tìm hiều cấu tạo bên trong của từng khối
Khối thực hiện lệnh (EU)
Khối thực hiện lệnh (EU- Execution Unit) là nơi giả mã và thi hành các lệnh
EU bao gồm:
- Bộ xử lý số học và logic(ALU - Arithmatic Logiccal Unit) là nơi thưc hiện các lệnh
số học và lệnh logic
- Các thanh ghi đa năng: Có chứa 4 thanh ghi đa năng 16 bit, mỗi thanh ghi có thể
chứa bất kì các loại dữ liệu, tuy nhiên một số công việc, các thanh ghi này lại có chức năng đặc biệt của riêng nó mà các thanh ghi khác không thực hiện được
+ Thanh ghi AX: đây là thanh ghi chứa, kết quả của các thao tác thường được chứa
ở đây Nếu kết quả là 8 bit thì thanh ghi AL sẽ được sử dụng
+ Thanh ghi BX: đây là thanh ghi cơ sở, thương được chứa địa chỉ cơ sở của một
bảng khi sử dụng lệnh XLAT
+ Thanh ghi CX: đây là thanh ghi đếm, nó thường được chứa số lần lặp lại trong
trường hợp dùng lênh LÔP, còn CL thì thường được chứa số lần quay hay dịch bít của các thanh ghi
Trang 9+ Thanh ghi DX: đây là thanh ghi dữ liệu, nó thường được sử dụng cùng với
thanh ghi AX để thực hiện các phép nhân hay chia của các số 16 bit DX còn được sử dụng để chứa địa chỉ các cổng trong các lệnh vào/ra dữ liệu trực tiếp
- Thanh ghi cờ F là một đoạn ghi đặc biệt gọi là đoạn ghi cờ hay đoạn ghi trạng thái
Mỗi bit của đoạn ghi này được dùng để phản ánh một trạng thái nhất định của kết quả phép toán do ALU thực hiện hoặc một trạng thái hoạt động của CPU Đoạn ghi
cờ có 16 bit nhưng chỉ dùng hết 9 bit làm bit cờ
Các bit cờ chia thành hai loại:
* Các cờ trạng thái: có 6 cờ trạng thái là C, P, A, Z, S và O Các cờ trạng thái
này được thiết lập bằng 1 hoặc xóa bằng 0 sau hầu hết các lệnh toán học và logic.+ C (Carry): cờ nhớ;
* Các cờ điều khiển: có 3 cờ T, I, D Các cờ này được thiết lập bằng 1 hoặc xóa
bằng 0 thông qua các lệnh để điều khiển chế độ làm việc của bộ vi xử lý
+ T (Trap): cờ bẫy,
+ I (Interrupt): cờ ngắt;
+ D (Direction): cờ hướng
- Có 3 đoạn ghi con trỏ (IP, BP, SP) và 2 đoạn ghi chỉ số (SI, DI) Các đoạn ghi này
ngầm định được sử dụng làm các đoạn ghi lệch cho các đoạn tương ứng:
+ IP (Instruction Pointer), BP (Base Pointer ), SP (Stack Ponter), SI (SourceIndex): DI (Destinaton Index)
Bảng tóm tắt sự kết hợp ngầm định giữa đoạn ghi đoạn và đoạn ghi lệch:
Đoạn ghi đoạn Đoạn ghi lệch Địa chỉ
CS IP Địa chỉ lệnh sắp thực hiện
Trang 10DS BX, DI, SI Địa chỉ trong đoạn dữ liệu
SS SP hoặc BP Địa chỉ trong đoạn ngăn xếp
ES DI Địa chỉ chuỗi đích
- Khối điều khiển (CU- Control unit) Có nhiệm vụ tạo ra các tín hiệu điều khiển các
bộ phận bên trong và bên ngoài CPU
Khối giao tiếp bus (BIU)
Khối giao tiếp bus (BIU- Bus Interface Unit) có nhiệm vụ đẩm bảo việc trao đổi thông tin giữa 8086 với các linh kiện bên ngoài BIU gồm :
- Một bộ cộng để tạo địa chỉ vật lý 20 bit từ các thanh ghi 16 bit.
- Bốn thanh ghi đoạn 16 bit gồm CS, DS, SS và ES để giúp 8086 truy cập tới các
đoạn trên bộ nhớ
+ Thanh ghi đoạn mã CS (Code Segment),.
+ Thanh ghi đoạn dữ liệu DS (Data Segment).
+ Thanh ghi đoạn dữ liệu phụ ES (Extra Segment).
+ Thanh ghi đoạn ngăn xếp SS (Stack Segment) .
- Mạch logic điều khiển có nhiệm vụ đảm bảo giao tiếp giữa 8086 với thiết bị bên
ngoài
- Hàng đợi lệnh có độ dài 6 byte là nơi chứa các mã lệnh đọc được nằm sẵn để chờ
EU xử lý
Trang 11b. Sơ đồ chân của 8086
c
Vi xử lý 8086 được thiết kế để hoạt động một trong hai chế độ, tùy thuộc vào mức điện áp đặt ở chân số 33 (chân MN/MX):
- Chế độ tối thiểu (chế độ MIN) đươc thiết lập nếu điện áp ở chân số 33 ở mức 5V là
chế độ tong hệ thống chỉ có 8086 và các vi mạch nhớ , các vi mạch ghép nối vào ra
- Chế độ tối đa (chế độ MAX) được thiết lập nếu điện áp ở chân số 33 ở mức 0V, là
chế độ áp dụng cho hệ thống đa xử lý, đồng xử lý (8086 và bộ đồng xử lý toán học
8087)
Chức năng của các chân như sau:
+ Chân ALE của 8086 là chân cho phép chốt địa chỉ, là một xung nâng lên mức 1 để
báo cho mạch ngoài biết có một địa chỉ hợp lệ trên bus Vì vây nó sử dụng làm xung clock cho mạch tách tín hiệu địa chỉ Do IC tách tín hiệu địa chỉ có xung clock tích cựcsườn âm, vì vậy trước khi đưa vào chân clk của IC 74LS273, ta phải cho qua cổng NOT để đảo tín hiệu
+ Chân M/IO: báo cho mạch điện bên ngoài biết bộ nhớ hoặc thiết bị vào ra được nối
với bus Múc 0 báo cho các mạch ngoài biết thiết bị vào ra đang được sử dụng vì vậy, chân này được nối với mạch giải mã địa chỉ
+ Chân RD và WR: điều khiển việc đọc dữ liệu từ thiết bị ngoại vi vào VI Xử LÝ hay
la lấy dữ liệu từ bộ vi xử lý ra ngoài của 8255A
+ Chân MN/MAX: nối với Vcc để chọn chế độ MN cho vi xử lý.
Trang 12+ Chân DEN: dùng để báo có dữ liệu hợp lệ trên BUS bởi mức Logic 0 Nó thường
được đưa tới điều khiển vi mạch đệm dữ liệu
+ chân DT/R: dùng để báo hướng truyền dữ liệu trên BUS Khi nó ở mức kogic 1 trong
suốt một phần truyền dữ liệu của BUS sữ liệu thì BUS dữ liệu ở chế độ truyền Ngượclại, mức logic 0 thì chân này báo hiệu rằng BUS đang ở chế độ nhận
+ Chân BHE: đùng để bảo rằng đang truy cao hay băng thấp BHE=0 báo hiệu đang
truy cập băng cao của bộ nhớ Ngược lại mưc logic 1 đang báo đang truy cập băng thấp của bộ nhớ
+ chân INTR: là chân đầu vào của 8086 Nếu nó có mức logic 1 thì báo hiệu cho một
yêu cầu ngắt tích cực khi yêu cầu được CPU biết, nó sẽ báo cho thiết bị ngoài với mứclogic 0 ở đầu ra INTA đảo
+ chân TEST: khi mức logic ở chân này ở mức 1, CPU sẽ treo hoạt động của mình và
chuyển đến một trạng thái có thể hiểu là trạng thái nghỉ - nó sẽ không thực hiện lệnh – cho đến khi đầu vào này trở về mức 0
+ chân RESET: đầu vào RESET được sử dụng để thiết lập lại phần cứng cho CPU
Chuyển chân này xuống mức logic 0 để khởi tạo lại các thanh ghi nội của vi xử lý và khởi tạo lại các chương trình con phục vị thiết lập hệ thống
+ Vi xử lý 8086 có 20 đường địa chỉ từ A0 đến A19 tong đó 16 đường dây địa chỉ thấp
từ A0 đến A15 được ghép kênh dữ liệu từ D0 đến D15 trên các chân từ AD0 đến AD15 còn 4 đường dây địa chỉ cao nhất từ A16 đến A19 được ghép kênh với tín hiệu trạng thái từ S3 đến S6 trên các chân A16/S3 đến A19/S6
+ Lệnh XLAT: XLAT nhan_nguồn
+ Lệnh ADD, SUB: ADD dich,nguon - cong nguon vao dich
+ Lệnh ADC: cờ nhớ được cộng vào toán hạng đích và nguồn
ADC dich,nguon
+ Lệnh DIV: thực hiện phép chia không dấu, toán hạng nguồn có thể là một ô nhớ
hay đoạn ghi Nếu toán hạng nguồn là 8 bit thì thương số nằm trong AL, số dư nằm trong AH; nếu toán hạng nguồn là 16 bit, thì thương số nằm trong AX còn số dư nằmtrong DX
DIV nguon;
+ Lệnh IDIV (integer divide): thực hiện phép chia có dấu.
Trang 13+ Lệnh MOV: chuyển dữ liệu từ toán hạng nguồn vào toán hạng đích
+ Lệnh OUT: xuất dữ liệu từ đoạn chứa ra cổng
+ Lệnh IN: đọc dữ liệu từ cổng vào đoạn ghi
IN đoạnghi, cong
+ Lệnh NEG (NEGate): toán hạng đích bị trừ đi từ số toàn chữ số 1 (0FFH với kiểu
byte và 0FFFFH với kiểu từ)
NEG dich;
+ Lệnh SBB (SuBtract with Borrow): Trừ có nhớ Trừ toán hạng đích cho toán hạng
nguồn và nếu CF=1 thì trừ kết quả nhận được cho 1
+ Lệnh MUL(Multiply): thực hiện phép nhân không dấu Nhân nội dung của đoạn
AL với toán hạng nguồn Nếu nguồn kiểu byte thì tích chứa trong AX, nếu nguồn là kiểu từ thi tích chứa trong DX:AX
+ Lệnh JNZ: nếu KQ của lệnh trước đó khác 0 thi thực hiện lệnh nhảy đến
nhãn_đích, ngược lại thì thực hiện lệnh kế tiếp sau đó
JNZ nhan_dich;
+ Lệnh JA, JG: nhảy nếu lớn hơn
+ Lệnh JB, JL : nhảy nếu nhỏ hơn.
+ Lệnh JNA, JNG: nhảy nếu không lớn hơn.
+ Lệnh JE: nhảy nếu bằng.
+ Lệnh JC : nhảy nếu cờ CF=1.
+ Lệnh nhảy không điều kiện (JuMP) : nhảy đến nhãn_nguồn khi gặp lệnh này.
JMP nhan_nguon ;
+ Lệnh CMP (CoMPare) : so sánh 2 toán hạng bằng cách trừ 2 toán hạng cho nhau
mà không lưu lại két quả
Trang 14AND dich,nguon ;AND đích với nguồn, kết quả lưu ở đích
+ Lệnh dịch: SHL/SAL dich,1 ;dich sang trai 1 bit
SHL/SAL dich,CL ; dich sang trai nhieu bit
SHR dich,1 ; dich sang phai 1 bit
SHR dich,CLL ; dich sang phai nhieu bit
+ Lệnh quay: ROL/ROR dich,1 ; quay đích sang trái/phải 1 bit
ROL/ROR dich,CL ; quay đích sang trái/phải n bit, với CL=nRCL/RCR dich,1 ; quay đích sang trái/phải 1 bit
RCL/RCR dich,CL ; quay đích sang trái/phải n bit, với CL=n
+ Lệnh HLT (HaLT): đưa bộ vi xử lý vào trạng thai dừng để chờ ngắt ngoài Dạng
lệnh: HLT
+ Lệnh LOCK: khóa bus trong môi trường có nhiều bộ vi xử lý.
+ Lệnh NOP: không thực hiện một thao tác nào.
+ Lệnh STI: IF được thiết lập 1.
+ Lệnh WAIT: Bộ vi xử lý ở trạng thái chờ cho đến khi ngắt ngoài
+ Lệnh PUSH: cất dữ liệu vào ngăn xếp, giảm SP đi 2.
+ Lệnh POPF: chuyển nội dung của 2 byte từ đinh ngăn xếp vào đoạn ghi cờ, sau
đó tăng con trỏ ngăn xếp lên 2
- Hàm 1: là hàm chờ đọc vào 1 ký tự từ thiết bị vào ra chuẩn(bàn phím) Kết quả được
lưu vào trong AL
Trang 15INT 21H
- Hàm 2 : là hàm hiển thị nội dung thanh ghi DL lên màn hình hoặc thi hành các chức
năng điều khiển
Cấu trúc chương trình lập trình cho 8086
model small ;khai bao kieu bo nho la small
.stack 100h ;khai bao kich thuoc ngan xep la 100h.data ;khai bao doan du lieu
;khai báo các biến, các hằng ở đây
.code ;khai bao doan ma
3 Cấu tạo và chức năng của IC 8255A
Sơ đồ chân và chức năng của mỗi chân
Trang 16- Trên thị trường và nghiên cứu chúng ta chỉ nghiên cứu loại đóng gói dạng DIP 40 chân của IC 8255A:
- Các chân 14, 15, 16, 17, 13, 12, 11, 10: tương ứng theo thứ tự từ PC0 đến PC7 Đây là cổng giao tiếp dữ liệu 8 bít PC, khi cần thiết, nó có thể tách thành 2 phần PC cao từ bít PC7 đến PC4 và PC thấp từ bít PC0 đến PC3.đặc biệt, hai phần này có thể
hoạt động độc lập với nhau nếu cần tùy thuộc vào thanh ghi điều khiển được cài đặt màcác cổng này có thể vào/ ra dữ liệu
- Các chân 4, 3, 2, 1, 40, 39, 38, 37: tương ứng với cổng PA từ PA0 đến PA7 Đây là
cổng giao tiếp dữ liệu 8 bit vào/ ra PA tùy theo thanh ghi điều khiển được cài đặt mà cổng này có thể xuất dữ liệu ra hoặc nhận dữ liệu vào Cổng này khác với cổng PC, nó không thể tách làm 2 độc lập với nhau được
- Các chân từ 18 đến 25: tương ứng với cổng PB từ PB0 đến PB7 Tương tự như
cổng PA, cổng PB cũng có thể đưa dữ lieu 8 bít ra hoặc vào bằng cách thiết lập giá trị của thanh ghi điều khiển
- Các chân từ 27 đến 34 : tương ứng theo thứ tự từ D7 đến D0 - Bus dữ liêu(2 chiều).
Bus dữ liệu 2 chiều này được nối tới các tín hiệu tương ứng của Vi xử lý để trao đổi dữ liệu vào/ra do chip 8086 xử lý
- Chân 35: là chân Reset - khởi tạo trạng thái ban đầu của IC 8255 Nếu đặt mức này
lên mức 1 thì IC bị RESET lại từ đầu để mạch có thể chạy được, chúng ta phải đặt chânnày về mức 0V – GND
- Chân 6: chân /CS - Tín hiệu chọn vi mạch Đây là tín hiệu tích cực ở mức thấp 0v,
vì vây chúng ta phải đặt chân này ở mức thấp để chọn IC 8255 hoạt động nhơ vậy, chânnày được sử dụng để kết hợp với mạch giải mã địa chỉ để Vi xử lý điều khiển nó hoạt động đúng yêu cầu
- Chân 5: chân /RD (Read)- là chân tín hiệu cho phép đọc.
- Chân 36: chân /WR(Write) – là chân tín hiệu cho phép ghi.
- Chân 9 và 8: tương ứng với chân tín hiệu địa chỉ A0 – A1, 2 chân này được nối với
2 bít được tách ra từ bộ tách địa chỉ của 8086, 2 chân này dùng để giải mã cho các cổngcủa 8255 với quy luật sau: