1. Trang chủ
  2. » Cao đẳng - Đại học

Bài giảng Vi xử lý, Đại học Bách Khoa Hà Nội

113 1,5K 2

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 113
Dung lượng 1,85 MB

Nội dung

CHƢƠNG 2 TỔNG QUAN VỀ HỆ VI XỬ LÝ 1Mục lục 2.1. Giới thiệu chung 2.2. Cấu trúc một hệ Vi xử lý điển hình 2.3. Chu kỳ trong Vi xử lý 2.4. Tập lệnh của Vi xử lý 2.5. Ghép nối bộ nhớ 22.1. Giới thiệu chung 2.1.1. Định nghĩa Vi xử lý – Là mạch bán dẫn tích hợp trên một chip (IC) có nhiệm vụ thực hiện các công việc xử lý tín hiệu hoặc điều khiển các thành phần trong hệ thống – Vi xử lý thực hiện công việc của nó theo chƣơng trình, thuật toán do ngƣời dùng đặt ra – Ký hiệu: P hoặc uP 32.1. Giới thiệu chung • Phân loại Vi xử lý • Hoặc phân loại theo số lƣợng bit: Vi xử lý 4bit, 8bit, 16bit, 32 bit và bây giờ là 64bit. • Chip của Intel dùng nhiều trong máy tính còn của Motorola dùng nhiều trong viễn thông Vi xử lý Loại đa năng: Phục vụ cho nhiều mục đích khác nhau Ví dụ: 8080, 8085 … của Intel 6800, 6802… của Motorola Loại chuyên dụng: Phục vụ một mục đích cụ thể Ví dụ: các IC trong đồ chơi của trẻ em 42.1. Giới thiệu chung • Lịch sử ra đời và phát triển của Vi xử lý 1960 Fairchild Semiconductor: Chip bán dẫn đầu tiên 1971 Intel: 4004, 8008, 8080 1976 Zilog: Z80 TI: VXL 16bit 1982 32 bit ATT: BELLMAC32A 1985 Motorola: 680xx ARM I 1990 Power PC (IBM) 64bit 1993 1999 Intel: Pentium, Xeon, Celeron 2005 Intel: Multi Core Thương mại hóa chip bán dẫn Tăng mật độ, Máy tính trên chip VLSI và 32 bit 32bit nhường chỗ 64bit Kỷ nguyên đa lõi 52.1. Giới thiệu chung 2.1.2. Hệ Vi xử lý • Định nghĩa: – Là hệ thống số làm việc theo chƣơng trình đƣợc lƣu giữ trong bộ nhớ, xử lý dữ liệu bằng vi xử lý và đƣa ra các quyết định liên lạc với thế giới bên ngoài thông qua các cổng vào ra – Một hệ Vi xử lý luôn bao gồm 2 thành phần: Phần cứng và phần mềm 62.1. Giới thiệu chung 2.1.3. Các thành phần trong hệ Vi xử lý 72.1. Giới thiệu chung 2.1.4. Các kiến trúc thông dụng của Vi xử lý • Kiến trúc Von Neumann – Chỉ có một bộ nhớ chung cho dữ liệu và chƣơng trình – Đọc dữ liệu và đọc lệnh không diễn ra đồng thời 82.1. Giới thiệu chung • Kiến trúc Von Newmann 92.1. Giới thiệu chung • Kiến trúc Harvard – Có các bus độc lập cho bộ nhớ chƣơng trình và dữ liệu – Đọc dữ liệu và đọc chƣơng trình diễn ra đồng thời 102.1. Giới thiệu chung • Kiến trúc Harvard 112.1. Giới thiệu chung • Kiến trúc SHARC – Super Harvard Architecture – Thêm vào một số đặc trƣng để cải thiện băng thông dữ liệu 122.1. Giới thiệu chung • Kiến trúc DSP – Digital Signal Processing 132.2. Cấu trúc của một hệ VXL điển hình 2.2.1. Cấu trúc chung của một hệ VXL điển hình 142.2. Cấu trúc của một hệ VXL điển hình • Cấu trúc rút gọn – uP: Vi xử lý – M: Bộ nhớ (Memory) – I: Cổng vàoThiết bị vào dữ liệu (Input) – O: Cổng raThiết bị xuất dữ liệu (Output) uP M I O Address Bus Data bus Control bus 152.2. Cấu trúc của một hệ VXL điển hình 2.2.2. Các thành phần cơ bản trong hệ VXL 1. Hệ thống Bus Khái niệm Kết nối kiểu kinh điển A B C D Bus Kết nối kiểu Bus 162.2. Cấu trúc của một hệ VXL điển hình – Bus là nút dùng chung của cả hệ thống, dùng để truyền dữ liệu giữa các thành phần với nhau – Bus có thể nằm trong hoặc nằm ngoài Vi xử lý – Truyền thông song song: Bus là dải (tape) dây dẫn, mỗi dây truyền 1 bit. – Truyền thông nối tiếp: Bus có thể là cáp đồng trục, xoắn đôi, quang… 172.2. Cấu trúc của một hệ VXL điển hình Tổ chức và quản lý Bus • Bus sử dụng phần tử 3 trạng thái để cách ly các phần tử trong hệ thống • Các phần tử trong hệ thống Bus đƣợc quản lý bằng địa chỉ. – Mỗi thành viên trong hệ đều đƣợc xác định 1 địa chỉ duy nhất – Quản lý địa chỉ bằng phần cứng (mỗi đầu dây, IO có 1 địa chỉ xác định) hoặc bằng phần mềm (địa chỉ IP) 182.2. Cấu trúc của một hệ VXL điển hình • Truy cập Bus: – Phƣơng pháp ngẫu nhiên: thời điểm truy cập bus của các phần tử là ngẫu nhiên. Dùng trong quảng bá • Tốc độ chậm • Quản lý số lƣợng phần tử lớn • Cần giải quyết vấn đề xung đột – Phƣơng pháp tiền định: xác định trƣớc quy luật, thời gian truy nhập • Tốc độ cao • Số phần tử ít 192.2. Cấu trúc của một hệ VXL điển hình Ưu nhược điểm • Ƣu điểm: – Tiết kiệm, đơn giản hóa hệ thống – Làm hệ có tính mở. Có thể thêm hoặc bớt phần tử dễ dàng • Nhƣợc điểm: – Tốc độ bị hạn chế do Bus là đƣờng truyền chung 202.2. Cấu trúc của một hệ VXL điển hình 2. Tổ chức cổng vào ra Thiết bị cơ bản • IC 8282 – Tích hợp mạch 3 trạng thái và chốt dữ liệu D STB D0 Q0 OE D STB D7 Q7 STB OE OE D0 – D7: 8 đường dữ liệu vào Q0 – Q7: 8 đường dữ liệu ra STB: chốt tín hiệu STB = 1: cho phép đưa dữ liệu ra STB = 1>0: chốt dữ liệu đầu ra OE: Cho phép xuất tín hiệu 212.2. Cấu trúc của một hệ VXL điển hình Tổ chức cổng vào 8282 Data bus Address bus Control bus D0…..D7 IOM RD Ax STB OE +5V Ax: Địa chỉ của thiết bị (Tín hiệu sau giải mã địa chỉ) IOM: Tín hiệu chọn thiết bị: IOM = 1 chọn cổng vào ra IOM = 0 chọn bộ nhớ RD: Lệnh chỉ thao tác đọc thiết bị 222.2. Cấu trúc của một hệ VXL điển hình Ax = 1 IOM = 1 RD = 0 Data từ bên ngoài Address Bus Control Bus Data Bus 232.2. Cấu trúc của một hệ VXL điển hình • Tổ chức cổng ra 8282 Data bus Address bus Control bus Q0…..Q7 IOM WR Ax STB OE 242.2. Cấu trúc của một hệ VXL điển hình Ax = 1 IOM = 1 WR = 0 Data đưa ra ngoàii Address Bus Control Bus Data Bus 252.2. Cấu trúc của một hệ VXL điển hình 3. Bộ nhớ • Định nghĩa: Là thiết bị dùng để lƣu trữ thông tin gồm chƣơng trình và dữ liệu • Phân loại: – Bộ nhớ chính: là bộ nhớ hoạt động, yêu cầu tốc độ cao. Chế tạo dƣới dạng bộ nhớ bán dẫn. VD: RAM – Bộ nhớ phụ: yêu cầu cao về dung lƣợng lƣu trữ và thời gian lƣu trữ. VD: ROM, HDD… 262.2. Cấu trúc của một hệ VXL điển hình • Tổ chức của bộ nhớ: Bộ nhớ đƣợc tạo thành từ các ô nhớ sắp xếp cạnh nhau về mặt logic. Các tham số của ô nhớ gồm: – Vị trí (logic) của ô nhớ: là địa chỉ của ô nhớ, do bus địa chỉ truyền đi trong hệ – Nội dung của ô nhớ: là dữ liệu chứa trong ô nhớ, do bus dữ liệu truyền đi trong hệ. Thông thƣờng, mỗi ô nhớ có độ lớn là 8bit (1byte) Quản lý bộ nhớ bằng phương pháp địa chỉ hóa các ô nhớ 272.2. Cấu trúc của một hệ VXL điển hình • Các phƣơng pháp địa chỉ hóa ô nhớ – Phƣơng pháp địa chỉ tuyệt đối: • Địa chỉ của một ô nhớ chính là khoảng cách của nó so với địa chỉ gốc • Địa chỉ gốc thƣờng đƣợc xác định là 0 • Ứng dụng cho các loại bộ nhớ dung lƣợng nhỏ 1 0 10 11 3 2 1 0 14 1110 15 ô nhớ 282.2. Cấu trúc của một hệ VXL điển hình – Phƣơng pháp địa chỉ đoạn • Chia toàn bộ bộ nhớ thành nhiều vùng (segment), mỗi vùng có một địa chỉ xác đinh. • Địa chỉ của một ô nhớ trong bộ nhớ đƣợc xác định bởi: – Địa chỉ của segment chứa ô nhớ đó – Địa chỉ offset của ô nhớ trong segment Segment 0 Segment 1 Segment n Địa chỉ offset Địa chỉ segment 292.2. Cấu trúc của một hệ VXL điển hình – Phƣơng pháp địa chỉ đoạn (tiếp) • Các thiết bị lƣu trữ địa chỉ ô nhớ có kích thƣớc nhỏ – Ví dụ: 8085A địa chỉ hóa ô nhớ bằng 16bit > Dùng 2 thanh ghi 8bit, 1 thanh ghi chứa địa chỉ segment, 1 chứa địa chỉ offset • Quản lý đƣợc bộ nhớ có dung lƣợng lớn – Không gian nhớ: toàn bộ địa chỉ có thể địa chỉ hóa đƣợc của bộ nhớ • Nếu bus địa chỉ có n bit thì không gian nhớ là 2n địa chỉ 302.2. Cấu trúc của một hệ VXL điển hình – Bản đồ bộ nhớ: cho thấy bộ nhớ hay các thiết bị có kết nối với bus địa chỉ đƣợc đặt ở đâu trong không gian nhớ – Ví dụ: 312.2. Cấu trúc của một hệ VXL điển hình 4. Vi xử lý 8085 • Một số đặc tính cơ bản: – Bộ xử lý 8 bit tốc độ 3 – 6MHz – 4 đầu vào ngắt – Có các cổng vào ra nối tiếp – Có khả năng tính toán số học thập phân, nhị phân và dấu phẩy động – Chu kỳ lệnh 0.8s – Địa chỉ hóa trực tiếp cho 64KB bộ nhớ – …. 322.2. Cấu trúc của một hệ VXL điển hình • Sơ đồ chân linh kiện – Bus địa chỉ: AD0 – AD7 và A8 – A15 – Bus dữ liệu: AD0 – AD7 – Bus điều khiển: IOM, RD, WR… – ALE: Cho phép chốt địa chỉ – SID, SOD: vàora dữ liệu nối tiếp – S0, S1: trạng thái chu kỳ máy U5 8085 30 31 32 34 3 37 4 38 40 20 5 1 2 6 10 11 29 33 39 35 21 22 23 24 25 26 27 28 12 13 14 15 16 17 18 19 9 8 7 36 ALE WR RD IOM RSTOUT CLKOUT SOD HLDA VCC GND X2 SID TRAP X1 INTR INTA S0 S1 HOLD READY A8 A9 A10 A11 A12 A13 A14 A15 AD0 AD1 AD2 AD3 AD4 AD5 AD6 AD7 RST 5.5 RST 6.5 RST 7.5 RSTIN 332.2. Cấu trúc của một hệ VXL điển hình • Phối hợp các tín hiệu điều khiển – MEMR: cho phép đọc từ bộ nhớ – MEMW: cho phép ghi bộ nhớ – IOR: cho phép đọc từ cổng vào – IOW: cho phép ghi ra cổng ra 1 2 IO(M) WR IO(M) 4 5 2 4 5 2 WR IO(M) 4 5 2 RD 1 2 IO(M) MEMR IOW 4 5 2 RD IOR MEMW 342.2. Cấu trúc của một hệ VXL điển hình • Biểu đồ thời gian làm việc trong 8085 352.2. Cấu trúc của một hệ VXL điển hình • Sơ đồ cấu trúc Vi xử lý 8085 362.2. Cấu trúc của một hệ VXL điển hình • Các thành phần điển hình: – Đơn vị điều khiển (Control Unit): điều khiển và đồng bộ quá trình trao đổi và biến đổi số liệu trong hệ Vi xử lý. – Đơn vị logic số học (Arithmetic Logic Unit – ALU) thực hiện các phép toán – Hệ thống thanh ghi: lƣu giữ dữ liệu tạm thời phục vụ cho tính toán. 8085 có 7 thanh ghi mục đích chung 8 bit B, C, D, E, H, L và có thể ghép thành 3 thanh ghi 16 bit. 372.2. Cấu trúc của một hệ VXL điển hình • Các thành phần điển hình: – Thanh chứa (Accumulator – A) là một thành phần của ALU. Chứa dữ liệu 8 bit – Hệ thống cờ (Flag – F) • Cờ không – Zero (Z) • Cờ nhớ – Carry (C) • Cờ dấu – Sign (S) • Cờ chẵn lẻ – Parity (P) • Cờ nhớ phụ – Auxiliary Carry (AC) 382.2. Cấu trúc của một hệ VXL điển hình • Các thành phần điển hình: – Bộ đếm chƣơng trình (Program Counter – PC): 16 bit, là con trỏ bộ nhớ. Dùng để lập trình tự thực hiện lệnh trong Vi xử lý – Con trỏ ngăn xếp (Stack Pointer – SP): 16 bit, cũng là con trỏ bộ nhớ, trỏ đến vùng nhớ ngăn xếp (stack) – Thanh ghi lệnh và giải mã lệnh (IR, ID): lƣu giữ tạm thời lệnh hiện thời của chƣơng trình (IR), ID sẽ giải mã lệnh thành các vi lệnh 392.2. Cấu trúc của một hệ VXL điển hình – Thanh ghi địa chỉ bộ nhớ: lƣu giữ địa chỉ, nhận về từ PC, của câu lệnh tiếp theo – Bộ phát xung điều khiển (Control Generator) tạo ra các xung trong uP để thực hiện các lệnh đã đƣợc giải mã – Bộ chọn thanh ghi (Register Selector) điều khiển việc lựa chọn sử dụng các thanh ghi trong hệ thống thanh ghi của uP 402.2. Cấu trúc của một hệ VXL điển hình • Quá trình thực hiện lệnh – Địa chỉ lệnh đầu tiên: n – Sau Reset, IP = 0 – Khi thực hiện, IP = n – Địa chỉ trong IP chỉ ra vị trí câu lệnh trong chƣơng trình 412.2. Cấu trúc của một hệ VXL điển hình • Quá trình thực hiện lệnh (tiếp) ((IP)) > uP ID giải mã lệnh IP ++ Lệnh được thực hiện 42432.3. Chu kỳ trong Vi xử lý 1. Chu kỳ lệnh (Instruction Cycle) Khoảng thời gian để Vi xử lý thực hiện một lệnh từ bộ nhớ chƣơng trình. 2. Chu kỳ máy (Machine Cycle) Số bƣớc mà vi xử lý thực hiện ứng với một lệnh nhận đƣợc. Thƣờng gồm 4 bƣớc: đọc lệnh, dịch lệnh, thực hiện lệnh và lƣu giữ kết quả Bằng một số nguyên lần xung đồng hồ 442.4. Tập lệnh của Vi xử lý • 4 nhóm lệnh chủ yếu: – Nhóm lệnh di chuyển dữ liệu • VD: MOV A, B – Nhóm lệnh tính toán logic • VD: ANL A, R0 – Nhóm lệnh toán học • VD: ADD A, R1 – Nhóm lệnh nhảy và rẽ nhánh • VD: JNB TF0, LOOP • VD: ACALL LOOP 452.4. Tập lệnh của Vi xử lý • Ngày nay, tập lệnh của VXL ngày càng phong phú, thời gian thực hiện lệnh ngày càng nhanh – Do sự phát triển về công nghệ chế tạo – Do mức độ tích hợp các thiết bị ngoại vi – Do sự đa dạng của các sản phẩm – Do sự đa dạng của các hãng sản xuất – …. 462.5. Ghép nối bộ nhớ 2.5.1. Một số chip nhớ thông dụng 1. ROM – Thiết kế bởi công nghệ NMOS, CMOS – Dung lƣợng thƣờng 2Kbyte – 64Kbyte – Dữ liệu lƣu trữ dạng ma trận – Không bị ảnh hƣởng bởi việc mất điện – 2716, 2732, .., 27256 472.5. Ghép nối bộ nhớ • Ví dụ ROM 2716 482.5. Ghép nối bộ nhớ 2. RAM • Static RAM – Mỗi bít dữ liệu đƣợc lƣu trữ bởi cặp flipflop – Cấu trúc đơn giản – Ghi và xóa tín hiệu bằng điện – Dữ liệu mất đi khi mất điện – Tiêu thụ năng lƣợng lớn khi có điện – Kích thƣớc lớn khi dung lƣợng lớn – 6216, 6232, ..62256 492.5. Ghép nối bộ nhớ • Dynamic RAM – Dữ liệu ghi bằng tụ – Dữ liệu phải refresh từng 2ms > phải có bộ điều khiển refresh – Dung lƣợng lớn – Cấu trúc ma trận – Ít tổn hao điện 502.5. Ghép nối bộ nhớ • Ví dụ: RAM 62256 512.5. Ghép nối bộ nhớ 2.5.2. Ghép nối nhiều bộ nhớ • Ghép nối các chip nhớ 2Kx8bit để tạo ra bộ nhớ 4Kx8bit • Một số chú ý: – Số lƣợng bit địa chỉ phải phù hợp – Thống nhất tín hiệu điều khiển – Bộ nhớ 2Kx8bit có 11 bit địa chỉ trong khi 4Kx8bit có 12bit địa chỉ 522.5. Ghép nối bộ nhớ 53 D1 A1 A2 A0 A0..11 D6 A9 D5 A6 A8 D0 A3 RD U1 2016 8 7 6 5 4 3 2 1 23 22 19 9 10 11 13 14 15 16 17 20 21 18 A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 A10 D1 D2 D3 D4 D5 D6 D7 D8 OE WE CE Data0..7 D7 WR WR A8 U2 2016 8 7 6 5 4 3 2 1 23 22 19 9 10 11 13 14 15 16 17 20 21 18 A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 A10 D1 D2 D3 D4 D5 D6 D7 D8 OE WE CE D6 D0 A9 A4 A2 U3 NOT 2 1 A3 RD A4 A10 A7 D5 A11 A7 D7 A10 A6 A11 D2 A5 D4 A5 A0 D4 D3 D1 D2 A1 D32.5. Ghép nối bộ nhớ 2.5.3. Thiết lập bộ nhớ tại địa chỉ xác định 54Vấn đề về ngắt của Vi điều khiển Chương 3 13.4.1 Khái niệm về ngắt 1. Hệ thống điều khiển sự kiện • Eventdrive System • Là hệ thống có khả năng đáp ứng lại với các sự kiện xảy ra trong hệ • Các công việc mà hệ thống đáp ứng lại các sự kiện gọi là dịch vụ cho sự kiện (event service) 23.4.1 Khái niệm về ngắt • Ví dụ về hệ thống điều khiển sự kiện – Vòng lặp Polling: 3 int main (void) { sys_init(); while (TRUE) { if (event_1) service_event_1(); if (event_2) service_event_2(); if (event_n) service_event_n(); } }3.4.1 Khái niệm về ngắt • Một số đặc điểm của vòng lặp Polling: – Cấu trúc hệ thống đơn giản – Các sự kiện bình đẳng, không phân cấp bậc – Thời gian phản ứng 1 sự kiện phụ thuộc nhiều yếu tố – Nếu sự kiện mới thêm vào, thời gian vòng quét dài ra 43.4.1 Khái niệm về ngắt 2. Định nghĩa Ngắt của Vi điều khiển • Ý tưởng: Sự xuất hiện của một sự kiện làm “ngắt” tiến trình thực hiện chương trình chính, “nhồi” thêm và thực hiện một tiến trình khác. • Chương trình nhồi gọi là Chương trình con dịch vụ ngắt – Interrupt Service Routine (ISR) • ISR sau khi thực hiện xong, chương trình chính lại tiếp tục thực hiện 53.4.1 Khái niệm về ngắt Giản đồ thực thi chương trình: a) Không dùng ngắt; b) Có dùng ngắt 6 CHƢƠNG TRÌNH CHÍNH (CTC) Thời gian CTC Chƣơng trình con ngắt (ISR) CTC CTC ISR Thời gian a) Chƣơng trình đƣợc thực thi nhƣng không sử dụng ngắt b) Chƣơng trình có sử dụng ngắtt3.4.1 Khái niệm về ngắt • Ngắt làm chương trình có tính ưu tiên • Ngắt giúp hệ thống phản ứng nhanh hơn với các sự kiện • Ngắt làm song song hóa các tác vụ trong chương trình • Ngắt làm chương trình phức tạp hơn 73.4.2. Các nguyên nhân gây ngắt • Nguyên nhân ngắt: nguồn ngắt • Ngắt cứng: nguồn ngắt từ bên ngoài đưa tới – Ví dụ: Tín hiệu chuyển từ 1 > 0 đưa về 1 chân của vi điều khiển (nút bấm) • Ngắt mềm: nguồn ngắt từ các thiết bị ngoại vi bên trong vi điều khiển – Ví dụ: tín hiệu báo tràn bộ định thời 83.4.2. Các nguyên nhân gây ngắt • 8051 có 5 nguồn ngắt – 2 Ngắt ngoài • Lấy trên các chân INT0 và INT1 – 2 Ngắt do bộ định thời • Từ các cờ tràn TF0 và TF1 – 1 ngắt do cổng nối tiếp • Từ các cờ nhận và truyền RITI 93.4.3. Tổ chức ngắt 1. Cho phépkhông cho phép ngắt Thanh ghi IE – Interrupt Enable 10 Bit Ký hiệu Địa chỉ Mô tả IE.7 EA AFH Cho phépkhông cho phép ngắt toàn cục IE.6 AEH Không dùng IE.5 ET2 ADH Cho phép ngắt từ bộ định thời 2 (8052) IE.4 ES ACH Cho phép ngắt từ cổng nối tiếp IE.3 ET1 ABH Cho phép ngắt từ bộ đinh thời 1 IE.2 EX1 AAH Cho phép ngắt ngoài 1 IE.1 ET0 A9H Cho phép ngắt từ bộ định thời 0 IE.0 EX0 A8H Cho phép ngắt ngoài 03.4.3. Tổ chức ngắt 2. Ưu tiên ngắt Thanh ghi IP – Interrupt Priority 11 Bit Ký hiệu Địa chỉ Mô tả IP.7 Không sử dụng IP.6 Không sử dụng IP.5 PT2 BDH Ưu tiên ngắt do bộ định thời 2 IP.4 PS BCH Ưu tiên ngắt do cổng nối tiếp IP.3 PT1 BBH Ưu tiên ngắt do bộ định thời 1 IP.2 PX1 BAH Ưu tiên ngắt ngoài 1 IP.1 PT0 B9H Ưu tiên ngắt do bộ định thời 0 IP.0 PX0 B8H Ưu tiên ngắt ngoài 03.4.3. Tổ chức ngắt • Một số lưu ý – 8051 chỉ có 2 mức ưu tiên – ISR có mức ưu tiên cao có thể ngắt ISR có mức ưu tiên thấp, tình huống ngược lại không cho phép – 2 ISR có cùng mức ưu tiên không ngắt được ngắt lẫn nhau – Cùng mức ưu tiên, ngắt nào tới trước thì ISR được thực hiện trước 123.4.3. Tổ chức ngắt 3. Chuỗi vòng 13 IE1 IT1 IT1 0 0 1 1 IE0 IT0 IT0 0 0 1 1 Thanh ghi IE Thanh ghi IE Mức ngắt cao Mức ngắt cao INT0 INT0 TF0 TF0 INT1 INT1 TF1 TF1 RI RI TI TI Cho phép ngắt từng nguồn Cho phép ngắt từng nguồn Cho phép ngắt toàn cục Cho phép ngắt toàn cục Thứ tự quét các ngắt Thứ tự quét các ngắt Mức ngắt thấp Mức ngắt thấp Thanh ghi IP Thanh ghi IP3.4.3. Tổ chức ngắt 4. Vector ngắt • Là địa chỉ tương ứng mà tại đó ISR được đặt • Vector ngắt là địa chỉ đầu tiên của ISR tương ứng • Mỗi vector ngắt dành cho một nguồn ngắt xác định 143.4.3. Tổ chức ngắt • Bảng vector ngắt 15 Nguồn ngắt Cờ ngắt Địa chỉ vector Reset hệ thống RST 0000H Ngắt ngoài 0 IE0 0003H Bộ định thời 0 TF0 000BH Ngắt ngoài 1 IE1 0013H Bộ định thời 1 TF1 001BH Cổng nối tiếp TI hoặc RI 0023H3.4.3. Tổ chức ngắt 5. Một số đặc điểm của ngắt ngoài • Ngắt theo mức: – ISR của ngắt ngoài sẽ được thực hiện nếu chân ngắt ngoài INTx = 0 – INTx phải = 1 trước khi ISR thực hiện xong • Ngắt theo sườn: – ISR được thực hiện khi INTx chuyển từ 1→0 • Cài đặt bằng 2 bit IT0 và IT1 trong TCON 163.4.3. Tổ chức ngắt 6. Xử lý ngắt 17 Thực hiện nốt lệnh đang dang dở Cất nội dung PC vào Stack Lƣu trạng thái hiện hành của ngắt Các ngắt đƣợc chặn lại ở mức ngắt Nạp địa chỉ vector ngắt vào PC Thực thi ISR3.4.3. Tổ chức ngắt 7. Bảo vệ khi chương trình sử dụng ngắt Cú pháp: POP ACC POP PSW …. PUSH ACC PUSH PSW 18 Các thanh ghi cần bảo vệ Accumulator ACC PSW DPTR B Các thanh ghi R0 – R73.4.3. Tổ chức ngắt 8. Giả lập mức ưu tiên ngắt thứ 3 19 1: PUSH IE 2: MOV IE, MASK 3: CALL LABEL Mã của chương trình con dịch vụ ngắt được đặt tại đây 4: POP IE 5: RET 6: LABEL: 7: RETI3. 4.4. Lập trình cho ngắt 1. Cấu trúc chung 20 ORG 0000H ;vector ngắt của Reset hệ thống LJMP MAIN ;nhảy đến chương trình chính ;khai báo vector ngắt và chương trình ;con dịch vụ ngắt ORG 0030H ; địa chỉ bắt đầu của chương trình chính MAIN: ;chương trình chính bắt đầu END3.4.4. Lập trình cho ngắt 2. ISR có kích thước nhỏ 21 ORG 0000H ;vector ngắt của Reset hệ thống LJMP MAIN ;nhảy đến chương trình chính ORG 00xxH ; 00xxH là vector ngắt ISR: ;nội dung của ISR RETI ;trở về chương trình chính ORG 0030H ;địa chỉ bắt đầu của chương trình chính MAIN: ;chương trình chính bắt đầu 3.4.4. Lập trình cho ngắt 3. ISR có kích thước lớn 22 ORG 0000H ;vector ngắt của Reset hệ thống LJMP MAIN ;nhảy đến chương trình chính ORG 00xxH ;00xxH là vector ngắt LJMP ISR ;nhảy đến chương trình con ORG 0030H ; địa chỉ bắt đầu của chương trình chính MAIN: ;chương trình chính bắt đầu ISR: ;chương trình con dịch vụ ngắt RETI ;trở về chương trình chính3.4.4. Lập trình cho ngắt 4. Ví dụ ứng dụng Lập trình điều khiển nhiệt độ Nhiệt độ cao: Tắt lò Nhiệt độ thấp: Bật lò 23 HOT COLD INT0 INT1 P1.0 Đến chân điều khiển lò Từ cảm biến nhiệt độ T = 21oC T = 20oC T = 19oC HOT COLD P1.03.4.4. Lập trình cho ngắt • ORG 0000H • LJMP MAIN • ORG 0003H • EXOISR: • SETB P1.0 ;Bật lò • RETI • ORG 0013H • EX1ISR: • CLR P1.0 ;Tắt lò • RETI • MAIN: • MOV IE, 85H ;Cho phép ngắt ngoài • SETB IT0 ;Cho phép ngắt ngoài tác động theo sườn âm • SETB IT1 • SETB P1.0 ;Bật lò • JB P3.3, SKIP ;Kiểm tra lò đang quá nóng hay không? • CLR P1.7 ;Nếu lò đang nóng quá cho phép thì tắt lò • SKIP: • SJMP ;Không làm gì • END 2425HOẠT ĐỘNG ĐỊNH THỜI Chương 4 14.1. Giới thiệu chung 4.1.1. Định nghĩa • Bộ định thời (Timer) là một chuỗi các flipflop nối tiếp. Các FF là bộ chia 2. • Ngõ ra FF sau cùng nối với 1 FF báo tràn D Q Q0 D Q Q1 D Q Qn D Q Q clock LSB MSB Cờ tràn 24.1. Giới thiệu chung • Bộ định thời thường đi kèm với chức năng đếm sự kiện (Counter) • 8051 có 2 bộ định thời là T0 và T1 • 8052 có thêm một bộ định thời T2 34.1. Giới thiệu chung 4.1.2. Nguyên lý hoạt động – Nội dung Timer tăng lên 1 sau mỗi chu kỳ clock – Timer đếm tiến – Giá trị bắt đầu đếm được đặt sẵn trong Timer do người dùng – Khi nội dung Timer đếm tới giá trị cực đại và chuyển về 0 thì cờ tràn lật lên 44.1. Giới thiệu chung 4.1.3. Ứng dụng của định thời – Tạo trễ hoặc tính toán thời gian chính xác gần như tuyệt đối – Đếm sự kiện – Tạo tốc độ baud trong truyền thông nối tiếp – Kết hợp với ngắt để làm nền tảng cho một hệ điều hành thời gian thực hoặc đa nhiệm 54.2. Các thanh ghi liên quan 4.2.1. Thanh ghi THx và TLx • Đây vừa là 2 thanh ghi 8 bit vừa chính là bộ định thời • x = 0 hoặc 1 • Nội dung của 2 thanh ghi chính là số đếm của bộ định thời • Phối ghép 2 thanh ghi này sẽ có các chế độ khác nhau 64.2. Các thanh ghi liên quan 4.2.2. Thanh ghi cài đặt chế độ định thời • GATE: bit điều khiển cổng • CT: bit chọn chế độ đếm hay định thời • M1 và M0: 2 bit chọn chế độ định thời 7 Bit 7 Bit0 GATE C(T) M1 M0 GATE C(T) M1 M04.2. Các thanh ghi liên quan • Nếu GATE = 1, bộ định thời chỉ hoạt động khi chân INTx ở mức cao • Nếu GATE = 0 bộ định thời chỉ hoạt động khi có lệnh của người dùng 8 M1 M0 Chế độ Mô tả 0 0 0 Chế độ định thời 13 bit 0 1 1 Chế độ định thời 16bit 1 0 2 Chế độ tự động nạp lại 8bit 1 1 3 Chế độ định thời chia sẻ.4.2. Các thanh ghi liên quan 4.2.3. Thanh ghi điều khiển định thời – TFx: Cờ tràn của bộ định thời x – TRx: Bit điều khiển hoạt động của bộ định thời x – IEx: Cờ ngắt ngoài x – Itx: Đặt kiểu ngắt cho ngắt ngoài (mức hay sườn) 9 Bit 7 Bit0 TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT04.3. Các chế độ định thời 4.3.1. Chế độ định thời 13bit (chế độ 0) • Byte cao THx + 5bit TLx = Timer 13bit • Hoạt động định thời 13 bit • Ghép nối với các hệ Vi xử lý cũ 104.3. Các chế độ định thời 4.3.2. Chế độ định thời 16bit (chế độ 1) • Byte cao THx + Byte thấp TLx = Timer 16bit • Timer có thể đếm từ giá trị min là 0000H đến giá trị max là FFFFH • Nội dung của THxTLx có thể đọc hoặc ghi ở thời điểm bất kỳ • TFx = 1 khi Timer chuyển từ FFFFH →0000H 114.3. Các chế độ định thời • Hoạt động của Timer 16bit 12 THx TLx 00H 00H 00H 01H FFH FFH clock 1 clock 2 clock n 00H 00H 00H 01H clock 1 clock 2 TFx = 1 Lưu ý: Giá trị trong các thanh ghi THxTLx có thể là một giá trị bất kỳ do người dùng đặt theo yêu cầu thực tế4.3. Các chế độ định thời 4.3.3. Định thời 8bit tự động nạp lại (chế độ 2) • TLx hoạt động định thời 8bit • THx lưu trữ giá trị nạp lại • TFx = 1 khi TLx chuyển từ FFH về 00H • Nội dung của TLx có thể được đọcghi ở thời điểm bất kỳ 134.3. Các chế độ định thời • Hoạt động của bộ định thời 8bit nạp lại 14 TLx XYH 00 01 FF clock 1 clock 2 clock n 00 XYH clock 1 clock 2 TFx = 1 THx Giá trị nạp lại Tự động nạp lại Lưu ý: Chu kỳ đầu tiên TLx bắt đầu đếm từ 00H nếu người dùng không ghi trước nội dung của nó4.3. Các chế độ định thời 4.3.4. Chế độ định thời chia sẻ (chế độ 3) • TH0 và TL0 trở thành 2 bộ định thời 8bit • TL0: FFH →00H: TF0 = 1 • TH0: FFH →00H: TF1 = 1 • Không tự nạp lại • Bộ định thời 1 luôn chạy, không thể điều khiển • Ứng dụng: 2 Timer 8bit và 1 Timer tạo xung cho cổng nối tiếp 154.4. Cấu trúc timer trong 8051 4.4.1. Sơ đồ khối ghép nối 16 Oscillator ÷12 Timer Timer Clock CT = 0 CT = 1 Tx pin P3.5P3.6 INTx pin P3.2P3.3 GATE TRx4.4. Cấu trúc timer trong 8051 4.4.2. Clock của bộ định thời • Được tính từ tần số của thạch anh • Một số loại thạch anh thông dụng: – 4MHz; 8MHz; 10MHz; 11,0592MHz; 12MHz…. • Việc chọn thạch anh ảnh hưởng tới hệ thống thời gian của toàn hệ thống 174.4. Cấu trúc timer trong 8051 4.4.2. Hoạt động đếm – bộ đếm (counter) • Sử dụng tín hiệu clock từ bên ngoài • CT phải bằng 1 • Nội dung của Timer chính là số đã đếm • Các chế độ của bộ đếm cũng giống của timer • Ứng dụng: đếm sự kiện: sản phẩm, người, xe… 184.4. Cấu trúc timer trong 8051 4.4.3. Bit điều khiển cổng – GATE • GATE = 1: cho phép điều khiển timer từ tín hiệu bên ngoài • Việc điều khiển bậttắt timer vẫn phải bằng TRx 194.5. Lập trình cho Bộ định thời 4.5.1. Sử dụng chế độ 16bit (chế độ 1)  Chọn Timer làm việc  Cài đặt chế độ cho Timer tương ứng bằng TMOD  Nạp giá trị cho các thanh ghi THxTLx  TRx = 1  Chờ cờ tràn TFx = 1  Nạp lại THxTLx và xóa cờ TFx cho chu kỳ sau  Thực hiện các công việc cần thiết  Quay trở lại bước  204.5. Lập trình cho Bộ định thời • Cấu trúc chương trình 21 MOV TMOD, xxxx xxxxb ; Cài đặt cho Timer MOV THx, xxxxB ; Nạp các giá trị hoạt động MOV TLx, xxxxB SETB TRx ; Khởi động Timer WAIT: JNB TFx, WAIT ; Chờ cờ tràn MOV THx, xxxxB MOV TLx, xxxxB CLR TFx ; xóa cờ TFx ; Thực hiện các công việc ; theo yêu cầu JMP WAIT ; quay trở lại chờ chu kỳ sau4.5. Lập trình cho Bộ định thời • Ví dụ 1: Tạo xung vuông có dutycycle = 50% trên chân P1.5, sử dụng Timer 0 22 MOV TMOD, 01H MOV TL0, 0F2H MOV TH0, 0FFH SETB TR0 WAIT: JNB TF0, WAIT MOV TL0, 0F2H MOV TH0, 0FFH CLR TF0 CPL P1.5 SJMP WAIT4.5. Lập trình cho Bộ định thời • Ví dụ 2: Tạo xung vuông 2KHz trên P1.5 – Sử dụng thạch anh 12MHz → clock = 1MHz – Xung vuông có chu kỳ T = 12000 = 500μs nên khoảng thời gian cao thấp = 1T = 250μs – Clock có chu kỳ 11MHz = 1μs → Số nhịp cần đếm = 250μs1μs = 250 lần → Số cần nạp vào thanh ghi = 65536 – 250 = 65286 65286 = FF06H → TLx = 06H; THx = FFH 234.5. Lập trình cho Bộ định thời 4.5.2. Sử dụng chế độ 8bit tự nạp lại  Chọn Timer làm việc  Cài đặt chế độ cho Timer tương ứng bằng TMOD  Ghi giá trị nạp lại cho THx  TRx = 1  Chờ cờ tràn TFx = 1  Xóa cờ TFx cho chu kỳ sau  Thực hiện các công việc cần thiết  Quay trở lại bước  244.5. Lập trình cho Bộ định thời • Cấu trúc chương trình 25 MOV TMOD, xxxx xxxxb ; Cài đặt cho Timer MOV THx, xxxxB ; Ghi giá trị nạp lại SETB TRx ; Khởi động Timer WAIT: JNB TFx, WAIT ; Chờ cờ tràn CLR TFx ; xóa cờ TFx ; Thực hiện các công việc ; theo yêu cầu JMP WAIT ; quay trở lại chờ chu kỳ sau4.5. Lập trình cho Bộ định thời • Ví dụ: – Với Thạch anh 11,0592MHz, tìm tần số sóng vuông trong đoạn lệnh sau – Tần số nhỏ nhất có thể bằng bao nhiêu? 26 MOV TMOD, 20H MOV TH1, 5 SETB TR1 WAIT: JNB TF1, WAIT CLR TF1 CPL P1.0 SJMP WAIT4.5. Lập trình cho Bộ định thời • Lời giải: – Chu kỳ clock = 1211,0592 = 1,085μs – Phần cao của xung = (256 – 5)x1,085 = 272,33μs – Chu kỳ xung vuông = 2x272,33 = 544,66μs → Tần số xung = 1,83597KHz – Tần số nhỏ nhất khi TH1 = 00H – Khi đó, chu kỳ xung = 2x256x1,085 = 555,52μs → Tần số nhỏ nhất = 1,8KHz 274.5. Lập trình cho Bộ định thời 4.5.3. Lập trình đếm sự kiện • Ví dụ: Đoạn lệnh sau đếm các xung xuất hiện trên chân T1 và hiển thị số xung đếm được trên cổng P2 28 MOV TMOD, 0110 0000B MOV TH1, 0 SETB P3.5 AGAIN: SETB TR1 BACK: MOV A, TL1 MOV P2, A JNB TF1, BACK CLR TR1 CLR TF1 SJMP AGAIN4.5. Lập trình cho Bộ định thời 4.5.4. Một số chú ý về việc lập trình • Trình dịch hợp ngữ có thể tự tính giá trị 8bit nạp cho các thanh ghi • Ví dụ: MOV TH0, 100 trình dịch hợp ngữ sẽ tính FFH – 100D = 9CH và sẽ gán thành câu lệnh MOV TH0, 9CH 294.6. Bộ định thời thứ 3 trong 8052 4.6.1. Các chế độ hoạt động • Dùng như một bộ định thời 16bit tự nạp lại • Chế độ Capture – bắt xung • Tạo tốc độ Baud cho cổng nối tiếp 304.6. Bộ định thời thứ 3 trong 8052 4.6.2. Các thanh ghi • T2CON – TF2: Cờ tràn – EXF2: Cờ định thời ngoài. Dùng trong chế độ Capture hoặc nạp lại – RCLK: Xác định tốc độ baud cho việc nhận data – TCLK: Xác định tốc độ baud cho truyền data – EXEN2: Kích hoạt định thời ngoài. Dùng cho Capture hoặc nạp lại – CT2: Chọn chế độ đếmđịnh thời – CPRL2: CaptureReload 31 Bit 7 Bit0 TF2 EXF2 RCLK TCLK EXEN2 TR2 CT2 CPRL24.6. Bộ định thời thứ 3 trong 8052 • RCAP2L và RCAP2H – Lưu giá trị nạp lại – Lưu giá trị được capture trong chế độ bắt xung • TH2TL2: thanh ghi bộ định thời 324.6. Bộ định thời thứ 3 trong 8052 4.6.3. Các chế độ cơ bản • Chế độ tự nạp lại: – Hoạt động giống Timer 0 và 1 – 16bit Timer – Các giá trị nạp lại đặt ở RCAP2H và RCAP2L – CPRL2 = 0 – TF2 = 1 khi có tràn ở TH2TL2 từ FFFFH về 0H 334.6. Bộ định thời thứ 3 trong 8052 • Chế độ capture – Nội dung TH2TL2 được chụp và chuyển vào RCAP2H và RCAP2L khi T2EX (P1.1) = 1→0 – CPRL2 = 1 – EXEN2 = 1 – Dùng để đo độ rộng xung 34

