1. Trang chủ
  2. » Giáo Dục - Đào Tạo

Bài giảng Kỹ thuật Vi Xử Lý

21 332 0

Đ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

Nội dung

125 Nguyn ỡnh Luyn Bi ging K thut Vi X Lý Khoa K thut & Cụng ngh - i Hc Quy Nhn CHƯƠNG VI Bộ định thời 8253/54 6.1 Bộ định thời 8253 * Giới thiệu Trong máy tính PC ngời ta sử dụng đồng hồ để đồng hoạt động tất chip ngoại vi nối tới CPU Tần số đồng hồ cao đợc dùng cho vi xử lý 80x86 Một số thiết bị ngoại vi làm việc với tần số thấp Bộ định thời lập trình đợc PIT 8253/54 (Programable Interval Timer) dùng để giảm tần số đồng hồ theo yêu cầu ứng dụng Vi mạch lập trình 8253A mạch đếm đợc lập trình (programmable interval timer/counter) Nó thực chức máy tính IBM-PC mạch điều khiển thời gian, phát tín hiệu đồng hồ, kiểm soát one-shot, đếm kiện, phát tần số điều khiển motor * Tổ chức sơ đồ khối bố trí chân 8253A BUS liệu điều khiển nội D0-D7 Data RD W A0 A1 CS Bộ đệm BUS liệu count CLK0 Gate0 Out0 Đọc ghi logic count CLK1 Gate1 Out1 Thanh ghi từ đ/k count CLK2 Gate2 Out2 Hình 7.1 Sơ đồ chức mạch định thời lập trình hoá 8253A Mạch 8253 gồm có ba đếm 16 bits lập trình hoạt động độc lập với Chúng hoạt động Mode đếm nhị phân BCD Có thể chia cấu trúc 8253 làm phần: - Lối vào gồm đệm liệu vào (Data Bus Buffer), mạch điều khiển logic đọc/ghi (Read/Write Logic) ghi từ điều khiển (Control Word Nguyn ỡnh Luyn 126 Bi ging K thut Vi X Lý Khoa K thut & Cụng ngh - i Hc Quy Nhn Register) - Bus nội dùng để chuyển số liệu tín hiệu điều khiển đầu vào đầu - Đầu gồm có ba đếm 16 Bits làm việc chế độ đếm ngợc Khối Bộ đệm BUS liệu - Data Bus Buffer: Gồm đầu D0-D7 cổng ba trạng thái, có hai chiều đợc dùng để nối 8253 với Bus hệ thống máy tính Số liệu đợc phát nhận nhờ lệnh INPUT OUTPUT BVXL Bộ đệm liệu có chức sau: - Lập Mode làm việc cho 8253 - Nạp số liệu cho đếm - Đọc giá trị đếm Khối dọc ghi Logic: Gồm có Mạch kiểm soát logic đọc/ ghi nhận điều khiển từ Bus hệ thống phát tín hiệu điều khiển cho khối chức 8253 Mạch đợc chọn cấm tín hiệu CS Thanh ghi từ điều khiển - Control Word Register Thanh ghi từ điều khiển đợc chọn A0, A1 có giá trị logic 1, số liệu đợc ghi từ Data Bus Buffer vào ghi chế độ làm việc cho đếm đếm nhị phân, đếm BCD nạp giá trị đầu cho đếm Control Word Register ghi số liệu đợc vào đọc số liệu Ba đếm Counter #0, Counter #1, Counter#2 Ba đếm nh mô tả trên, đếm 16 Bits đặt đợc, làm Bảng 6.1 Định địa cổng việc chế độ đếm lùi, theo mã nhị phân 8253/54 BCD đầu vào đầu lập Cổng CS A1 A0 trình qua Control Word Register Việc đọc 0 Bộ đếm nội dung đếm đợc 0 Bộ đếm thực nhờ lệnh đọc Bộ đếm * Bố trí chân 8253/54 1 Thanh ghi điều khiển x x Không chọn 8253/54 A0, A1, CS Bộ định thời 8253/54 có đếm Các đếm làm việc độc lập đợc lập trình riêng để thực chia tần số vào cho giá trị nằm khoảng từ - 65536 Mỗi đếm đợc gán địa cổng Thanh ghi điều khiển dùng chung cho đếm có địa cổng riêng Nh vậy, định thời 8253/54 có tổng cộng cổng Các cổng đợc địa hoá chân A0, A1 CS , nh giới thiệu bảng 6.1 Mỗi Nguyn ỡnh Luyn 127 Bi ging K thut Vi X Lý Khoa K thut & Cụng ngh - i Hc Quy Nhn đếm có chân CLK (clock), D7 24 Vcc D6 23 GATE OUT (hình 6.2) WR D5 22 RD RD (chân 22) tín hiệu có D4 21 CS D3 20 mức tích cực thấp dùng để báo A1 D2 19 A0 cho 8253 biết BVXL D1 18 CLK2 đọc số liệu từ 8253 D0 17 OUT2 CLK0 16 GATE2 WR (chân 23) tín hiệu có OUT0 10 15 CLK1 mức tích cực thấp dùng để báo GATE 11 14 GATE1 GND 12 13 OUT1 cho 8253 biết BVXL thực ghi số liệu vào CLK0 gi 8253 D7-D0 CLK CLK tần số đồng hồ vào Đối với 8253, tần số có giá trị khoảng 0-2 MHz Với tần số MHz cần sử dụng chip 8254 8254 làm việc đợc với tần số đến MHz, 8254-2 - 10 MHz GATE0 OUT0 WR RD 8253 A0 A1 CLK1 GATE1 OUT1 CLK2 GATE2 OUT2 CS Hình 7.2 Sơ đồ chức bố trí chân OUT chip 8253 Mặc dù tần số vào xung vuông với hệ số đầy xung 33%, nhng lập trình để chọn dạng xung chân OUT sau thực chia tần số Trong số tuỳ chọn dạng xung có: xung vuông, xung đơn xung vuông với hệ số đầy xung khác nhau, nhiên dạng hình sin ca GATE Chân Gate đợc sử dụng để mở khoá đếm Đặt chân GATE lên mức cao (5 V) cho phép mở đếm, trái lại đa thấp (0V) khoá đếm Trong số chế độ, cần đặt vào chân GATE sờn xung lên (từ lên 1) để mở đếm D0-D7 D0-D7 8253/54 bus liệu hai chiều đợc nối tới D0-D7 bus liệu hệ thống Bus cho phép CPU truy nhập ghi 8253/54 hai thao tác đọc ghi Chân RD WR (cả hai tích cực thấp) đợc nối tới tín hiệu điều khiển IOR IOW bus hệ thống 128 Nguyn ỡnh Luyn Bi ging K thut Vi X Lý Khoa K thut & Cụng ngh - i Hc Quy Nhn * Khởi tạo 8253/54 Ba đếm 8253/54 đợc lập trình riêng rẽ Để lập trình cho đếm, trớc hết byte điều khiển cần đợc ghi vào ghi điều khiển với nội dung thông báo dạng xung cần thiết cho 8253/54 Ngoài ra, giá trị dùng để chia (số chia) xung đầu vào phải đợc ghi vào đếm 8253/54 Số chia lớn, ví dụ FFFF (16 bit), bus liệu định thời 8253/54 có bit, dĩ nhiên số chia lần gửi đợc byte 8253/54 phải đợc khởi tạo trớc sử dụng * Từ điều khiển Hình 6.3 giới thiệu từ điều khiển byte 8253/54 Byte đợc gửi tới D7 D6 D5 D4 D3 D2 SC1 SC0 RL1 RL0 M2 M1 D1 M0 D0 BCD Bộ đếm nhị phân (16 bit) BCD (4 decades) 0 1 1 chọn đếm chọn đếm chọn đếm không hợp lệ 0 1 chốt đếm đọc/tải LSB đọc/tải MSB đọc/tải LSB trớc, 0 x x 1 0 1 0 1 Mode Mode Mode Mode Mode Mode Hình 7.3 Từ điều khiển 8253/54 ghi điều khiển, gồm bit nh sau: D0 cho phép chọn số chia nhị phân (0000-FFFFH) hay BCD (00009999H) Số chia nhỏ cho hai tuỳ chọn 0001 Số chia lớn 216 (nhị phân) 104 (BCD) Để có đợc số đếm lớn (65.536 với số thập phân 10000 với BCD), đếm cần đợc nạp giá trị D1, D2 D3: chọn chế độ Có chế độ xác định dạng tín hiệu Mode Ngắt đếm hết Mode Tạo xung Mode Bộ tạo hệ số đầy xung Mode Bộ tạo xung vuông Mode Xung đợc kích phát phần mềm Mode Xung đợc kích phát phần cứng Nguyn ỡnh Luyn 129 Bi ging K thut Vi X Lý Khoa K thut & Cụng ngh - i Hc Quy Nhn Ví dụ 6.1 Chân CS 8253/54 đợc kích hoạt địa nhị phân A7-A2 =100101 a) Tìm địa cổng gán cho 8253/54 b) Xác định cấu hình ứng với 8253/54 ghi điều khiển đợc lập trình nh sau: MOV AL,00110110 OUT 97H,AL Giải: a) Từ bảng 6.1 có: CS A1A0 Cổng Địa cổng (hex) 1001 01 00 Bộ đếm 94 1001 01 01 Bộ đếm 95 1001 01 10 Bộ đếm 96 1001 01 11 Thanh ghi điều khiển 97 b) So sánh từ điều khiển 00 11 011 với bảng 5.1, xác định đếm CS có giá trị 00 RL 11 xác định đọc/ghi byte LSB trớc MSB sau Chọn chế độ 011 nên chế độ (xung vuông) cuối chọn dạng đếm nhị phân bit D0 = D4 D5 cho RL0 RL1 Bus liệu 8253/54 bit (1 byte), nhng số chia tần số vào lớn (FFFFH) Vì thế, RL0 RL1 đợc sử dụng để kích thớc số chia RL0 RL1 có tuỳ chọn: (1) đọc/viết byte trọng số cao (MSB), (2) đọc/viết byte trọng số thấp, (3) đọc/viết LSB trớc MSB sau Nh vậy, với tuỳ chọn RL0 RL1, lập trình viên ghi giá trị số chia vào định thời 8253/54 song lại đọc nội dung đếm vào lúc Tất đếm đếm lùi ghi đếm giảm, nên nội dung ghi đếm đọc lúc D6 D7 đợc sử dụng để chọn đếm, đếm 0, đếm hay đếm đợc khởi tạo byte điều khiển Ví dụ 6.2 Sử dụng địa cổng ví dụ 6.1 để lập trình: a) Bộ đếm với số đếm nhị phân, chế độ (tạo xung vuông) chia CLK0 cho 4282 (BCD) b) Bộ đếm với số đếm nhị phân, chế độ (tạo xung vuông) chia CLK2 cho C26AH Nguyn ỡnh Luyn 130 Bi ging K thut Vi X Lý Khoa K thut & Cụng ngh - i Hc Quy Nhn c) Tìm tần số OUT0 OUT2 trờng hợp (a) (b) CLK0=1,2 MHz CLK2=1,8 MHz Giải: a) Để lập trình đếm chế độ 3, có từ điều khiển 0011011, thế: MOV AL,37H ;bộ đếm 0, chế độ 3, BCD OUT 97H,AL ;gửi tới ghi điều khiển MOV AX,4282H ;nạp số chia (BCD) OUT 94H,AL ;gửi byte thấp MOV AL,AH ;đến đếm OUT 94H,AL ;và sau gửi byte cao đến đếm b) Bằng cách tơng tự: MOV AL,B6H ;bộ đếm 2, chế độ 3, nhị phân (hex) OUT 97H,AL ;gửi tới ghi điều khiển MOV AX,C26AH ;nạp số chia OUT 96H,AL ;gửi byte thấp MOV AL,AH ;đến đếm OUT 96H,AL ;và sau gửi byte cao đến đếm c) Tần số OUT0 1,2 MHz : 4282, đợc 280 Hz Chú ý chơng trình phần A sử dụng lệnh MOV AX, 4282H số BCD Hexa biểu diễn số nh 9999 Với OUT2, CLK2 1,8 MHz chia cho 49770 (do C26AH=49770 D) Vì thế, OUT2 có xung vuông với tần số 36 Hz Để lập trình đếm 8253/54 nhằm xác định số chia tần số vào CLK, cần phải gửi số chia tới ghi đếm Nói cách khác, đếm dùng chung ghi, song ghi lu số chia riêng cho đếm - nh giới thiệu ví dụ 6.3 Ví dụ 6.3 Sử dụng địa cổng ví dụ 6.1, lập trình cho đếm chia CLK1 cho 10.000 tạo xung vuông chế độ Hãy sử dụng tuỳ chọn BCD byte điều khiển Giải: MOV AL,77H ;bộ đếm 1, chế độ 3, BCD OUT 97H,AL ;gửi đến ghi điều khiển SUB AL,AL ;AL=0 nạp số chia 10000 OUT 95H,AL ;gửi byte thấp 131 Nguyn ỡnh Luyn Bi ging K thut Vi X Lý Khoa K thut & Cụng ngh - i Hc Quy Nhn OUT 95H,AL ;và sau gửi byte cao đến đếm Nếu sử dụng tuỳ chọn thập phân (D0=1) lập trình cho đếm với số chia 9999, dĩ nhiên tần số vào đợc chia cho giá trị Tuy nhiên, số chia 10.000 cần chuyển vào byte thấp cao, nh giới thiệu ví dụ 5.3 Nếu sử dụng tuỳ chọn nhị phân (D0=0), lập trình cho số chia đến 65.536 Để tạo đợc số chia 65536, phải nạp vào byte thấp byte cao số chia 6.2 Nối ghép v lập trình cho 8253/54 Bảng 6.2 Xác định địa cổng 8253/54 máy tính PC Địa Địa nhị phân (Binary) Hex Chức A3 A2 A1 A0 CS A9 A8 A7 A6 A5 A4 Bộ đếm 0 x x x 0 40 Bộ đếm 1 0 x x x 41 Bộ đếm 0 x x x 42 Thanh ghi điều khiển 0 x x x 1 43 LS138 A5 A6 A7 A8 A9 AEN A B C Y2 G2B G2A 8253 CS A0 A1 A0 A1 Hình 7.4 Chọn cổng 8253 máy tính PC/XT Máy tính IBM PC sử dụng chip 74LS138 để mã hoá địa chân CS 8253 nh giới thiệu hình 6.4 Các địa cổng đợc chọn nh bảng 6.2, giả thiết x Chơng trình bày chi tiết việc chọn lựa cổng 132 Nguyn ỡnh Luyn Bi ging K thut Vi X Lý Khoa K thut & Cụng ngh - i Hc Quy Nhn 18.2 Hz đến IRQ0 8259 OUT0 CLK0 GATE0 +5v 8253 +5 OUT1 CLK1 GATE1 Mở loa PB0 8255 Port 61 +5v 2.383MHz PCLK 8284 D CIK Pr CLR CLK2 GATE2 (Chia 2) 74LS175 D Q CI Q DACKBRD 74LS74 DREQ DMA 8237 đến cassette OUT2 đến PC5 8255 đến mạch ĐK loa 1.19 M Hz RESET 74LS38 Dữ liệu loa +5v PB1 8255 Port 61 Hình 6.5 Ghép nối chip 8253 Cả ba đồng hồ 8253 CLK0, CLK1 CLK2 đợc nối tới tần số không đổi 1,1931817 MHz Tần số có nguồn gốc từ chân PCLK chip 8284 Nh trình bày chơng 1, PCLK có tần số 2,3863633 MHz Tần số cần đợc chia đôi tần số vào cực đại cho phép CLK 8253 MHz Do ngời ta sử dụng mạch chia đôi D 74LS175 Tín hiệu mạch D đợc đa tới chân CLK 8253 (xem hình 7.5) GATE0 GATE1 đợc nối tới mức cao (5 V) cho phép mở đếm đếm tơng ứng, nh hai đếm đợc mở liên tục GATE2 đếm cho phép mở cấm nhờ đờng PB0 cổng B 8253 Nh vậy, tần số vào định thời đợc biết, việc lập trình ứng dụng đếm đợc làm rõ * Sử dụng đếm CLK0 đếm có tần số 1,193 MHz GATE0 đợc đặt mức cao, OUT0 đếm đợc nối đến IRQ0 (ngắt có mức u tiên cao nhất) điều khiển ngắt 8259 để cung cấp ngày tháng năm (và dĩ nhiên dịch vụ khác) Câu hỏi là: IRQ0 đợc kích hoạt với tần số bao nhiêu? IRQ0 đợc kích hoạt 18,2 lần giây, hay nói cách khác - với tần số đầu OUT0 18,2 Hz Tần số CLK0 1,193 MHz tần số Nguyn ỡnh Luyn 133 Bi ging K thut Vi X Lý Khoa K thut & Cụng ngh - i Hc Quy Nhn 18,2 Hz, nh đếm cần đợc lập trình để đợc số chia 65.536 Sóng có dạng xung vuông (8253 chế độ 3) Ngời ta sử dụng sờn dơng xung vuông để kích phát IR0 nhằm tránh nhầm lẫn với trờng hợp ngắt nhiều lần Xem hình 6.3 với thông tin nêu trên, tính đợc từ điều khiển nh sau: D0=0 cho trờng hợp số chia nhị phân hexa Bộ đếm thực đếm lùi sau xung vào đạt đến sau giá trị ban đầu lại đợc nạp lại Do để chia tần số vào cho 65536, giá trị đợc nạp cho byte thấp byte cao D3D2D1=011, chế độ cho xung vuông với tần số 18,2 Hz D4D5=11 đọc/ghi LSB trớc, MSB sau D7D6=00 chọn đếm Nh từ điều khiển có giá trị: D7 D6 D5 D4 D3 D2 D1 D0 0 1 1 = 36H Chơng trình đếm nh sau: MOV AL,36H ;từ điều khiển OUT 43H,AL ;đến ghi điều khiển 8253 MOV AL,00 ;LSB MSB chia OUT 40H,AL ;LSB tới đếm OUT 40H,AL ;MSB tới đếm Nên lu ý IR0 không cung cấp ngày tháng năm IR0 hỗ trợ BIOS để kiểm tra trạng thái tắt mở động ổ đĩa mềm, giúp ngời dùng viết chơng trình ứng dụng Với tần số 18,2 Hz (hay 54,94 ms), BIOS kích hoạt ngắt cách nhảy tới INT 1CH bảng vector ngắt Ngời dùng định nghĩa CS:IP chơng trình để trỏ tới INT 1CH Nếu ngời dùng không sử dụng ngắt này, quyền điều khiển tự động trả BIOS * Sử dụng đếm đếm 1, CLK1 đợc nối đến tần số 1,193 MHz GATE đợc nối trực tiếp đến nguồn V Đầu OUT1 tạo xung tuần hoàn cần cho làm tơi nhớ DRAM Quá trình làm tơi ô nhớ đợc thực tối thiểu 15 s máy tính IBM PC/XT nhiệm vụ làm tơi DRAM DMA 8237 đảm nhiệm Chip sử dụng đếm 8253 định kỳ thông báo cho DMA thời gian làm tơi Để thực nhiệm vụ này, OUT1 cung cấp cho DMA xung Nguyn ỡnh Luyn 134 Bi ging K thut Vi X Lý Khoa K thut & Cụng ngh - i Hc Quy Nhn rộng khoảng 15 s (hay tần số 66,278 Hz) Nghĩa là, đếm phải chia tần số 1,19318 MHz cho 18 (1,19318 MHz : 18 = 66,278 Hz) Câu hỏi đặt xung rộng 15 s? Vì phải làm tơi 128 hàng DRAM 64Kbit 256 Kbit 15 s đợc làm tơi lần chu kỳ làm tơi 15 s x 128 = 1,92 ms (đây thời gian làm tơi chấp nhận đợc yêu cầu không vợt ms) Căn vào hình 6.3, byte điều khiển nh sau: D0=0 giá trị nhị phân D3D2D1=010, dạng xung chế độ chế độ này, OUT1 mức cao thời gian 18 xung xuống mức thấp xung Quá trình đợc lặp lại D5D4=01 cần LSB byte nhỏ FF CLK1 đợc chia cho 18; đó, 18 ghi vào LSB đủ, không cần sử dụng MSB D7D6=01 chọn đếm Tóm lại từ điều khiển nh sau: D7 D0 01010100 = 54H Chơng trình đếm 8253 BIOS IBM (với số thay đổi cho dễ hiểu) nh sau: MOV AL,54H ;từ điều khiển OUT 43H,AL ;đến ghi điều khiển MOV AL,18 ;số chia 18 (hệ thập phân) OUT 41H,AL ;đến đếm * Sử dụng đếm Đầu đếm đợc nối đến thiết bị khác nhau: loa chân PC5 8255 Trong máy IBM PC/XT trớc đây, chân đợc nối tới cassette Tuy nhiên tuỳ chọn từ lâu không đợc sử dụng Cũng cần lu ý đếm IBM PC đợc dùng để phát nhạc, quan tâm tìm hiểu tiếp phần sau * Sử dụng định thời để tạo âm loa Trong máy tính IBM PC, CLK2 đợc nối với tần số 1,19318 MHz GATE2 đợc lập trình qua PB0 cổng 61H (cổng B) BIOS dùng định thời để tạo tiếng bíp, nhiên bạn thay đổi để chơi nốt nhạc - nh trình bày phần Tiếng bíp có tần số 896 Hz chế độ (xung vuông) Chia tần số vào 1,19318 MHz cho 896 Hz ta đợc 1331 (0533 hex) giá trị đợc nạp vào đếm Nh vậy, ta có từ điều khiển nh sau: Nguyn ỡnh Luyn 135 Bi ging K thut Vi X Lý Khoa K thut & Cụng ngh - i Hc Quy Nhn D7D6D5D4D3D2D1D0 1 1 = B6H tuỳ chọn nhị phân, chế độ (xung vuông), LSB trớc, MSB sau, đếm Chơng trình nh sau: MOV AL,0B6H ;từ điều khiển OUT 43H,AL MOV AL,33H ;byte thấp OUT 42H,AL MOV AL,05 ;byte cao OUT 42H,AL chơng trình BIOS IBM: TIMER EQU MOV AL,10110110B ;đặt TIM 2, LSB, MSB, nhị phân OUT TIMER+3,AL ;ghi vào ghi chế độ MOV AX,533H ;số chia ứng với 896 Hz OUT TIMER+2,AL ;ghi TIMER CNT - LSB MOV AL,AH OUT TIMER+2,AL ;ghi TIMER CNT - MSB Bật loa dùng PB0 PB1 cổng 61H tất máy tính IBM PC tơng thích, từ 8088 Intel Pentium, trình bật loa nh Nh thấy hình 6.5, GATE2 phải đợc nối lên mức cao để cung cấp CLK đến đếm Chức đợc thực nhờ PB0 cổng 61H Đầu OUT2 đếm đợc nối vào mạch AND với PB1 cổng 61H, sau đa vào mạch điều khiển loa Do đó, PB1 cổng 61H mức cao, cho phép đa OUT2 loa Sau đoạn chơng trình bật loa kêu bíp (chơng trình BIOS) IN AL,61H ;nhận thiết lập cổng B MOV AH,AL ;chuyển sang AH để cất OR AL,00000011B ;thiết lập PB0=1 PB1=1 OUT 61H,AL ;bật loa kêu {kêu đoạn xác định} MOV AL,AH ;trở lại thiết lập ban đầu cổng B OUT 61H,AL ;tắt loa Nguyn ỡnh Luyn 136 Bi ging K thut Vi X Lý Khoa K thut & Cụng ngh - i Hc Quy Nhn Thời gian kéo dài nốt nhạc ứng với thời gian trễ vi xử lý 80x86 máy tính tạo * Tạo thời gian trễ máy PC 80x86 Rất nhiều ứng dụng cần đến thời gian trễ Do việc tạo thời gian trễ máy 8088/86 khác với máy 80286, 386, 486 Pentium nên tìm hiểu riêng * Tạo trễ PC/XT 8088/86, PS/2 tơng thích Chơng trình để tạo thời gian trễ là: MOV CX,N AGAIN: LOOP AGAIN Đối với CPU 8088/86, lệnh LOOP thực 17 chu kỳ đồng hồ; thời gian trễ xấp xỉ N x T chu kỳ x 17 Ví dụ, CX=28000 tần số hệ thống 4,7 MHz (đối với PC/XT ban đầu T=210 ns), thời gian trễ khoảng 28000 x 210 ns x 17 100 ms Nói thời gian trễ xấp xỉ CPU "tạm ngng" cho phép DMA làm tơi nhớ Nói cách khác, thời gian trễ thực tế có khác 100 ms chút Chơng trình BIOS PC/XT, IBM viết sử dụng phơng pháp để tạo trễ cho âm bíp nh sau: SUB CX,CX G7: LOOP G7 DEC BL JNZ G7 Với CX=65536, LOOP G7 cho độ trễ 250 ms (210 ns x 65536 x 17 = 234 ms), chiếm thời gian đáng kể để làm tơi nhớ hệ thống BL chứa thời gian trễ 250 ms Nếu tần số công tác 8088/86 MHz (nh IBM PS/2 25), T = 125 ns (1/8 MHz = 125 ns) thời gian trễ ngắn nhiều Điều có nghĩa độ trễ không phụ thuộc vào tần số mà phụ thuộc vào CPU, 80286 lệnh LOOP chu kỳ đồng hồ (chứ 17 chu kỳ đồng hồ nh CPU 8088/86) Tơng tự, lệnh LOOP 11 chu kỳ đồng hồ CPU 386 486 tơng ứng Đây lý cho thấy từ máy tính PC/AT trở (80286, 80386, 80486, Pentium ), IBM sử dụng mạch tạo trễ riêng với thời gian trễ không lệ thuộc vào tần số lẫn CPU * Thời gian trễ IBM PC 80x86 (từ 286 sau) Phơng pháp tạo độ trễ cố định phần cứng đợc thực IBM PC/AT sau tất máy tính 286, 386, 486 Pentium tơng Nguyn ỡnh Luyn 137 Bi ging K thut Vi X Lý Khoa K thut & Cụng ngh - i Hc Quy Nhn thích Điều có ý nghĩa xử lý sau vừa có tần số làm việc khác nhau, vừa có số chu kỳ lệnh khác cho lệnh LOOP Để tạo độ trễ không phụ thuộc CPU, IBM đóng mở PB4 cổng 61H với thời giam 15,085 s lần Nh vậy, cách giám sát PB4 cổng 61H nhận đợc độ trễ cố định - nh chơng trình BIOS IBM PC/AT sau Trớc gọi chơng trình WAITF, ghi CX phải lu thời gian trễ số lần 15,085 s ;(CX) = số lần 15,085 s WAITF PROC NEAR PUSH AX WAITF1 : IN AL,61H AND AL,10H ;kiểm tra PB4 CMP AL,AH ;thực có thay đổi JE WAITF1 ;chờ thay đổi MOV AH,AL ;cất trạng thái PB4 LOOP WAITF1 ;tiếp tục CX POP AX RET WAITF ENDP Lu ý, máy tính IBM 286, 386, 486, Pentium tơng thích, cổng B (cổng 61H) đợc dùng làm cổng vào ra, khác với máy tính IBM 8088/86, cổng B cổng Hiện nay, dễ dàng tạo thời gian trễ bất kỳ, không phụ thuộc vào tần số CPU Ví dụ, để tạo trễ 0,5 s, đặt CX=33.144 (33.144 x 15,085 s = 0,5 s), sau gọi chơng trình nh nêu trên: MOV CX,33144 ; trễ 1/2 s CALL WAITF Ví dụ 6.4 Sử dụng chơng trình WAITF BIOS, tạo trễ 1,5s Giải: Để có trễ 1,5 s, đếm phải đợc đặt giá trị 99.436 (1,5/15,085 = 99.436) Giá trị lớn CX 65,536, cần sử dụng phơng pháp sau: Nguyn ỡnh Luyn 138 Bi ging K thut Vi X Lý Khoa K thut & Cụng ngh - i Hc Quy Nhn MOV BL,03 BACK: MOV CX,33144 ;trễ 1/2s CALL WAITF DEC BL JNZ BACK 6.3 CC DNG SểNG RA CA 8253 Phn ny s gii thiu tt c cỏc dng xung c b m v cỏc ch ca 8253/54 ca IBM PC Hỡnh 6.6 Biu thi gian Dng xung OUT ca BIOS IBM Nh ó nờu trờn, BIOS IBM lp trỡnh b m to ch 3, cú dng xung vuụng Vỡ b m c np giỏ tr 65536 v chu k ng h ca tn s vo l 1/1,193 MHz = 838ns, nờn chu k ca xung OUT s bng 65536x838ns = 54,9ms (18,2 Hz) Nu s N np vo b m l chn thỡ c xung cao v xung thp s cú rng nh ( N/2 x 838ns) Nu s N l l thỡ xung cao s cú rng l (N+1)/2 x 838ns cũn xung thp s cú rng l (N-1)/2 x 838ns Núi cỏch khỏc, nu s np vo b m l l thỡ phn cao ca xung vuụng s hi rng hn phn thp Trong trng hp b m 0, BIOS np giỏ tr 65536 l s chn nờn phn thp v phn cao ca xung vuụng bng v bng 32.768 x 838ns Mt lu ý quan trng khỏc l OUT liờn tc phỏt xung vuụng Thc t l PC bt ngun , cỏc chng trỡnh BIOS np Nguyn ỡnh Luyn 139 Bi ging K thut Vi X Lý Khoa K thut & Cụng ngh - i Hc Quy Nhn giỏ tr cho b m Ngha l khụng cn np li b m mi m n vỡ 8253/54 t ng np li giỏ tr 65536 b m m lựi v Vic np li c thc hin t ng m khụng cn s tr giỳp ca CPU 80x86 Lu ý l GATE0 luụn t mc ỏp cao vy b m luụn c m Dng xung OUT1 BIOS IBM BIOS IBM c lp trỡnh cho b m ch 2, b chia tn vi giỏ tr np vo b m l 18 Mt chu k CLK1 l 838ns nờn OUT1 cú mc cao thi gian 17x838ns v s xung thp mt xung 838ns Nh vy, chu k T ca OUT1 l 18x838ns Cui xung th 18, b m t np li giỏ tr ban u m khụng cn s tr giỳp ca CPU 80x86 v quỏ trỡnh tip tc nu nh mỏy c cp ngun Lu ý l GATE1 luụn mc cao lm b m lm vic liờn tc Dng xung OUT2 ca BIOS IBM Nh gii thiu phn trờn, nu s N np vo b m l chn thỡ c xung cao v thp cú di nh l (N/2 x 838ns ) v xung thp l (N-1)/2 x 838ns BIOS IBM np giỏ tr 1331 vo b m Vỡ 1331 l l nờn xung cao OUT2 cú rng l (1331+1)/2 x838ns Cũn xung thp l (1331 -1 )/2 x838ns Hỡnh 5.6 Núi cỏch khỏc, h s y xung hi ln hn 50% , chu k T l 1331x838ns [(666+665)]x838ns.Phn sau õy s trỡnh by ch ca 8253/54 Cỏc ch lm vic ca 8253/54 8253/54 cú tt c ch cụng tỏc, t ch n ch Sỏu ch ny u cú b m ca 8253/54 Phn ny s trỡnh by tng ch Lu ý l cỏc vớ d ny ch mang hm ý lm rừ khỏi nim ch lm vic, ch thc t bn khụng cn lp trỡnh cỏc b m 8253/54 vi cỏc giỏ tr nh vy, mc du bn cú th ni 8253/54 ti bus PC v kim tra cỏc vớ d ny ch ca 8253/54 cú th phõn thnh hai nhúm : - Nhúm th nht : Sau lp trỡnh cho b m, u OUT cú tớn hiu mong mun ch GATE = - Nhúm th hai : Sau lp trỡnh cho b m, u OUT cú tớn hiu mong mun ch GATE chuyn t lờn Nhúm th hai c gi l kớch phỏt cng, hay lp trỡnh c Sau õy chỳng ta tỡm hiu tng ch Ch : Ngt m kt thỳc Trong ch ny, u tiờn tớn hiu mc thp, sau ú mc ny tip tc c trỡ nu GATE =1 rng ca xung thp c tớnh nh sau : rng ca xung thp = NxT 140 Nguyn ỡnh Luyn Bi ging K thut Vi X Lý Khoa K thut & Cụng ngh - i Hc Quy Nhn Trong ú, N l s m c np vo b m, cũn T l chu k ca tớn hiu vo CLK Khi m kt thỳc, li s chuyn lờn cao v gi mc cao cho n t iu khin mi hoc s m mi li c np vo Vớ d 6.5 Gi s GATE1 = 1, CLK1 =1Mhz v s m N=1000 Xỏc nh tớn hiu u OUT1 nu lp trỡnh ch Gii : Chu k ca CLK1 l 1s; ú trc chuyn lờn mc cao, tớn hiu OUT1 l thp khong thi gian 1000x1s =1ms ch ny, nu u vo GATE xung mc thp ang quỏ trỡnh m, thỡ vic m s dng v u s tr v thp Vic m c tip tc cng GATE tr li mc cao Thi gian dng ny s cng tip vo tng thi gian m li mc thp (k t lỳc GATE lờn mc cao ) Vớ d 6.6 Trong vớ d 6.5, gi s GATE1 = khong 400ms rng xung thp ca OUT1 l bao nhiờu ? Gii : rng xung thp ca OUT1 s l 1000s +400s =1400s 400 s GATE1= OUT1 1400 s WR Nguyn ỡnh Luyn 141 Bi ging K thut Vi X Lý Khoa K thut & Cụng ngh - i Hc Quy Nhn Ch : Ch xung Ch ny cũn c gi l ch mt xung kớch phỏt bng phn cng Vic kớch phỏt c thc hin bng cỏch gi qua chõn vo GATE mt xung t mc lờn (sn dng) Trong cỏc ch c lp trỡnh ca 8253/54, vớ d nh ch 1, b m cn thc hin qua hai bc nh sau : Np cỏc ghi m Gi mt xung t lờn n u vo GATE kớch phỏt b m Vớ d 6.7 a.V tớn hiu OUT1 nu CLK1=1MHz, N=500 v lp trỡnh ch b V dng súng OUT1 nu sau 150 xung ng h, GATE1 li c kớch phỏt Gii : a.Chỳ ý OUT1 s xung thp ch GATE1 t lờn b.Nu GATE1 c kớch phỏt sau 150 xung ng h, COUNT1 c np li giỏ tr N=500 v quỏ trỡnh m bt u li t u s to xung rng 650s nh hỡnh sau : ch 0, b m to xung sau b m c np, vi iu kin GATE1 =1 ch 1, sau sn dng c a n u vo GATE, u OUT xung thp v trỡ mc ny khong thi gian NxT, sau ú li chuyn lờn mc cao cho n GATE c kớch phỏt tr li.Ging nh mch a hi i, c kớch phỏt thỡ u s tr li trng thỏi tớch cc mt thi gian, sau ú Nguyn ỡnh Luyn 142 Bi ging K thut Vi X Lý Khoa K thut & Cụng ngh - i Hc Quy Nhn tr li trng thỏi ngh i vi 8253/54, chỳng ta cú th lp trỡnh xỏc nh khong thi gian a hi i trng thỏi tớch cc rng xung thp u l NxT, ú T l chu k ca CLK cũn N l s m Nu quỏ trỡnh m, chõn GATE li c kớch phỏt thỡ b m s c np li s m N v b m bt u quỏ trỡnh li t u (xem hỡnh vớ d 6.7) Lu ý ch ny vic m ch bt u sn dng (xung t lờn 1) t n u vo GATE ú chớnh l lý cú tờn gi lp trỡnh c hay kớch phỏt cng õy cng l im khỏc vi nhiu ch khỏc, ú b m bt u vo lỳc np s m Núi cỏch khỏc, kớch phỏt cng, sau np s m , chỳng ta phi gi sn xung lờn n u vo GATE kớch phỏt b m Ch : Mỏy phỏt súng t l Ch cũn c gi l b m chia cho N Trong ch ny nu u vo GATE =1 thỡ u OUT s mc cao khong thi gian NxT chu k, ri chuyn xung thp mt xung nhp, sau ú vic m c np li t ng v quỏ trỡnh c th tip tc Kt qu l ch ny to thnh b m chia cho N Mt chu k tớn hiu OUT l (N+1)xT, ú tớn hiu cao khong NxT , cũn tớn hiu thp ch chu k T (xem vớ d 6.8) Vớ d 6.8 Cho CLK2 =1MHz, GATE2 =1 v N=750, v tớn hiu OUT2 nu COUNT2 c lp trỡnh ch Gii : Chỳ ý l s m c np li t ng v b m tip tc to OUT2 Ch : B to xung vuụng ch ny, nu GATE =1 thỡ u OUT l xung vuụng vi rng xung cao bng rng xung thp N chn Nh vy, phn cao v phn thp ca xung chim khong thi gian nh v bng (N/2)xT, ú N l s m xung ng h, cũn T l chu k ng h Trong ch ny, s m c t ng np li m kt thỳc, ú to dóy xung vuụng liờn tc cú tn s l 1/N so vi tn s CLK Ch tng t nh ch nhiờn ch h s y xung l 50% Trng hp N l, s xung cao s cú mt nhp di hn nh ó trỡnh by trờn Thc t, ch chia CLK cho N to xung vuụng cú dng ging nh xung u vo, ch khỏc v tn s Ch ny c s dng Nguyn ỡnh Luyn 143 Bi ging K thut Vi X Lý Khoa K thut & Cụng ngh - i Hc Quy Nhn rng rói lm b chia tn v b to súng õm tn (to tone) nh ó thy IBM PC Trong ch ny, nu u vo GATE xung thp thỡ quỏ trỡnh m lựi s ngng v vic m ch c tip tc GATE =1 (xem vớ d 6.9 ) Vớ d 6.9 Nu CLK2 =1MHz , GATE1=1 v N=1000, v tớn hiu OUT1 nu COUNT1 c lp trỡnh ch Gii : Vỡ chu k nhp l 1s , OUT1 l cao 500s v thp 500s to xung vuụng cú chu k 1ms Dng tớn hiu OUT1 nh sau : Ch : Xung kớch phỏt bng phn mm Trong ch ny, nu GATE=1 thỡ u s cú mc cao np s m Khong thi gian mc cao s l NxT, ú N l s m cũn T l chu k ng h Sau m n (kt thỳc m), u s tr v thp mt xung ng h, sau ú tr li mc cao v li mc cao ú cho n np mt t lnh mi hoc s m mi lp li xung trớch mu, s m cn phi c np li Núi cỏch khỏc , ch ny khụng t ng np li s m kt thỳc m Ch tng t nh ch 2, ch cú im khỏc l b m khụng t ng np li ch ny, nu u vo GATE xung thp thỡ vic m d dng v u s mc cao Vic m ch c tip tc GATE tr li lờn mc cao khong thi gian b m b dng c cng vo tng thi gian u mc cao (xem vớ d 6.10 ) Vớ d 6.10 Nu CLK0 = 1MHz, GATE0=1 v N=600, xỏc nh tớn hiu OUT0 nu COUNT0 c lp trỡnh ch Gii : Chu k CLK0 l 1s, sau s m c np, OUT0 mc cao khong 600s v s xung thp 1s, sau ú li lờn mc cao v ú cho n b m c lp trỡnh li u OUT0 cú dng nh sau : Nguyn ỡnh Luyn 144 Bi ging K thut Vi X Lý Khoa K thut & Cụng ngh - i Hc Quy Nhn Cng cn phi lu ý l ch ny vic m c bt u ti thi im s m c ghi vo b m õy chớnh l lý cú tờn gi kớch phỏt bng phn mm Ch cng tng t nh ch 4, tr mt im l vic kớch phỏt c thc hin thụng qua u vo GATE xem vớ d 6.11 Vớ d 6.11 Nu CLK1 = 1MHz v N=400, v tớn hiu OUT1 nu nú c lp trỡnh ch Gii: Vic m ch c bt u t sn xung lờn n GATE1 Ch : Xung mu kớch phỏt bng phn cng Ch ny tng t nh ch ngoi tr kớch phỏt phi c thc hin u vo GATE Vic m ch bt u cú sn dng (xung t lờn 1) a n u vo GATE õy l im khỏc vi ch - vic m c bt u np s m, l GATE1 =1 Núi cỏch khỏc, i vi ch 5, sau s m c np, cn phi t sn dng n u vo GATE ng b m Vớ d 6.12 Trong vớ d 6.11 , gi s GATE1 c kớch phỏt li sau 150 xung V tớn hiu OUT1 Gii : Nu GATE1 c kớch phỏt li sau 150 xung ng h vo b m lựi, COUNT1 c np li s m N=400 v quỏ trỡnh m li bt u , lm cho xung kộo di thờm 150s na (tng cng 550s ) Khi ú tớn hiu OUT1 s nh sau : Nguyn ỡnh Luyn 145 Bi ging K thut Vi X Lý Khoa K thut & Cụng ngh - i Hc Quy Nhn [...]... lại thiết lập ban đầu của cổng B OUT 61H,AL ;tắt loa Nguyn ỡnh Luyn 136 Bi ging K thut Vi X Lý Khoa K thut & Cụng ngh - i Hc Quy Nhn Thời gian kéo dài của nốt nhạc sẽ ứng với thời gian trễ do bộ vi xử lý 80x86 của máy tính tạo ra * Tạo thời gian trễ ở các máy PC 80x86 Rất nhiều các ứng dụng cần đến thời gian trễ Do vi c tạo thời gian trễ trong các máy 8088/86 khác với các máy 80286, 386, 486 và Pentium... Nguyn ỡnh Luyn 144 Bi ging K thut Vi X Lý Khoa K thut & Cụng ngh - i Hc Quy Nhn Cng cn phi lu ý l ch ny vic m c bt u ti thi im s m c ghi vo b m õy chớnh l lý do cú tờn gi kớch phỏt bng phn mm Ch 5 cng tng t nh ch 4, tr mt im l vic kớch phỏt c thc hin thụng qua u vo GATE xem vớ d 6.11 Vớ d 6.11 Nu CLK1 = 1MHz v N=400, v tớn hiu ra OUT1 nu nú c lp trỡnh ch 5 Gii: Vic m ch c bt u khi t sn xung 0... quỏ trỡnh m, thỡ vic m s dng v u ra s tr v thp Vic m c tip tc khi cng GATE tr li mc cao Thi gian dng ny s cng tip vo tng thi gian m li ra mc thp (k t lỳc GATE lờn mc cao ) Vớ d 6.6 Trong vớ d 6.5, gi s GATE1 = 0 trong khong 400ms rng xung thp ca OUT1 l bao nhiờu ? Gii : rng xung thp ca OUT1 s l 1000s +400s =1400s 400 s GATE1= 1 OUT1 1400 s WR Nguyn ỡnh Luyn 141 Bi ging K thut Vi X Lý Khoa K thut &... khi b m c np, vi iu kin GATE1 =1 ch 1, sau khi sn dng c a n u vo GATE, u ra OUT xung thp v duy trỡ mc ny trong khong thi gian NxT, sau ú li chuyn lờn mc cao cho n khi GATE c kớch phỏt tr li.Ging nh mch a hi i, khi c kớch phỏt thỡ u ra s tr li trng thỏi tớch cc trong mt thi gian, sau ú Nguyn ỡnh Luyn 142 Bi ging K thut Vi X Lý Khoa K thut & Cụng ngh - i Hc Quy Nhn tr li trng thỏi ngh i vi 8253/54, chỳng... Nguyn ỡnh Luyn 139 Bi ging K thut Vi X Lý Khoa K thut & Cụng ngh - i Hc Quy Nhn giỏ tr cho b m Ngha l khụng cn np li b m mi khi m n 0 vỡ 8253/54 t ng np li giỏ tr 65536 khi b m m lựi v 0 Vic np li c thc hin t ng m khụng cn s tr giỳp ca CPU 80x86 Lu ý l GATE0 luụn t mc ỏp cao do vy b m 0 luụn c m Dng xung OUT1 trong BIOS IBM BIOS IBM c lp trỡnh cho b m 1 ch 2, b chia tn vi giỏ tr np vo b m l 18 Mt chu... t sn xung 0 lờn 1 n GATE1 Ch 5 : Xung mu kớch phỏt bng phn cng Ch ny tng t nh ch 4 ngoi tr kớch phỏt phi c thc hin u vo GATE Vic m ch bt u khi cú sn dng (xung t 0 lờn 1) a n u vo GATE õy l im khỏc vi ch 4 - vic m c bt u ngay khi np s m, min l GATE1 =1 Núi cỏch khỏc, i vi ch 5, sau khi s m c np, cn phi t sn dng n u vo GATE khi ng b m Vớ d 6.12 Trong vớ d 6.11 , gi s GATE1 c kớch phỏt li sau 150... là lý do cho thấy từ các máy tính PC/AT trở đi (80286, 80386, 80486, Pentium ), IBM sử dụng mạch tạo trễ riêng với thời gian trễ không lệ thuộc vào cả tần số lẫn CPU * Thời gian trễ trong IBM PC 80x86 (từ 286 về sau) Phơng pháp tạo độ trễ cố định bằng phần cứng đợc thực hiện đầu tiên ở IBM PC/AT và sau đó ở tất cả các máy tính 286, 386, 486 Pentium và tơng Nguyn ỡnh Luyn 137 Bi ging K thut Vi X Lý. .. Nu trong quỏ trỡnh m, chõn GATE li c kớch phỏt thỡ b m s c np li s m N v b m bt u quỏ trỡnh li t u (xem hỡnh vớ d 6.7) Lu ý trong ch ny vic m ch bt u khi sn dng (xung t 0 lờn 1) t n u vo GATE ú chớnh l lý do cú tờn gi lp trỡnh c hay kớch phỏt cng õy cng l im khỏc vi nhiu ch khỏc, ú b m bt u vo lỳc np s m Núi cỏch khỏc, trong kớch phỏt cng, sau khi np s m , chỳng ta phi gi sn xung 0 lờn 1 n u vo GATE... N to ra xung vuụng cú dng ging nh xung u vo, ch khỏc v tn s Ch ny c s dng Nguyn ỡnh Luyn 143 Bi ging K thut Vi X Lý Khoa K thut & Cụng ngh - i Hc Quy Nhn rng rói lm b chia tn v b to súng õm tn (to tone) nh ó thy trong IBM PC Trong ch ny, nu u vo GATE xung thp thỡ quỏ trỡnh m lựi s ngng v vic m ch c tip tc khi GATE =1 (xem vớ d 6.9 ) Vớ d 6.9 Nu CLK2 =1MHz , GATE1=1 v N=1000, v tớn hiu ra OUT1 nu... chu k T l 1331x838ns [(666+665)]x838ns.Phn sau õy s trỡnh by 6 ch ca 8253/54 Cỏc ch lm vic ca 8253/54 8253/54 cú tt c 6 ch cụng tỏc, t ch 0 n ch 5 Sỏu ch ny u cú 3 b m ca 8253/54 Phn ny s trỡnh by tng ch Lu ý l cỏc vớ d ny ch mang hm ý lm rừ khỏi nim ch lm vic, ch thc t bn khụng cn lp trỡnh cỏc b m 8253/54 vi cỏc giỏ tr nh vy, mc du bn cú th ni 8253/54 ti bus PC v kim tra cỏc vớ d ny 6 ch ca

Ngày đăng: 29/03/2016, 15:43

TỪ KHÓA LIÊN QUAN