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

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

Đ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

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

CHƢƠNG TỔNG QUAN VỀ HỆ VI XỬ LÝ Mục lục 2.1 Giới thiệu chung 2.2 Cấu trúc hệ Vi xử lý điển hình 2.3 Chu kỳ Vi xử lý 2.4 Tập lệnh Vi xử lý 2.5 Ghép nối nhớ 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 chip (IC) có nhiệm vụ thực công việc xử lý tín hiệu điều khiển thành phần hệ thống – Vi xử lý thực công việc theo chƣơng trình, thuật toán ngƣời dùng đặt – Ký hiệu: P uP 2.1 Giới thiệu chung • Phân loại Vi xử lý Vi xử lý Loại đa năng: Phục vụ cho nhiều mục đích khác Ví dụ: 8080, 8085 … Intel 6800, 6802… Motorola Loại chuyên dụng: Phục vụ mục đích cụ thể Ví dụ: IC đồ chơi trẻ em • Hoặc phân loại theo số lƣợng bit: Vi xử lý 4bit, 8bit, 16bit, 32 bit 64bit • Chip Intel dùng nhiều máy tính Motorola dùng nhiều viễn thông 2.1 Giới thiệu chung • Lịch sử đời phát triển Vi xử lý 2005 Power PC (IBM) 64bit 1993 32 bit AT&T: BELLMAC-32A 1985 1976 1971 1960 1999 Intel: Multi Core 1990 Intel: Pentium, Xeon, Celeron 1982 Motorola: 680xx ARM I Zilog: Z-80 TI: VXL 16bit Intel: 4004, 8008, 8080 Fairchild Semiconductor: Chip bán dẫn Thương mại hóa chip bán dẫn Tăng mật độ, Máy tính chip VLSI 32 bit 32bit nhường chỗ 64bit Kỷ nguyên đa lõi 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ữ nhớ, xử lý liệu vi xử lý đƣa định liên lạc với giới bên thông qua cổng vào – Một hệ Vi xử lý bao gồm thành phần: Phần cứng phần mềm 2.1 Giới thiệu chung 2.1.3 Các thành phần hệ Vi xử lý 2.1 Giới thiệu chung 2.1.4 Các kiến trúc thông dụng Vi xử lý • Kiến trúc Von Neumann – Chỉ có nhớ chung cho liệu chƣơng trình – Đọc liệu đọc lệnh không diễn đồng thời 2.1 Giới thiệu chung • Kiến trúc Von Newmann 2.1 Giới thiệu chung • Kiến trúc Harvard – Có bus độc lập cho nhớ chƣơng trình liệu – Đọc liệu đọc chƣơng trình diễn đồng thời 10 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 TMOD  Nạp giá trị cho ghi THx/TLx  TRx =  Chờ cờ tràn TFx =  Nạp lại THx/TLx xóa cờ TFx cho chu kỳ sau  Thực công việc cần thiết  Quay trở lại bước  20 4.5 Lập trình cho Bộ định thời • Cấu trúc chương trình MOV MOV MOV SETB WAIT: JNB MOV MOV CLR JMP TMOD, #xxxx xxxxb THx, #xxxxB TLx, #xxxxB TRx ; Cài đặt cho Timer ; Nạp giá trị hoạt động TFx, WAIT THx, #xxxxB TLx, #xxxxB TFx ; Chờ cờ tràn WAIT ; Khởi động Timer ; xóa cờ TFx ; Thực công việc ; theo yêu cầu ; quay trở lại chờ chu kỳ sau 21 4.5 Lập trình cho Bộ định thời • Ví dụ 1: Tạo xung vuông có duty-cycle = 50% chân P1.5, sử dụng Timer MOV MOV MOV SETB TMOD, #01H TL0, #0F2H TH0, #0FFH TR0 JNB MOV MOV CLR CPL SJMP TF0, WAIT TL0, #0F2H TH0, #0FFH TF0 P1.5 WAIT WAIT: 22 4.5 Lập trình cho Bộ định thời • Ví dụ 2: Tạo xung vuông 2KHz 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 – Clock có chu kỳ 1/1MHz = 1μs → Số nhịp cần đếm = 250μs/1μs = 250 lần → Số cần nạp vào ghi = 65536 – 250 = 65286 65286 = FF06H → TLx = 06H; THx = FFH 23 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 TMOD  Ghi giá trị nạp lại cho THx  TRx =  Chờ cờ tràn TFx =  Xóa cờ TFx cho chu kỳ sau  Thực công việc cần thiết  Quay trở lại bước  24 4.5 Lập trình cho Bộ định thời • Cấu trúc chương trình MOV TMOD, #xxxx xxxxb MOV THx, #xxxxB SETB TRx WAIT: ; Cài đặt cho Timer ; Ghi giá trị nạp lại ; Khởi động Timer JNB TFx, WAIT CLR TFx JMP WAIT ; Chờ cờ tràn ; xóa cờ TFx ; Thực công việc ; theo yêu cầu ; quay trở lại chờ chu kỳ sau 25 4.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 đoạn lệnh sau – Tần số nhỏ bao nhiêu? MOV MOV SETB TMOD, #20H TH1, #5 TR1 JNB CLR CPL SJMP TF1, WAIT TF1 P1.0 WAIT WAIT: 26 4.5 Lập trình cho Bộ định thời • Lời giải: – Chu kỳ clock = 12/11,0592 = 1,085μs – Phần cao 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ỏ TH1 = 00H – Khi đó, chu kỳ xung = 2x256x1,085 = 555,52μs → Tần số nhỏ = 1,8KHz 27 4.5 Lập trình cho Bộ định thời 4.5.3 Lập trình đếm kiện • Ví dụ: Đoạn lệnh sau đếm xung xuất chân T1 hiển thị số xung đếm cổng P2 MOV MOV SETB AGAIN: SETB BACK: MOV MOV JNB CLR CLR SJMP TMOD, #0110 0000B TH1, #0 P3.5 TR1 A, TL1 P2, A TF1, BACK TR1 TF1 AGAIN 28 4.5 Lập trình cho Bộ định thời 4.5.4 Một số ý việc lập trình • Trình dịch hợp ngữ tự tính giá trị 8bit nạp cho ghi • Ví dụ: MOV TH0, #-100 trình dịch hợp ngữ tính FFH – 100D = 9CH gán thành câu lệnh MOV TH0, #9CH 29 4.6 Bộ định thời thứ 8052 4.6.1 Các chế độ hoạt động • Dùng đị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 30 4.6 Bộ định thời thứ 8052 4.6.2 Các ghi • T2CON Bit TF2 Bit0 EXF2 RCLK TCLK EXEN2 TR2 C/T2 CP/RL2 – TF2: Cờ tràn – EXF2: Cờ định thời Dùng chế độ Capture 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 Dùng cho Capture nạp lại – C/T2: Chọn chế độ đếm/định thời – CP/RL2: Capture/Reload 31 4.6 Bộ định thời thứ 8052 • RCAP2L RCAP2H – Lưu giá trị nạp lại – Lưu giá trị capture chế độ bắt xung • TH2/TL2: ghi định thời 32 4.6 Bộ định thời thứ 8052 4.6.3 Các chế độ • Chế độ tự nạp lại: – Hoạt động giống Timer – 16bit Timer – Các giá trị nạp lại đặt RCAP2H RCAP2L – CP/RL2 = – TF2 = có tràn TH2/TL2 từ FFFFH 0H 33 4.6 Bộ định thời thứ 8052 • Chế độ capture – Nội dung TH2/TL2 chụp chuyển vào RCAP2H RCAP2L T2EX (P1.1) = 1→0 – CP/RL2 = – EXEN2 = – Dùng để đo độ rộng xung 34

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