Trang 1

CHƯƠNG 2

TỔNG QUAN VỀ HỆ VI XỬ LÝ

Trang 3

2.1 Giới thiệu chung

2.1.1 Định nghĩa Vi xử lý

– Là mạch bán dẫn tích hợp trên một chip (IC) có nhiệm vụ thực hiện các công việc xử lý tín hiệu hoặc điều khiển các thành phần trong hệ thống

– Vi xử lý thực hiện công việc của nó theo chương trình,

thuật toán do người dùng đặt ra

– Ký hiệu: P hoặc uP

Trang 4

2.1 Giới thiệu chung

4

Trang 5

2.1 Giới thiệu chung

• Lịch sử ra đời và phát triển của Vi xử lý

1976

Zilog: Z-80 TI: VXL 16bit

1982

32 bit AT&T: BELLMAC-32A

1985

Motorola: 680xx ARM I 1990

Power PC (IBM) 64bit

1993

1999

Intel: Pentium, Xeon, Celeron

2005

Intel: Multi Core

Thương mại hóa Tăng mật độ, VLSI 32bit nhường chỗ Kỷ nguyên đa lõi

Trang 6

2.1 Giới thiệu chung

2.1.2 Hệ Vi xử lý

• Định nghĩa:

– Là hệ thống số làm việc theo chương trình được lưu giữ

