Bốn mặt của bộ nhớ RAM đệm hình D0-D3 Thanh ghi
Bảng màu Thanh ghi của18bit
R G B 0 15 31 240
a) Hiện 320x200 điểm với 256 màu Thanh ghi
Bảng màu Thanh ghi của18bit
R G B 0 15 31 240 4 mặt của bộ nhớ Ram đệm hình
b) Hiện 640x480 điểm 16 màu
255DAC 6 Bit DAC 6 Bit 255 DAC 6 Bit 0 15 D 0 - D 3 4 Nhóm 0 Nhóm 2 Nhóm15 I
Thanh ghi điều
Disp Proc
MOV AX,OB800H; Cho DS chỉ vào vùng RAM đệm MOV DS, AX
MOV CX, 2000 ; Số kí tự phải hiện
MOV DI, 0 ; Hiện từ kí tự tại góc trái cao HIEN :MOV {DI , 3524h ; S tía trên nền trời xanh !!!
ADD DI,2 : Hiện kí tự tiếp LOOP HIEN ; Cho đến hết MOV AH, 4CH ; về DOS INT 21H
Disp Endp
4. Phối ghép với thế giới tương tự :
Việc phối ghép hệ vi xử lí và các thiết bị làm việc với các đại lượng tương tự là một nhu cầu rất hay gặp trong thực tế đời sống cũng như trong công nghiệp. Các phần tử mà hệ vi xử lí cần phải phối ghép thường là các đầu đo (bộ cảm biến hoặc bộ biến đổi) ở đầu vào và các cơ cấu kết thành ở các loại ở đầu ra . để ghép nối các thiết bị như vậy, thông thường ta phải cần đến các bộ chuyển đổi tương tự số (analog to digital converter :ADC). Các bộ chuyển đổi số tương tự (digital to analog converter: DAC). Trong một số trường hợp cụ thể ta còn cần đến một số thiết bị điện tử chuyên dụng khác: Bộ khuyếch đại đo, bộ chuyển mạch tương tự (bộ dồn kênh hoặc phân kênh tương tự) mạch so sánh số, mạch trích mẫu và giữ mẫu, khuyếch đại công suất ...
Aïp suất Nhiệt độ Độ ẩm Độ PH mức Tốc độ L Rơle Điện tử DAC Kdcs & ccch DAS DAS Cổng vào Hệ vi sử Cổng vào lý Màng hình hiển thị Bàn phím Các đầu do RTC
Các thiết bị trên thường được ghép nối với nhau để tạo thành các hệ thu thập dự liệu (data acquisition system: DAS) các bộ điều khiển, các thiết đo lường cao cấp, các thiết bị xử lí dữ liệu thời gian thực ... tất cả được sử dụng rộng rãi trong công nghiệp cũng như trong đời sống.
Ta sẽ không đi sâu vào từng mạch phối ghép trong các thiết bị cụ thể mà chỉ nêu ở đây sơ đồ khối của một hệ thống điều khiển dựa trên cơ sở vi xử lí như là một ví dụ đại diện (hình 9.16)
Hệ thu thập dữ liệu có nhiệm vụ phối ghép các bộ cảm biến về mặt diện (phối hợp trở kháng, khuếch đại mức tín hiệu...) và biến các tín hiệu thu được từ dạng tương tự sang dạng số để CPU có thể đọc vào và xử lí. Bàn phím và màn hình là 2 thiết bị vào /ra truyền thống. Tùy theo quy mô và tính chất công việc, chúng có thể là các thiết bị rất đơn giản như bàn phím hệ 16 và các đèn hiện thị LED, LCD hoặc phức tạp như bàn phím và màn hình giống như trong các máy vi tính thực thụ.
Bộ vi xử lí ở đây thường là loại chuyên dụng, được chế tạo đặc biệt cho các công việc trong điều khiển. (ví dụ : Như các vi mạch 8051, 8096 hoặc 80186 của INTEL) chương trình viết cho CPU thông thường là để thực hiện các thao tác điều khiển của các khối chức năng theo kiểu tỷ lệ/ tích phân/ vi phân (PID) bằng phương pháp số. Một điểm đặc biệt nữa là trong hệ thống điều khiển thường có một đồng hồ thời gian thực (RTC) để hệ thống có thể thực hiện các yêu cầu điều khiển theo thời gian thực.
Các cơ cấu chấp hành thường là loại số hay tương tự . Cơ cấu chấp hành số thường là các khóa điện tử hoặc khóa cơ điện dùng để đóng/ ngắt cắt mạch cúp điện cho đối tượng cần điều khiển, vì vậy các cơ cấu này chỉ cần được cấp tín hiệu lôgic thích hợp là được. Các cơ cấu chấp hành tương tự cần được nối vưói hệ vi xử lí qua các bộ chuyển đổi DAC và kèm theo các bộ khuếch đại công suất để thực hiện các thao tác điều khiển do bộ vi xử lý đưa đến.
5. Phối ghép CPU với mạch đếm/ định thời gian 8254 (8253)
Mạch định thời gian lập trình được 8254/8253 là một mạch phụ rất quan trọng tring các hệ vi xử lí của Intel. Nó có thể dễ đáp ứng được các yêu cầu ứng dụng khác nhau trong hệ vi xử lý : đếm thời gian, đếm sự kiện, chia tần số, tạo ra dãy xung ...
Sơ đồ khối của vi mạch 8254 và cách phối ghép với CPU được thể hiện trên hình 9.17 .
Các tín hiệu của vi mạch 8254 có tên và ý nghĩa giống như của 8088 nên khá quen thuộc và ta sẽ không cần giải thích nhiều nữa. Chân chọn vỏ của vi mạch 8254 phải được nối với đầu ra của một bộ giải mã để định địa chỉ cơ bản cho mạch . Cùng với địa chỉ cơ bản, các chân địa chỉ A1 và A0 sẽ cung cấp địa chỉ cụ thể của các thanh ghi ở bên trong mạch 8254 khi ghi (lập trình) hoặc dọc thông tin của mạch (xem ảnh 9.1). Đó là 3 thanh ghi cho 3 bộ đếm và 1 thanh ghi cho từ điều khiển .
Theo sơ đồ khối ta thấy trong vi mạch 8254 có 3 bộ đếm lùi 16 bit, nội dung ban đầu của mỗi bộ đếm đều coa thể lập trình từ CPU để thay đổi được. Ngoài ra ta còn có thể điều khiển được hoạt động của các bộ đếm bằng tín hiệu
Hình 9.16. Sơ đồ khối của hệ thống điều khiển dùng vi sử lý
DAS: hệ thu nhập dữ liệu
từ bên ngoài qua các chân cửa (GATE) để cho phép bắt đầu đếm (Gate = 1) hay để buộc kết thúc quá trình đếm (Gate = 0).
Bánh 9.1. chọn các thanh ghi bên trong 8254
A1 A0 Chọn ra 0 0 1 1 0 1 0 1
Thanh ghi cho bộ đếm số 0 Thanh ghi cho bộ đếm số 1 Thanh ghi cho bộ đếm số 2 Thanh ghi từ điều khiển * Khởi đầu cho 8254
Cũng như các vi mạch lập trình được khác phụ trợ cho CPU đã nói từ trước tới nay, sau khi bậc điện mạch 8254 phải được khởi đầu để có thể hoạt động theo đúng yêu cầu. Một điều cần chú ý là trạng thái của 8254 sau khi bật điện là không xác định.
Để khởi đầu cho mạch 8254 ta phải ghi từ điều khiển vào thanh ghi từ điều khiển của nó. Dạng thức từ điều khiển của 8254 được biểu hiện trên hình 9.18
Ghi/đọc :
00: lệnh chốt bộ đếm 01: chỉ đọc/ ghi byte LSB
10: chỉ đọc/ ghi byte MSB 0: bộ đếm HEX 4 số 11: đọc/ghi byte LSB, tiếp theo là MSB 1: bộ đếm BCD 4 số
D7 D6 D5 D4 D3 D2 D1 D0 SC1 SC0 RW1 RW0 M2 M1 M0 BCD
Chế độ
Chọn bộ đếm 000:chế độ 0-Tạo yêu cầu ngắt khi đếm hết 00:để chọn bộ đếm 0 001:chế độ1-Đa hài đợi lập trình được 01: để chọn bộ đếm 1 010: chế độ 2 - bộ chia tân số cho N 10:để chọn bộ đếm 2 011:chế độ 3- Tạo xung vuông 11: để ra lệnh đọc ngược 100:chế độ 4-Tạo xung cho phép mềm
101:chế độ 5-Tạo xung cho phép cứng
Hình 9.18.Dạng thức thanh ghi từ điều khiển của vi mạch 8254. Thanh ghi từ điều khiển dùng để chứa từ điều khiển cho cả 3 bộ đếm với các bit SC1 - SC0 (theo mã hệ 2 ) ta có thể chọn ra bộ đếm để làm việc theo cách thức do từ điều khiển quyết định. Trường hợp đặc biệt khi SC1 - SC0 = 11
RD Login WR điều A0 khiển A1 ghi/đọc Clk Gate Out Clk Gate Out Gate Out Clk o 1 2 o o 1 1 2 2 Cx Đệm Bus Dữ liệu Bộ đệm 0 Bộ đệm 1 Bộ đệm 2 Thanh ghi từ Diều khiển D0-D7 CPU RD WR A0 A1
ta có thể dùng lệnh đọc ngược để đọc được nội dung hoặc trạng thái của bộ đếm trong thời gian hiện tại.
Các bộ đếm của mạch 8254 đều làm việc ở chế độ đếm lùi. Như vậy số đếm lớn nhất mà ta có thể đưa vào để bắt đầu đếm là 10.000H hoặc 10.000, vì sau khi lùi 1 ta có nội dung mới của bộ đếm là FFFFH hoặc 9999 tùy theo bit BCD = D0 là 0 hoặc 1 .
Các bit M2 M1 M0 sẽ xác định các chế độ làm việc của các bộ đếm, trong đó các đầu vào GATE có những átc động khác nhau đến các đầu ra OUT . Mạch 8254 có tất cả 6 chế độ làm việc và các chế độ này được đánh số từ 0-5 .
Các bit RW1 RW0 cho phép chọn cách thức ghi /đọc với các bộ đếm. Ta có thể ghi / đọc tách riêng từng byte của bộ đếm. Nếu muốn ghi/đọc liên tiếp 2 Byte của bộ đếm thì ta phải tuân theo thứ tự : Byte thấp trước và tiếp theo là Byte cao .
Các chế độ làm việc của 8254
Các chế độ làm việc của 8254 được mô tả rõ nhất thông qua các biểu đồ thời gian (soạn theo tài liệu tra cứu của Intel) . Trong khi xem các biểu đồ đó ta chú ý các quy định và các kí hiệu sau :
1. Các bộ đếm được lập trình để làm việc theo hệ 16 và ở chế độ chỉ đọc/ ghi LSB của số đếm .
2. CW : Từ điều khiển biễu diễn theo hệ 16. 3. Các con số nằm dưới đồ thị thời gian
- N : số bất kì - Số trên : Cho MSB - Số dưới: cho NSB
Chế độ 0 - tạo yêu cầu ngắt khi đếm xong (Terminal count: TC)
Biểu đồ thời gian của chế độ 0 được thể hiện trên hình 9.19 .
Tại đường biểu diễn xung WR có các giá trị CW và LSB ứng với thời điểm xung ghi tích cực. Đó chính là các thời điểm để ghi từ thời điểm CW cho mạch và Byte thấp của số đếm cho bộ đếm đã chọn.
Tại nhóm xung thứ nhất, CW = 10H tức là ta muốn định nghĩa chế độ 0, chỉ đọc/ghi LSB và chế độ đếm theo hệ 16 cho bộ đếm số 0. Sau khi ghi từ điều khiển vào thanh ghi từ điều khiển thì OUT = 0. Tiếp theo ta ghi LSB = 4 là phần thấp của số đếm cho bộ đếm. Giá trị này sẽ được chuyển vào bộ đếm ở chu kỳ đồng hồ sau. Lúc này GATE = 1 nên từ đây là bắt đầu của quá trình đếm ngược. Khi bộ đếm đạt tới 0 thì OUT = 1. Điều đó có nghĩa là nếu ta nạp vào LSB = N thì sau N + 1 xung đồng hồ ta có OUT = 1. Ta cũng nhận thấy rằng bộ đếm sau khi đạt 0000H thì sẽ tiếp tục đếm lùi từ FFFFH nếu như nó không nạp giá trị đếm mới. Xung OUT có thể được dụng như là xung yêu cầu ngắt đối với CPU để báo là đã đạt được số đếm (TC)
Tại nhóm xung thứ 2 ta thấy được tác dụng của xung điều khiển cửa GATE. Khi bộ đếm đang làm việc mà GATE = 0 thì nội dung của bộ đếm được giữ không đổi cho đến khi GATE = 1, lúc này bộ đếm lại tiếp tục đếm lùi.
Tại nhóm xung thứ 3 ta thấy được hoạt động của bộ đếm khi nó đang đếm mà ta có xung điều khiển nạp nội dung số đếm mới. Nội dung mới chỉ được đưa đến bộ đếm tại xung đồng hồ tiếp theo. Sau đó bộ đếm lại tiếp tục đếm lùi với số đếm mới.
Chế độ 1 - Đa hài đợi với thời gian lập trình được
Ta đã gặp các mạch đa hài đợi (đa hài một trạng thái ổn định) với hằng số thời gian do chỉ số của các linh kiện R và C quyết định. Mạch 8254 ở chế độ
1 có khả năng làm việc như 1 mạch đa hài đợi nhưng với hằng số thời gian lập trình được tỉ lệ vưói chu kỳ xung đồng hồ ở đầu vào.
Biểu đồ thời gian của 8254 ở chế độ 1 được thể hiện trên hình 9.20
Hình 9.19. Thí dụ biểu đồ thời gian của 8254 ở chế độ 0 Tại nhóm xung thứ nhất CW = 12H tức là ta muốn định nghĩa chế độ chỉ đọc/ ghi LSB và chế độ đếm theo hệ 16 cho bộ đếm 0. Sau khi ghi từ điều khiển vào thanh ghi từ điều khiển thì OUT = 1. Tiếp theo ta ghi LSB = 3 là phần thấp của số đếm cho bộ đếm. Giá trị này sẽ được chuyển vào bộ đếm. Lúc này GATE = 0 nên bộ đếm không làm việc . Khi xung kích GATE = 1 thì bộ đếm được xuất phát để bắt đầu làm việc ở chu kỳ đồng hồ sau .
Từ đây OUT = 0 và bắt đầu quá trình đếm ngược khi bộ đếm đạt tới 0 thì OUT = 1. Điều đó có nghĩa là nếu ta nạp vào LSB = N và GATE = 1 thì OUT = 0 trong N xung đồng hồ. Đường dứt nét biểu hiện là GATE có thể có giá trị 0 bất kỳ lúc nào trong thời đoạn này. Ta cũng nhận thấy rằng bộ đếm sau khi đạt 0000H thì sẽ tiếp tục lùi từ FFFFH nếu như nó không được nạp giá trị đếm mới. Và mỗi khi có xung GATE = 1 thì nó lại tạo ra xung OUT = 0 kéo dài N xung đồng hồ.
Tại nhóm xung thứ 2 ta thấy được tác dụng của xung điều khiển ở cửa GATE để tạo ra khả năng kích lặûp lại được của bộ đếm. Khi bộ đếm đang làm việc và chưa đạt được số đếm mà có xung GATE = 1 thì số đếm cũ được nạp lại cho bộ đếm ở chu kỳ đồng hồi sau. Từ lúc này bộ đếm lại tiếp tục đếm lùi. OUT = 0 cho tới khi đến hết .
Tại nhóm xung thứ 3 ta thấy được hoạt động của bộ đếm khi nó đang đến số OUT = 0 mà ta có xung điều khiển nạp số đếm mới. Nội dung mới chỉ được đưa đến bộ đếm tại xung đồng hồ tiếp theo sau khi có xung GATE = 1.
WRClk Clk GATE CW=10 CLB=4 N N N N FF 0 0 0 0 FF FF 0 2 1 FF 3 OUT 0 4 WR Clk GATE CW=10 CLB=4 N N N N FF 0 0 0 0 FF FF 0 2 1 FF 3 OUT 0 4 WR Clk GATE CW=10 CLB=4 N N N N FF 0 0 0 0 FF FF 0 2 1 FF 3 OUT 0 4
Chế độ 2 - Tạo ra xung có tần số Fin /N
Biểu đồ thời gian của chế độ 2 được biều hiện trên hình 9.21
Tại nhóm xung thứ nhất CW = 14H tức là ta muốn định nghĩa chế độ 2 chỉ đọc /ghi LSB và chế độ đếm theo hệ 16 cho bộ đếm số 0 . Sau khi ghi từ điều khiển vào thanh ghi từ điều khiển thì OUT = 1. Tiếp theo ta ghi LSB = 3 là phần thấp của số đếm cho 1 bộ đếm . Giá trị này sẽ được chuyển vào bộ đếm tại xung đồng hồ sau. Lúc này GATE = 1 nên bộ đếm bắt đầu làm việc. Từ đây bắt đầu quá trình đếm nưgợc. Khi bộ đếm đạt tới 1 thì OUT = 0 trong thời gian 1 xung đồng hồ và quá trình đếm lại được bắt đầu với OUT = 1 và với số đếm cũ. Điều đó có nghĩa là sau khi ta nạp LSB = N vào bộ đếm thì cứ sau N xung đồng hồ, ta có ở đầu ra OUT = 0 trong thời gian 1 xung đồng hồ.
Tại nhóm xung thứ 2 ta thấy được tác dụng của xung điều khiển cửa GATE đối với bộ đếm. Khi bộ đếm đang làm việc và chưa đạt được số đếm mà có xung GATE = 0 thì giá trị hiện thời của bộ đếm cũ được giữ nguyên trong suốt thời gian GATE = 0. Khi GATE = 1 thì bộ đếm lại tiếp tục đếm lùi.
Tại nhóm xung thứ 3 ta thấy được hoạt động của bộ đếm khi nó đang đếm và chưa đạt số đếm mà at có xung điều khiển nạp số đếm mới. Ta thấy bộ đếm vẫn tiếp tục vưói số đếm cũ, chỉ tớïi khi bộ đếm đã đếm đến 1 thì số đếm mới được áp dụng .
Chế độ 3 - tạo ra dãy xung vuông
Biều đồ thời gian của chế độ 3 được thể hiện trên hình 9.22
Tại nhóm xung thứ nhất CW = 16H tức là ta muốn định nghĩa chế độ 3, chỉ đọc/ ghi LSB và chế độ đếm theo hệ 16 cho bộ đếm số 0. Sau khi ghi từ điều khiển vào thanh ghi từ điều khiển thì OUT = 1. Tiếp theo ta ghi LSB = 4 là phần thấp của số đếm cho bộ đếm. Giá trị này sẽ được chuyển vào bộ đếm tại