trong bộ nhớ, xử lý dữ liệu bằng vi xử lý và đưa ra các

quyết định liên lạc với thế giới bên ngoài thông qua các

cổng vào ra

– Một hệ Vi xử lý luôn bao gồm 2 thành phần: Phần cứng và phần mềm

6

Trang 7

2.1 Giới thiệu chung

2.1.3 Các thành phần trong hệ Vi xử lý

Trang 8

2.1 Giới thiệu chung

2.1.4 Các kiến trúc thông dụng của Vi xử lý

• Kiến trúc Von Neumann

– Chỉ có một bộ nhớ chung cho dữ liệu và chương trình

– Đọc dữ liệu và đọc lệnh không diễn ra đồng thời

8

Trang 9

2.1 Giới thiệu chung

• Kiến trúc Von Newmann

Trang 10

2.1 Giới thiệu chung

• Kiến trúc Harvard

– Có các bus độc lập cho bộ nhớ chương trình và dữ liệu

– Đọc dữ liệu và đọc chương trình diễn ra đồng thời

10

Trang 11

2.1 Giới thiệu chung

• Kiến trúc Harvard

Trang 12

2.1 Giới thiệu chung

• Kiến trúc SHARC – Super Harvard Architecture

– Thêm vào một số đặc trƣng để cải thiện băng thông dữ liệu

12

Trang 13

2.1 Giới thiệu chung

• Kiến trúc DSP – Digital Signal Processing

Trang 14

2.2 Cấu trúc của một hệ VXL điển hình

2.2.1 Cấu trúc chung của một hệ VXL điển hình

14

Trang 15

2.2 Cấu trúc của một hệ VXL điển hình

• Cấu trúc rút gọn

– uP: Vi xử lý

– M: Bộ nhớ (Memory)

– I: Cổng vào/Thiết bị vào dữ liệu (Input)

– O: Cổng ra/Thiết bị xuất dữ liệu (Output)

Trang 16

2.2 Cấu trúc của một hệ VXL điển hình

Trang 17

2.2 Cấu trúc của một hệ VXL điển hình

– Bus là nút dùng chung của cả hệ thống, dùng để truyền dữ liệu giữa các thành phần với nhau

– Bus có thể nằm trong hoặc nằm ngoài Vi xử lý

– Truyền thông song song: Bus là dải (tape) dây dẫn, mỗi dây truyền 1 bit

– Truyền thông nối tiếp: Bus có thể là cáp đồng trục, xoắn đôi, quang…

Trang 18

2.2 Cấu trúc của một hệ VXL điển hình

Trang 19

2.2 Cấu trúc của một hệ VXL điển hình

• Cần giải quyết vấn đề xung đột

– Phương pháp tiền định: xác định trước quy luật, thời gian truy nhập

• Tốc độ cao

• Số phần tử ít

Trang 20

2.2 Cấu trúc của một hệ VXL điển hình

Ưu nhược điểm

Trang 21

2.2 Cấu trúc của một hệ VXL điển hình

2 Tổ chức cổng vào ra

Thiết bị cơ bản

• IC 8282 – Tích hợp mạch 3 trạng thái và chốt dữ liệu

D STB

D 0

Q 0

OE

D STB

D 7

Q 7

OE STB

D0 – D7: 8 đường dữ liệu vào Q0 – Q7: 8 đường dữ liệu ra

STB: chốt tín hiệu STB = 1: cho phép đưa dữ liệu ra STB = 1->0: chốt dữ liệu đầu ra /OE: Cho phép xuất tín hiệu

Trang 22

2.2 Cấu trúc của một hệ VXL điển hình

- /RD: Lệnh chỉ thao tác đọc thiết bị

22

Trang 23

2.2 Cấu trúc của một hệ VXL điển hình

Trang 24

2.2 Cấu trúc của một hệ VXL điển hình

Ax

STB

OE

24

Trang 25

2.2 Cấu trúc của một hệ VXL điển hình

Trang 26

2.2 Cấu trúc của một hệ VXL điển hình

Trang 27

2.2 Cấu trúc của một hệ VXL điển hình

• Tổ chức của bộ nhớ:

Bộ nhớ được tạo thành từ các ô nhớ sắp xếp cạnh

nhau về mặt logic Các tham số của ô nhớ gồm:

– Vị trí (logic) của ô nhớ: là địa chỉ của ô nhớ, do bus địa chỉ truyền đi trong hệ

– Nội dung của ô nhớ: là dữ liệu chứa trong ô nhớ, do bus dữ liệu truyền đi trong hệ Thông thường, mỗi ô nhớ có độ lớn

là 8bit (1byte)

Quản lý bộ nhớ bằng phương pháp địa chỉ hóa các ô nhớ

Trang 28

2.2 Cấu trúc của một hệ VXL điển hình

• Các phương pháp địa chỉ hóa ô nhớ

– Phương pháp địa chỉ tuyệt đối:

• Địa chỉ của một ô nhớ chính là khoảng cách của nó so với địa chỉ gốc

• Địa chỉ gốc thường được xác định là 0

• Ứng dụng cho các loại bộ nhớ dung lượng nhỏ

0 1 10 11

0 1 2 3

1110 14

15 ô nhớ

28

Trang 29

2.2 Cấu trúc của một hệ VXL điển hình

– Phương pháp địa chỉ đoạn

• Chia toàn bộ bộ nhớ thành nhiều vùng (segment), mỗi vùng có một địa chỉ xác đinh

• Địa chỉ của một ô nhớ trong bộ nhớ được xác định bởi:

– Địa chỉ của segment chứa ô nhớ đó – Địa chỉ offset của ô nhớ trong segment

Segment 0 Segment 1

Segment n Địa chỉ offset

Địa chỉ segment

Trang 30

2.2 Cấu trúc của một hệ VXL điển hình

– Phương pháp địa chỉ đoạn (tiếp)

• Các thiết bị lưu trữ địa chỉ ô nhớ có kích thước nhỏ

– Ví dụ: 8085A địa chỉ hóa ô nhớ bằng 16bit -> Dùng 2 thanh ghi 8bit,

1 thanh ghi chứa địa chỉ segment, 1 chứa địa chỉ offset

Trang 31

2.2 Cấu trúc của một hệ VXL điển hình

– Bản đồ bộ nhớ: cho thấy bộ nhớ hay các thiết bị có kết nối với bus địa chỉ đƣợc đặt ở đâu trong không gian nhớ

– Ví dụ:

Trang 32

2.2 Cấu trúc của một hệ VXL điển hình

4 Vi xử lý - 8085

• Một số đặc tính cơ bản:

– Bộ xử lý 8 bit tốc độ 3 – 6MHz

– 4 đầu vào ngắt

– Có các cổng vào ra nối tiếp

– Có khả năng tính toán số học thập phân, nhị phân và dấu phẩy động

– Chu kỳ lệnh 0.8s

– Địa chỉ hóa trực tiếp cho 64KB bộ nhớ

– …

32

Trang 33

2.2 Cấu trúc của một hệ VXL điển hình

• Sơ đồ chân linh kiện

– Bus địa chỉ: AD0 – AD7 và A8 – A15

– Bus dữ liệu: AD0 – AD7

– Bus điều khiển: IO/M, RD, WR…

– ALE: Cho phép chốt địa chỉ

– SID, SOD: vào/ra dữ liệu nối tiếp

– S0, S1: trạng thái chu kỳ máy

38

2 5

6

1

29 33

39 35

21 22 23 24 25 26 27 28

12 13 14 15 16 17 18 19

9 8 7 36

ALE

WR

RD IO/M RSTOUT CLKOUT SOD

TRAP

X1

S0 S1

HOLD READY

A8 A9 A10 A11 A12 A13 A14 A15

AD0 AD1 AD2 AD3 AD4 AD5 AD6 AD7

RST 5.5 RST 6.5 RST 7.5 RSTIN

Trang 34

2.2 Cấu trúc của một hệ VXL điển hình

• Phối hợp các tín hiệu điều khiển

– MEMR: cho phép đọc từ bộ nhớ – MEMW: cho phép ghi bộ nhớ – I/OR: cho phép đọc từ cổng vào – I/OW: cho phép ghi ra cổng ra

IO/(/M) /WR

IO/(/M)

4

5

2 /RD

IO/(/M) /MEMR

Trang 35

2.2 Cấu trúc của một hệ VXL điển hình

• Biểu đồ thời gian làm việc trong 8085

Trang 36

2.2 Cấu trúc của một hệ VXL điển hình

• Sơ đồ cấu trúc Vi xử lý 8085

36

Trang 37

2.2 Cấu trúc của một hệ VXL điển hình

Trang 38

2.2 Cấu trúc của một hệ VXL điển hình

• Các thành phần điển hình:

– Thanh chứa (Accumulator – A) là một thành phần của

ALU Chứa dữ liệu 8 bit

Trang 39

2.2 Cấu trúc của một hệ VXL điển hình

Trang 40

2.2 Cấu trúc của một hệ VXL điển hình

– Thanh ghi địa chỉ bộ nhớ: lưu giữ địa chỉ, nhận về từ PC, của câu lệnh tiếp theo

– Bộ phát xung điều khiển (Control Generator) tạo ra các

xung trong uP để thực hiện các lệnh đã được giải mã

– Bộ chọn thanh ghi (Register Selector) điều khiển việc lựa chọn sử dụng các thanh ghi trong hệ thống thanh ghi của

uP

40

Trang 41

2.2 Cấu trúc của một hệ VXL điển hình

Trang 42

2.2 Cấu trúc của một hệ VXL điển hình

• Quá trình thực hiện lệnh (tiếp)

Trang 44

2.3 Chu kỳ trong Vi xử lý

1 Chu kỳ lệnh (Instruction Cycle)

Khoảng thời gian để Vi xử lý thực hiện một lệnh từ

Trang 47

2.5 Ghép nối bộ nhớ

2.5.1 Một số chip nhớ thông dụng

1 ROM

– Thiết kế bởi công nghệ NMOS, CMOS

– Dung lượng thường 2Kbyte – 64Kbyte

– Dữ liệu lưu trữ dạng ma trận

– Không bị ảnh hưởng bởi việc mất điện

– 2716, 2732, , 27256

Trang 48

2.5 Ghép nối bộ nhớ

• Ví dụ ROM 2716

48

Trang 49

2.5 Ghép nối bộ nhớ

2 RAM

• Static RAM

– Mỗi bít dữ liệu được lưu trữ bởi cặp flip-flop

– Cấu trúc đơn giản

– Ghi và xóa tín hiệu bằng điện

– Dữ liệu mất đi khi mất điện

– Tiêu thụ năng lượng lớn khi có điện

– Kích thước lớn khi dung lượng lớn

– 6216, 6232, 62256

Trang 51

2.5 Ghép nối bộ nhớ

• Ví dụ: RAM 62256

Trang 52

– Số lƣợng bit địa chỉ phải phù hợp

– Thống nhất tín hiệu điều khiển

– Bộ nhớ 2Kx8bit có 11 bit địa chỉ trong khi 4Kx8bit có

12bit địa chỉ

52

Trang 53

8 7 6 5 4 3 2 1 23 22 19

9 10 11 13 14 15 16 17

20 21 18

A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 A10

D1 D2 D3 D4 D5 D6 D7 D8

OE WE

U2 2016

8 7 6 5 4 3 2 1 23 22 19

9 10 11 13 14 15 16 17

20 21 18

A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 A10

D1 D2 D3 D4 D5 D6 D7 D8

OE WE

CE

D6 D0

A9

A4 A2

U3

NOT

1 2

D3

Trang 54

2.5 Ghép nối bộ nhớ

2.5.3 Thiết lập bộ nhớ tại địa chỉ xác định

54

Trang 55

Vấn đề về ngắt của Vi điều khiển

Chương 3

Trang 58

3.4.1 Khái niệm về ngắt

• Một số đặc điểm của vòng lặp Polling:

– Cấu trúc hệ thống đơn giản

– Các sự kiện bình đẳng, không phân cấp bậc

– Thời gian phản ứng 1 sự kiện phụ thuộc nhiều yếu

tố

– Nếu sự kiện mới thêm vào, thời gian vòng quét dài

ra

4

Trang 59

3.4.1 Khái niệm về ngắt

2 Định nghĩa Ngắt của Vi điều khiển

• Ý tưởng: Sự xuất hiện của một sự kiện làm

“ngắt” tiến trình thực hiện chương trình chính,

“nhồi” thêm và thực hiện một tiến trình khác

• Chương trình nhồi gọi là Chương trình con

dịch vụ ngắt – Interrupt Service Routine (ISR)

• ISR sau khi thực hiện xong, chương trình

chính lại tiếp tục thực hiện

Trang 61

3.4.1 Khái niệm về ngắt

• Ngắt làm chương trình có tính ưu tiên

• Ngắt giúp hệ thống phản ứng nhanh hơn với

các sự kiện

• Ngắt làm song song hóa các tác vụ trong

chương trình

• Ngắt làm chương trình phức tạp hơn

Trang 62

3.4.2 Các nguyên nhân gây ngắt

• Nguyên nhân ngắt: nguồn ngắt

• Ngắt cứng: nguồn ngắt từ bên ngoài đưa tới

– Ví dụ: Tín hiệu chuyển từ 1 -> 0 đưa về 1 chân của

Trang 63

3.4.2 Các nguyên nhân gây ngắt

Trang 64

3.4.3 Tổ chức ngắt

1 Cho phép/không cho phép ngắt

Thanh ghi IE – Interrupt Enable

10

Bit Ký hiệu Địa chỉ Mô tả IE.7 EA AFH Cho phép/không cho phép ngắt toàn cục

IE.5 ET2 ADH Cho phép ngắt từ bộ định thời 2 ( 8052)

IE.4 ES ACH Cho phép ngắt từ cổng nối tiếp

IE.3 ET1 ABH Cho phép ngắt từ bộ đinh thời 1

IE.1 ET0 A9H Cho phép ngắt từ bộ định thời 0

Trang 65

3.4.3 Tổ chức ngắt

2 Ưu tiên ngắt

Thanh ghi IP – Interrupt Priority

Bit Ký hiệu Địa chỉ Mô tả

IP.7 - Không sử dụng

IP.6 - Không sử dụng

IP.5 PT2 BDH Ưu tiên ngắt do bộ định thời 2

IP.4 PS BCH Ưu tiên ngắt do cổng nối tiếp

IP.3 PT1 BBH Ưu tiên ngắt do bộ định thời 1

IP.2 PX1 BAH Ưu tiên ngắt ngoài 1

IP.1 PT0 B9H Ưu tiên ngắt do bộ định thời 0

IP.0 PX0 B8H Ưu tiên ngắt ngoài 0

Trang 67

Cho phép ngắt từng nguồn

Cho phép ngắt toàn cục

Cho phép ngắt toàn cục

Thứ tự quét các ngắt

Thứ tự quét các ngắt

Mức ngắt thấp

Mức ngắt thấp

Thanh ghi IP

Thanh ghi IP

Trang 68

3.4.3 Tổ chức ngắt

4 Vector ngắt

• Là địa chỉ tương ứng mà tại đó ISR được đặt

• Vector ngắt là địa chỉ đầu tiên của ISR tương ứng

• Mỗi vector ngắt dành cho một nguồn ngắt xác định

14

Trang 70

– ISR được thực hiện khi INTx chuyển từ 1→0

• Cài đặt bằng 2 bit IT0 và IT1 trong TCON

16

Trang 71

3.4.3 Tổ chức ngắt

Cất nội dung PC vào Stack

Lưu trạng thái hiện hành của ngắt

Các ngắt được chặn lại ở mức ngắt

Nạp địa chỉ vector ngắt vào PC

Thực thi ISR

Trang 74

ORG 0030H ; địa chỉ bắt đầu của chương trình chính

-

- END

Trang 75

3.4.4 Lập trình cho ngắt

2 ISR có kích thước nhỏ

ORG 0000H ;vector ngắt của Reset hệ thống LJMP MAIN ;nhảy đến chương trình chính ORG 00xxH ; 00xxH là vector ngắt

ISR:

- ;nội dung của ISR RETI ;trở về chương trình chính ORG 0030H ;địa chỉ bắt đầu của chương trình chính MAIN: ;chương trình chính bắt đầu

-

-

Trang 76

LJMP ISR ;nhảy đến chương trình con ORG 0030H ; địa chỉ bắt đầu của chương trình chính MAIN: ;chương trình chính bắt đầu

-

- ISR: ;chương trình con dịch vụ ngắt

-

- RETI ;trở về chương trình chính

Trang 77

Từ cảm biến nhiệt độ

Trang 78

24

Trang 80

HOẠT ĐỘNG ĐỊNH THỜI

Chương 4

1

Trang 81

4.1 Giới thiệu chung

Trang 82

4.1 Giới thiệu chung

• Bộ định thời thường đi kèm với chức năng

đếm sự kiện (Counter)

• 8051 có 2 bộ định thời là T0 và T1

• 8052 có thêm một bộ định thời T2

3

Trang 83

4.1 Giới thiệu chung

Trang 84

4.1 Giới thiệu chung

4.1.3 Ứng dụng của định thời

– Tạo trễ hoặc tính toán thời gian chính xác gần như tuyệt đối

– Đếm sự kiện

– Tạo tốc độ baud trong truyền thông nối tiếp

– Kết hợp với ngắt để làm nền tảng cho một hệ điều hành thời gian thực hoặc đa nhiệm

5

Trang 85

4.2 Các thanh ghi liên quan

Trang 86

4.2 Các thanh ghi liên quan

4.2.2 Thanh ghi cài đặt chế độ định thời

• GATE: bit điều khiển cổng

• C/T: bit chọn chế độ đếm hay định thời

Trang 87

4.2 Các thanh ghi liên quan

• Nếu GATE = 1, bộ định thời chỉ hoạt động khi chân INTx ở mức cao

• Nếu GATE = 0 bộ định thời chỉ hoạt động khi

Trang 88

4.2 Các thanh ghi liên quan

4.2.3 Thanh ghi điều khiển định thời

Trang 89

4.3 Các chế độ định thời

4.3.1 Chế độ định thời 13bit (chế độ 0)

• Byte cao THx + 5bit TLx = Timer 13bit

• Hoạt động định thời 13 bit

• Ghép nối với các hệ Vi xử lý cũ

Trang 90

4.3 Các chế độ định thời

4.3.2 Chế độ định thời 16bit (chế độ 1)

• Byte cao THx + Byte thấp TLx = Timer 16bit

• Timer có thể đếm từ giá trị min là 0000H đến giá trị max là FFFFH

• Nội dung của THx/TLx có thể đọc hoặc ghi ở thời điểm bất kỳ

• TFx = 1 khi Timer chuyển từ FFFFH →0000H

11

Trang 91

clock n

clock 1 clock 2

TFx = 1

Lưu ý: Giá trị trong các

thanh ghi THx/TLx có thể là một giá trị bất kỳ

do người dùng đặt theo yêu cầu thực tế

Trang 92

4.3 Các chế độ định thời

4.3.3 Định thời 8bit tự động nạp lại (chế độ 2)

• TLx hoạt động định thời 8bit

• THx lưu trữ giá trị nạp lại

• TFx = 1 khi TLx chuyển từ FFH về 00H

• Nội dung của TLx có thể được đọc/ghi ở thời điểm bất kỳ

13

Trang 93

clock n

00 XYH

clock 1 clock 2 TFx = 1

Trang 94

• Bộ định thời 1 luôn chạy, không thể điều khiển

• Ứng dụng: 2 Timer 8bit và 1 Timer tạo xung cho cổng nối tiếp

15

Trang 95

4.4 Cấu trúc timer trong 8051

4.4.1 Sơ đồ khối ghép nối

Timer

Timer Clock C/T = 0

C/T = 1

Tx pin P3.5/P3.6

INTx pin

P3.2/P3.3

GATE TRx

Trang 96

4.4 Cấu trúc timer trong 8051

4.4.2 Clock của bộ định thời

• Được tính từ tần số của thạch anh

• Một số loại thạch anh thông dụng:

– 4MHz; 8MHz; 10MHz; 11,0592MHz; 12MHz…

• Việc chọn thạch anh ảnh hưởng tới hệ thống

thời gian của toàn hệ thống

17

Trang 97

4.4 Cấu trúc timer trong 8051

4.4.2 Hoạt động đếm – bộ đếm (counter)

• Sử dụng tín hiệu clock từ bên ngoài

• C/T phải bằng 1

• Nội dung của Timer chính là số đã đếm

• Các chế độ của bộ đếm cũng giống của timer

• Ứng dụng: đếm sự kiện: sản phẩm, người,

xe…

Trang 98

4.4 Cấu trúc timer trong 8051

4.4.3 Bit điều khiển cổng – GATE

• GATE = 1: cho phép điều khiển timer từ tín

hiệu bên ngoài

• Việc điều khiển bật/tắt timer vẫn phải bằng

TRx

19

Trang 99

4.5 Lập trình cho Bộ định thời

4.5.1 Sử dụng chế độ 16bit (chế độ 1)

 Chọn Timer làm việc

 Cài đặt chế độ cho Timer tương ứng bằng TMOD

 Nạp giá trị cho các thanh ghi THx/TLx

 TRx = 1

 Chờ cờ tràn TFx = 1

 Nạp lại THx/TLx và xóa cờ TFx cho chu kỳ sau

 Thực hiện các công việc cần thiết

 Quay trở lại bước 

Trang 100

SETB TRx ; Khởi động Timer WAIT:

JNB TFx, WAIT ; Chờ cờ tràn MOV THx, #xxxxB

MOV TLx, #xxxxB CLR TFx ; xóa cờ TFx

- ; Thực hiện các công việc

JMP WAIT ; quay trở lại chờ chu kỳ sau

Trang 101

4.5 Lập trình cho Bộ định thời

• Ví dụ 1: Tạo xung vuông có duty-cycle = 50%

trên chân P1.5, sử dụng Timer 0

MOV TMOD, #01H MOV TL0, #0F2H MOV TH0, #0FFH SETB TR0

WAIT:

JNB TF0, WAIT MOV TL0, #0F2H MOV TH0, #0FFH CLR TF0

CPL P1.5 SJMP WAIT

Trang 102

4.5 Lập trình cho Bộ định thời

• Ví dụ 2: Tạo xung vuông 2KHz trên P1.5

– Sử dụng thạch anh 12MHz → clock = 1MHz

– Xung vuông có chu kỳ T = 1/2000 = 500μs nên

khoảng thời gian cao/ thấp = 1/T = 250μs

Trang 103

4.5 Lập trình cho Bộ định thời

4.5.2 Sử dụng chế độ 8bit tự nạp lại

 Chọn Timer làm việc

 Cài đặt chế độ cho Timer tương ứng bằng TMOD

 Ghi giá trị nạp lại cho THx

 TRx = 1

 Chờ cờ tràn TFx = 1

 Xóa cờ TFx cho chu kỳ sau

 Thực hiện các công việc cần thiết

 Quay trở lại bước 

Trang 104

4.5 Lập trình cho Bộ định thời

• Cấu trúc chương trình

25

- - MOV TMOD, #xxxx xxxxb ; Cài đặt cho Timer MOV THx, #xxxxB ; Ghi giá trị nạp lại SETB TRx ; Khởi động Timer WAIT:

JNB TFx, WAIT ; Chờ cờ tràn CLR TFx ; xóa cờ TFx - ; Thực hiện các công việc - ; theo yêu cầu

JMP WAIT ; quay trở lại chờ chu kỳ sau

Ngày đăng: 06/07/2016, 09:02

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w