Giáo trình Các bộ vi điều khiển

1.1 các bộ vi điều khiển và các bộ xử lý nhúng.

Trong mục này chúng ta bàn về nhu cầu đối với các bộ vi điều khiển (VĐK) và

so sánh chúng với các bộ vi xử lý cùng dạng chung như Pentium và các bộ vi xử lý ì 86

khác. Chúng ta cùng xem xét vai trò của các bộ vi điều khiển trong thị trường các sản

phẩm nhúng. Ngoài ra, chúng ta cung cấp một số tiêu chuẩn về cách lựa chọn một bộ

vi điều khiển như thế nào.

1.1.1 Bộ vi điều khiển so với bộ vi xử lý cùng dùng chung

Sự khác nhau giữa một bộ vi điều khiển và một bộ vi xử lý là gì? Bộ vi xử lý ở

đây là các bộ vi xử lý công dung chung như họ Intell ì 86 (8086, 80286, 80386, 80486

và Pentium) hoặc họ Motorola 680 ì 0(68000, 68010, 68020, 68030, 68040 v.v.).

Những bộ VXL này không có RAM, ROM và không có các cổng vào ra trên chíp. Với

lý do đó mà chúng được gọi chung là các bộ vi xử lý công dụng chung.

 

pdf 284 trang kimcuc 18661
Bạn đang xem 20 trang mẫu của tài liệu "Giáo trình Các bộ vi điều khiển", để tải tài liệu gốc về máy hãy click vào nút Download ở trên

Tóm tắt nội dung tài liệu: Giáo trình Các bộ vi điều khiển

Giáo trình Các bộ vi điều khiển
Ch−ơng I 
Các bộ vi điều khiển 8051 
1.1 các bộ vi điều khiển vμ các bộ xử lý nhúng. 
 Trong mục nμy chúng ta bμn về nhu cầu đối với các bộ vi điều khiển (VĐK) vμ 
so sánh chúng với các bộ vi xử lý cùng dạng chung nh− Pentium vμ các bộ vi xử lý ì 86 
khác. Chúng ta cùng xem xét vai trò của các bộ vi điều khiển trong thị tr−ờng các sản 
phẩm nhúng. Ngoμi ra, chúng ta cung cấp một số tiêu chuẩn về cách lựa chọn một bộ 
vi điều khiển nh− thế nμo. 
1.1.1 Bộ vi điều khiển so với bộ vi xử lý cùng dùng chung 
 Sự khác nhau giữa một bộ vi điều khiển vμ một bộ vi xử lý lμ gì? Bộ vi xử lý ở 
đây lμ các bộ vi xử lý công dung chung nh− họ Intell ì 86 (8086, 80286, 80386, 80486 
vμ Pentium) hoặc họ Motorola 680 ì 0(68000, 68010, 68020, 68030, 68040 v.v...). 
Những bộ VXL nμy không có RAM, ROM vμ không có các cổng vμo ra trên chíp. Với 
lý do đó mμ chúng đ−ợc gọi chung lμ các bộ vi xử lý công dụng chung. 
Hình 1.1: Hệ thống vi xử lý đ−ợc so sánh với hệ thống vi điều khiển. 
a) Hệ thống vi xử lý công dụng chung 
 b) Hệ thống vi điều khiển 
Một nhμ thiết kế hệ thống sử dụng một bộ vi xử lý công dụng chung chẳng hạn 
nh− Pentium hay 68040 phải bổ xung thêm RAM , ROM, các cổng vμo ra vμ các bộ 
định thời ngoμi để lμm cho chúng hoạt động đ−ợc. Mặc dù việc bổ xung RAM, ROM 
vμ các cổng vμo ra bên ngoμi lμm cho hệ thống cồng cềnh vμ đắt hơn, nh−ng chúng có 
CPU
General- 
Purpose 
Micro- 
processor 
ROM RA
Timer
Serial
COM
Port
I/O 
Port 
CPU 
RAM ROM 
I/O
Timer
Serial 
COM 
Port 
Data bus 
(a) General-Purpose Microcessor System 
Address bus 
(b) Microcontroller
−u điểm lμ linh hoạt chẳng hạn nh− ng−ời thiết kế có thể quyết định về số l−ợng RAM, 
ROM vμ các cổng vμo ra cần thiết phù hợp với bμi toán trong tầm tay của mình. 
 Điều nμy không thể có đ−ợc đối với các bộ vi điều khiển. Một bộ vi điều khiển 
có một CPU (một bộ vi xử lý) cùng với một l−ợng cố định RAM, ROM, các cổng vμo 
ra vμ một bộ định thời tất cả trên cùng một chíp. Hay nói cách khác lμ bộ xử lý, 
RAM, ROM các cổng vμo ra vμ bộ định thời đều đ−ợc nhúng với nhau trên một chíp; 
do vậy ng−ời thiết kế không thể bổ xung thêm bộ nhớ ngoμi, cổng vμo ra hoặc bộ định 
thời cho nó. Số l−ợng cố định của RAM, ROM trên chíp vμ số các cổng vμo - ra trong 
các bộ vi điều khiển lμm cho chúng trở nên lý t−ởng đối với nhiều ứng dụng mμ trong 
đó giá thμnh vμ không gian lại hạn chế. Trong nhiều ứng dụng, ví dụ một điều khiển 
TV từ xa thì không cần công suất tính toán của bộ vi sử lý 486 hoặc thậm chí nh− 
8086. Trong rất nhiều ứng dụng thì không gian nó chiếm, công suất nó tiêu tốn vμ giá 
thμnh trên một đơn vị lμ những cân nhắc nghiêm ngặt hơn nhiều so với công suất tính 
toán. Những ứng dụng th−ờng yêu cầu một số thao tác vμo - ra để đọc các tín hiệu vμ 
tắt - mở những bit nhất định. Vì lý do nμy mμ một số ng−ời gọi các bộ xử lý nμy lμ IBP 
(Itty-Bitty-Processor), (tham khảo cuốn Good things in small packages are 
Generating Big product opportunities do Rick Grehan viết trên tạp BYTE tháng 
9.1994; WWW. Byte. Com để biết về những trao đổi tuyệt vời về các bộ vi điều 
khiển). 
Điều thú vị lμ một số nhμ sản xuất các bộ vi điều khiển đã đi xa hơn lμ tích hợp 
cả một bộ chuyển đổi ADC vμ các ngoại vi khác vμo trong bộ vi điều khiển. 
 Bảng 1.1: Một số sản phẩm đ−ợc nhúng sử dụng các bộ vi điều khiển 
Thiết bị nội thất gia đình Văn phòng ô tô 
Đồ điện trong nhμ 
Máy đμm thoại 
Máy điện thoại 
Các hệ thống an toμn 
Các bộ mở cửa ga-ra xe 
Máy trả lời 
Máy Fax 
Máy tính gia đình 
Điện thoại 
Máy tính 
Các hệ thống an toμn 
Máy Fax 
Lò vi sóng 
Máy sao chụp 
Máy in lazer 
 Máy in mμu 
Máy tính hμnh trình 
Điều khiển động cơ 
Túi đệm khí 
Thiết bị ABS 
Đo l−ờng 
Hệ thống bảo mật 
Đíũu khiển truyền tin 
Giải trí 
Tivi 
Truyền hình cáp 
VCR 
Máy quy camera 
Điều khiển từ xa 
Trò chơi điện tử 
Điện thoại tổ ong 
Các nhạc cụ điện tử 
Máy khâu 
Điều khiển ánh sáng 
Máy nhắn tin 
Máy chơi Pootball 
Đồ chơi 
Các dụng cụ tập thể hình 
Máy nhắn tin Điều hoμ nhiệt độ 
Điện thoại tổ ong 
Mở cửa không cần chìa 
khoá 
1.1.2 Các bộ VĐK cho các hệ thống nhúng. 
Trong tμi liệu về các bộ vi xử lý ta th−ờng thấy khái niệm hệ thống nhúng 
(Embeded system). Các bộ vi xử lý vμ các bộ vi điều khiển đ−ợc sử dụng rộng rãi 
trong các sản phẩm hệ thống nhúng. Một sản phẩm nhúng sử dụng một bộ vi xử lý 
(hoặc một bộ vi điều khiển để thực hiện một nhiệm vụ vμ chỉ một mμ thôi. Một máy in 
lμ một ví dụ về một việc nhúng vì bộ xử lý bên trong nó chỉ lμm một việc đó lμ nhận dữ 
liệu vμ in nó ra. Điều nμy khác với một máy tình PC dựa trên bộ xử lý Pentium (hoặc 
một PC t−ơng thích với IBM ì 86 bất kỳ). Một PC có thể đ−ợc sử dụng cho một số bất 
kỳ các trạm dịch vụ in, bộ đầu cuối kiểm kê nhμ băng, máy chơi trò chơi điện tử, trạm 
dịch vụ mạng hoặc trạm đầu cuối mạng Internet. Phần mềm cho các ứng dụng khác 
nhau có thể đ−ợc nạp vμ chạy. Tất nhiên lμ lý do hiển nhiên để một PC thực hiện hμng 
loạt các công việc lμ nó có bộ nhớ RAM vμ một hệ điều hμnh nạp phần mềm ứng dụng 
th−ờng đ−ợc đốt vμo trong ROM. Một máy tính PC ì 86 chứa hoặc đ−ợc nối tới các 
sản phẩm nhúng khác nhau chẳng hạn nh− bμn phím, máyin, Modem, bộ điều khiển 
đĩa, Card âm thanh, bộ điều khiển CD = ROM. Chuột v.v... Một nội ngoại vi nμy có 
một bộ vi điều khiển bên trong nó để thực hiện chỉ một công việc, ví dụ bên trong mỗi 
con chuột có một bộ vi điều khiển để thực thi công việc tìm vị trí chuột vμ gửi nó đến 
PC Bảng 1.1 liệt kê một số sản phẩm nhúng. 
4.1.3 Các ứng dụng nhúng của PC ì 86. 
 Mặc dù các bộ vi điều khiển lμ sự lựa chọn −a chuộng đối với nhiều hệ thống 
nhúng nh−ng có nhiều khi một bộ vi điều khiển không đủ cho công việc. Vì lý do đó 
mμ những năm gần đây nhíều nhμ sản xuất các bộ vi sử lý công dụng chung chẳng hạn 
nh− Intel, Motorla, AMD (Advanced Micro Devices, Inc...). Vμ Cyric (mμ bây giờ lμ 
một bộ phận của National Senicon ductir, Inc) đã h−ớng tới bộ vi xử lý cho hiệu suất 
cao của thị tr−ờng nhúng. Trong khi Intel, AMD vμ Cyrix đẩy các bộ xử lý ì 86 của họ 
vμo cho cả thị tr−ờng nhúng vμ thị tr−ờng máy tính PC để bán thì Motorola vẫn kiên 
định giữ họ vi xử lý 68000 lại chủ yếu h−ớng nó cho các hệ thống nhúng hiệu suất cao 
vμ bây giờ Apple không còn dùng 680 ì trong các máy tính Macintosh nữa. Trong 
những năm đầu thập kỷ 90 của thế kỷ 20 máy tính Apple bắt đầu sử dụng các bộ vi xử 
lý Power PC (nh− 603, 604, 620 v.v...) thay cho 680 ì0 đối với Macintosh. Bộvi xử lý 
Power PC lμ kết quả liên doanh đầu t− của IBM vμ Motorola vμ nó đ−ợc h−ớng cho 
thị tr−ớng nhúng hiệu suất cao cũng nh− cho cả thị tr−ờng máy tính PC. Cần phải l−u 
ý rằng khi một công ty h−ớng một bộ vi xử lý công dụng chung cho thị tr−ờng nhúng 
nó tối −u hoá bộ xử lý đ−ợc sử dụng cho các hệ thống nhúng. Vì lý do đó mμ các bộ vi 
xử lý nμy th−ờng đ−ợc gọi lμ các bộ xử lý nhúng hiệu suất cao. Do vậy các khái niệm 
các bộ vi điều khiển vμ bộ xử lý nhúng th−ờng đ−ợc sử dụng thay đổi nhau. 
 Một trong những nhu cầu khắt khe nhất của hệ thống nhúng lμ giảm công suất 
tiêu thụ vμ không gian. 
Điều nμy có thể đạt đ−ợc bằng cách tích hợp nhiều chức năng vμo trong chíp 
CPU. Tất cả mọi bộ xử lý nhúng dựa trên ì 86 vμ 680 ì 0 đều có công suất tiêu thu 
thấp ngoμi ra đ−ợc bổ xung một số dạng cổng vμo - ra, cổng COM vμ bộ nhớ ROM 
trên một chíp. 
Trong các bộ xử lý nhúng hiệu suất cao có xu h−ớng tích hợp nhiều vμ nhiều 
chức năng hơn nữa trên chíp CPU vμ cho phép ng−ời thiết kế quyết định những đặc 
tính nμo họ muốn sử dụng. Xu h−ớng nμy cũng đang chiếm lĩnh thiết kế hệ thống PC. 
Bình th−ờng khi thiết kế bo mạch chủ của PC (Motherboard) ta cần một CPU cộng 
một chíp - set có chứa các cống vμo - ra, một bộ điều khiển cache, một bộ nhớ Flash 
ROM có chứa BIOS vμ cuối cùng lμ bộ nhớ cache thứ cấp. Những thiết kế mới đang 
Comment [URG1]: 
khẩn tr−ơng đi vμo công nghiệp sản xuất hμng loạt. Ví dụ Cyrix đã tuyên bố rằng họ 
đang lμm việc trên một chíp có chứa toμn bộ một máy tính PC ngoại trừ DRAM. Hay 
nói cách khác lμ chúng ta xắp nhìn thấy một máy tính PC trên một chíp. 
 Hiện nay do chuẩn hoá MS - DOS vμ Windows nên các hệ thống nhúng đang 
sử dụng các máy tình PC ì 86 . Trong nhiều tr−ờng hợp việc sử dụng các máy tính PC 
ì 86 cho các ứng dụng nhúng hiệu suất cao lμ không tiết kiệm tiền bạc, nh−ng nó lμm 
rút ngắn thời gian phát triển vì có một th− viện phần mềm bao la đã đ−ợc viết cho nền 
DOS vμ Windows. Thực tế lμ Windows lμ một nền đ−ợc sử dụng rộng rãi vμ dễ hiểu 
có nghĩa lμ việc phát triển một sản phẩm nhúng dựa trên Windows lμm giảm giá 
thμnh vμ rút ngắn thời gian phát triển đáng kể. 
1.1.4 Lựa chọn một bộ vi điều khiển. 
 Có 4 bộ vi điều khiển 8 bit chính. Đó lμ 6811 của Motorola, 8051 của Intel z8 
của Xilog vμ Pic 16 ì của Microchip Technology. Mỗi một kiểu loại trên đây đều có 
một tập lệnh vμ thanh ghi riêng duy nhất, nếu chúng đều không t−ơng thích lẫn nhau. 
Cũng có những bộ vi điều khiển 16 bit vμ 32 bit đ−ợc sản xuất bởi các hãng sản xuất 
chíp khác nhau. Với tất cả những bộ vi điều khiển khác nhau nh− thế nμy thì lấy gì 
lμm tiêu chuẩn lựa chọn mμ các nhμ thiết kế phải cân nhắc? Có ba tiêu chuẩn để lựa 
chọn các bộ vi điều khiển lμ: 
1) Đáp ứng nhu cầu tính toán của bμi toán một cách hiệu quả về mặt giá thμnh vμ đầy 
đủ chức năng có thể nhìn thấy đ−ợc (khả dĩ). 
2) Có sẵn các công cụ phát triển phần mềm chẳng hạn nh− các trình biên dịch, trình 
hợp ngữ vμ gỡ rối. 
3) Nguồn các bộ vi điều khiển có sẵn nhiều vμ tin cậy. 
1.1.5 Các tíêu chuẩn lựa chọn một bộ vi điều khiển. 
1. Tiêu chuẩn đầu tiênvμ tr−ớc hết tronglựa chọn một bộ vi điều khiển lμ nó phải đáp 
ứng nhu cầu bμi toán về một mặt công suất tính toán vμ giá thμnh hiệu quả. Trong khi 
phân tích các nhu cầu của một dự án dựa trên bộ vi điều khiển chúng ta tr−ớc hết 
phải biết lμ bộ vi điều khiển nμo 8 bit, 16 bit hay 32 bit có thể đáp ứng tốt nhất nhu 
cầu tính toán của bμi toán mộ tcách hiệu quả nhất? Những tiêu chuẩn đ−ợc đ−a ra để 
cân nhắc lμ: 
a) Tốc độ: Tốc độ lớn nhất mμ bộ vi điều khiển hỗ trợ lμ bao nhiêu. 
b) Kiểu đóng vỏ: Đó lμ kíểu 40 chân DIP hay QFP hay lμ kiểu đóng vỏ khác (DIP -
đóng vỏ theo 2 hμng chân. QFP lμ đóng vỏ vuông dẹt)? Đây lμ điều quan trọng đối với 
yêu cầu về không gian, kiểu lắp ráp vμ tạo mẫu thử cho sản phẩm cuối cùng. 
c) Công suất tiêu thụ: Điều nμy đặc biệt khắt khe đối với những sản phẩm dùng pin, 
ắc quy. 
d) Dung l−ợng bộ nhớ RAM vμ ROM trên chíp. 
e) Số chân vμo - ra vμ bộ định thời trên chíp 
f) Khả năng dễ dμng nâng cấp cho hiệu suất cao hoặc giảm công suất tiêu thụ. 
g) Giá thμnh cho một đơn vị: Điều nμy quan trọng quyết định giá thμnh cuối cùng của 
sản phẩm mμ một bộ vi điều khiển đ−ợc sử dụng. Ví dụ có các bộ vi điều khiển giá 50 
cent trên đơn vị khi đ−ợc mua 100.000 bộ một lúc. 
2) Tiêu chuẩn thứ hai trong lựa chọn một bộ vi điều khiển lμ khả năng phát triển các 
sản phẩm xung quanh nó dễ dμng nh− thế nμo? Các câu nhắc chủ yếu bao gồm khả 
năng có sẵn trình l−ợng ngữ, gỡ rối, trình biên dịch ngôn ngữ C hiệu quả về mã nguồn, 
trình mô phỏng hỗ trợ kỹ thuật vμ khả năng sử dụng trong nhμ vμ ngoμi môi tr−ờng. 
Trong nhiều tr−ờng hợp sự hỗ trợ nhμ cung cấp thứ ba (nghĩa lμ nhμ cung cấp khác 
không phải lμ hãng sản xuất chíp) cho chíp cũng tốt nh−, nếu không đ−ợc tốt hơn, sự 
hỗ trợ từ nhμ sản xuất chíp. 
3) Tiêu chuẩn thứ ba trong lựa chọn một bộ vi điều khiển lμ khả năng sẵn sμng đáp 
ứng về số l−ợng trong hiện tại vμ t−ơng lai. Đối với một số nhμ thiết kế điều nμy thậm 
chí còn quan trong hơn cả hai tiêu chuẩn đầu tiên. Hiện nay, các bộ vi điều khiển 8 bit 
dấu đầu, họ 8051 lμ có số l−ơng lớn nhất các nhμ cung cấp đa dạng (nhiều nguồn). Nhμ 
cung cấp có nghĩa lμ nhμ sản xuất bên cạnh nhμ sáng chế của bộ vi điều khiển. Trong 
tr−ờng hợp 8051 thì nhμ sáng chế của nó lμ Intel, nh−ng hiện nay có rất nhiều hãng 
sản xuất nó (cũng nh− tr−ớc kia đã sản xuất). 
Các hãng nμy bao gồm: Intel, Atmel, Philips/signe-tics, AMD, Siemens, Matra 
vμ Dallas, Semicndictior. 
Bảng 1.2: Địa chỉ của một số hãng sản xuất các thμnh viên của họ 8051. 
Hãng Địa chỉ Website 
Intel 
Antel 
www.intel.com/design/mcs51 
www.atmel.com 
Plips/ Signetis 
Siemens 
Dallas Semiconductor 
www.semiconductors.philips.com 
www.sci.siemens.com 
www.dalsemi.com 
Cũng nên l−u ý rằng Motorola, Zilog vμ Mierochip Technology đã dμnh một 
l−ợng tμi nguyên lớn để đảm bảo khả năng sẵn sμng về một thời gian vμ phạm vi rộng 
cho các sản phẩm của họ từ khi các sản phẩm của họ đi vμo sản xuất ổn định, hoμn 
thiện vμ trở thμnh nguồn chính. Trong những năm gần đây họ cũng đã bắt đầu bán tế 
bμo th− viện Asic của bộ vi điều khiển. 
1.2 Tổng quan về họ 8051. 
Trong mục nμy chúng ta xem xét một số thμnh viên khác nhau của họ bộ vi 
điều khiển 8051 vμ các đặc điểm bên trong của chúng. Đồng thời ta điểm qua một số 
nhμ sản xuất khác nhau vμ các sản phẩm của họ có trên thị tr−ờng. 
1.2.1 Tóm tắt về lịch sử của 8051. 
Vμo năm 1981. Hãng Intel giới thiệu một số bộ vi điều khiển đ−ợc gọi lμ 8051. 
Bộ vi điều khiển nμy có 128 byte RAM, 4K byte ROM trên chíp, hai bộ định thời, một 
cổng nối tiếp vμ 4 cổng (đều rộng 8 bit) vμo ra tất cả đ−ợc đặt trên một chíp. Lúc ấy 
nó đ−ợc coi lμ một hệ thống trên chíp. 8051 lμ một bộ xử lý 8 bit có nghĩa lμ CPU 
chỉ có thể lμm việc với 8 bit dữ liệu tại một thời điểm. Dữ liệu lớn hơn 8 bit đ−ợc chia 
ra thμnh các dữ liệu 8 bit để cho xử lý. 8051 có tất cả 4 cổng vμo - ra I/O mỗi cổng 
rộng 8 bit (xem hình 1.2). Mặc dù 8051 có thể có một ROM trên chíp cực đại lμ 64 K 
byte, nh−ng các nhμ sản xuất lúc đó đã cho xuất x−ởng chỉ với 4K byte ROM trên 
chíp. Điều nμy sẽ đ−ợc bμn chi tiết hơn sau nμy. 
8051 đã trở nên phổ biến sau khi Intel cho phép các nhμ sản xuất khác sản xuất 
vμ bán bất kỳ dạng biến thế nμo của 8051 mμ họ thích với điều kiện họ phải để mã lại 
t−ơng thích với 8051. Điều nμy dẫn đến sự ra đời nhiều phiên bản của 8051 với các tốc 
độ khác nhau vμ dung l−ợng ROM trên chíp khác nhau đ−ợc bán bởi hơn nửa các nhμ 
sản xuất. Điều nμy quan trọng lμ mặc dù có nhiều biến thể khác nhau của 8051 về tốc 
độ vμ dung l−ơng nhớ ROM trên chíp, nh−ng tất cả chúng đều t−ơng thích với 8051 
ban đầu về các lệnh. Điều nμy có nghĩa lμ nếu ta viết ch−ơng trình của mình cho một 
phiên bản nμo đó thì nó cũng sẽ chạy với mọi phiên bản bất kỳ khác mμ không phân 
biệt nó từ hãng sản xuất nμo. 
Bảng 1.3: Các đặc tính của 8051 đầu tiên. 
Đặc tính Số l−ợng 
ROM trên chíp 
RAM 
Bộ định thời 
Các chân vμo - ra 
Cổng nối tiếp 
Nguồn ngắt 
4K byte 
128 byte 
2 
32 
1 
6 
1.2.2 Bộ ví điều khiển 8051 
Bộ vi điều khiển 8051 lμ thμnh viên đầu tiên của họ 8051. Hãng Intel ký hiệu nó 
nh− lμ MCS51. Bảng 3.1 trình bμy các đặc tính của 8051. 
Hình 1.2: Bố trí bên trong của sơ đồ khối 8051. 
1.2.3 các thμnh viên khác của họ 8051 
 Có hai bộ vi điều khiển thμnh viên khác của họ 8051 lμ 8052 vμ 8031. 
a- Bộ vi điều khiển 8052: 
 Bộ vi điều khiển 8052 lμ một thμnh viên khác của họ 8051, 8052 có tất cả các 
đặc tính chuẩn của 8051 ngoμi ra nó có thêm 128 byte RAM vμ một bộ định thời nữa. 
Hay nói cách khác lμ 8052 có 256 byte RAM vμ 3 bộ định thời. Nó cũng có 8K byte 
ROM. Trên chíp thay vì 4K byte nh− 8051. Xem bảng 1.4. 
Bảng1.4: so sán ... 
15.1.6 Hệ 8031 với 8255. 
 Trong một hệ thống dựa trên 8031 mμ bộ nhớ ch−ơng trình ROM ngoμi lμ một 
sự bắt buộc tuyệt đối thì sử dụng một 8255 lμ rất đ−ợc trμo đón. Điều nμy lμ do một 
thực tế lμ trong giải trình phối ghép 8031 với bộ nhớ ch−ơng trình ROM ngoμi ta bị 
mất hai cổng P0 vμ P2 vμ chỉ còn lại duy nhất cổng P1. Do vậy, việc nối với một 8255 
lμ cách tốt nhất để có thêm một số cổng. Điều nμy đ−ợc chỉ ra trên hình 15.8. 
8031 
AD7 
P0.0 
P0.7 
ALE 
P3.7 
P3.6 
PSEN 
P2.7 
P2.0 
74LS373 
G 
OC 
q D 
AD0 
WR EA 
RD 
A0
8
2
5
5
RESD7
2864 
(2764) 
8Kì8 
Program 
RAM
CE OE VCC 
D0
RDWR
VCC 
A1
PA
PB
PC
A0
A0
A8
A12 A12
A8
A0
A0
D7
D0
 Hình 15.8: Nối 8031 tới một ROM ch−ơng trình ngoμi vμ 8255. 
15.2 Nối ghép với thế giới thực. 
15.2.1 Phối ghép 8255 với động cơ b−ớc. 
 Ch−ơng 13 đã nói chi tiết về phối ghép động cơ b−ớc với 8051, ở đây ta trình 
bμy nối ghép động cơ b−ớc tới 8255 vμ lập trình (xem hình 15.9). 
 Hình 15.9: Nối ghép 8255 với một động cơ b−ớc. 
 Ch−ơng trình cho sơ đồ nối ghép nμy nh− sau: 
 MOV A, #80H ; Chọn từ điều khiển để PA lμ đầu ra 
ULN2003 Stepper Motor
COM
COM
16
15
14
134
3
2
1
+5V
PA0 
PA1 
PA2 
PA3 
0855 
D0 
D7 
A0 
A1 
from 
8051 
Decoding 
Circuyiry 
A2 
A7 
D0 
D7 
A0 
A1 
RD 
WR 
CS
ULN2003 Conection for Stepper Motor 
Pin 8 = GND 
Pin 9 = +5v 
 MOV R1, #CRPORT ; Địa chỉ cổng thanh ghi điều khiển 
 MOVX @R1, A ; Cấu hình cho PA đầu ra 
 MOV R1, #APORT ; Nạp địa chỉ cổng PA 
 MOV A, #66H ; Gán A = 66H, chuyển xung của 
động cơ b−ớc 
 AGAIN: MOVX @R1, A ; Xuất chuỗi động cơ 
đến PA 
 RR A ; Quay chuỗi theo chiều kim đồng hồ 
 ACALL DELAY ; Chờ 
 SJMP AGAIN 
15.2.2 Phối ghép 8255 với LCD. 
 Hình 5.10: Nối ghép 8255 với LCD. 
Ch−ơng 15.1: 
 ; Ghi các lệnh vμ dữ liệu tới LCD không có kiểm tra cờ bận. 
 ; Giả sử PA của 8255 đ−ợc nối tới D0 - D7 của LCD vμ 
 ; IB - RS, PB1 = R/W, PB2 = E để nối các chân điều khiển LCD 
 MOV A, #80H ; Đặt tất cả các cổng 8255 lμ đầu ra 
 MOV R0, #CNTPORT ; Nẹp địa chỉ thanh ghi điều khiển 
 Ch−ơng trình 15.1 trình bμy
cách xuất các lệnh vμ dữ liệu tới
một LCD đ−ợc nối tới 8255 theo sơ
đồ hình 15.10. Trong ch−ơng trình 
15.1 ta phải đặt một độ trễ tr−ớc
mỗi lần xuất thông tin bất kỳ (lệnh
hoặc dữ liệu) tới LCD. Một cách
tốt hơn lμ kiểm tra cờ bận tr−ớc
khi xuất bất kỳ thứ gì tới LCD nh−
đã nói ở ch−ơng 12. Ch−ơng trình
15.2 lặp lại ch−ơng trình 15.1 có sử
dụng kiểm tra cờ bận. Để ý rằng
lúc nμy không cần thời gian giữ
0855
D0PA0
PA1
PB0
PB1
PB2
A7
VCC 
VEE 
VSS 
RS R/W E
LC
10K 
POT 
RESET
 MOVX @R0, A ; Xuất từ điều khiển 
 MOV A, #38H ; Cấu hình LCD có hai dòng vμ ma 
trận 5ì7 
 ACALL CMDWRT ; Ghi lệnh ra LCD 
 ACALL DELAY ; Chờ đến lần xuất kế tiếp 
(2ms) 
 MOV A, # 0EH ; Bật con trỏ cho LCD 
 ACALL CMDWRT ; Ghi lệnh nμy ra LCD 
 ACALL DELAY ; Chờ lần xuất kế tiếp 
 MOV A, # 01H ; Xoá LCD 
 ACALL CMDWRT ; Ghi lệnh nμy ra LCD 
 ACALL DELAY ; Dịch con trỏ sang phải 
 MOV A, # 06 ; Ghi lệnh nμy ra LCD 
 ACALL CMDWRT ; Chờ lần xuất sau 
 ACALL DELAY ; Ghi lệnh nμy ra LCD 
 ... ; v.v... cho tất cả mọi lệnh LCD 
 MOV A, # 'N' ; Hiển thị dữ liệu ra (chữ N) 
 ACALL DATAWRT ; Gửi dữ liệu ra LCD để hiển thị 
 ACALL DELAY ; Chờ lần xuất sau 
 MOV A, # '0' ; Hiển thị chữ "0" 
 ACALL DATAWRT ; Gửi ra LCD để hiển thị 
 ACALL DELAY ; Chờ lần xuất sau 
 ... ; v.v... cho các dữ liệu khác 
 ; Ch−ơng trình con ghi lệnh CMDWRT ra LCD 
 CMDWRT: MOV R0, # APORT ; Nạp địa chỉ cổng A 
 MOVX @R0, A ; Xuất thông tin tới chân dữ 
liệu của LCD 
 MOV R0, # BPORT ; Nạp địa chỉ cổng B 
 MOV A, # 00000100B ; RS=0, R/W=1, E=1 cho xung cao 
xuống thấp 
 MOVX @R0, A ; Kích hoạt các chânRS, R/W, 
E của LCD 
 NOP ; Tạo độ xung cho chân E 
 NOP 
 MOV A, # 00000000B ; RS=0, R/W=1, E=1 cho xung cao 
xuống thấp 
MOVX @R0, A ; Chốt thông tin trên chân dữ 
liệu của LCD 
 RET 
 ; Ch−ơng trình con ghi lệnh DATAWRT ghi dữ liệu ra LCD. 
 CMDWRT: MOV R0, # APORT ; Nạp địa chỉ cổng A 
 MOVX @R0, A ; Xuất thông tin tới chân dữ 
liệu của LCD 
 MOV R0, # BPORT ; Đặt RS=1, R/W=0, E=0 cho xung cao 
xuống thấp 
 MOV A, # 00000101B ; Kích hoạt các chân RS, R/W, E 
 MOVX @R0, A ; Tạo độ xung cho chân E 
 NOP 
 NOP 
 MOV A, # 00000001B ; Đặt RS=1, R/W=0, E=0 cho xung 
cao xuống thấp 
 MOVX @RC, A ; Chốt thông tin trên chân dữ 
liệu của LCD 
 RET 
Ch−ơng trình 15.2: 
 ; Ghi các lệnh vμ dữ liệu tới LCD có sử dụng kiểm tra cờ bận. 
 ; Giả sử PA của 8255 đ−ợc nối tới D0 - D7 của LCD vμ 
 ; PB0 = RS, PB1 = R/W, PB2 = E đối với 8255 tới các chân điều khiển LCD 
 MOV A, #80H ; Đặt tất cả các cổng 8255 lμ đầu ra 
 MOV R0, #CNTPORT ; Nạp địa chỉ thanh ghi điều khiển 
 MOVX @R0, A ; Xuất từ điều khiển 
 MOV A, #38H ; Chọn LCD có hai dòng vμ ma trận 
5ì7 
 ACALL NMDWRT ; Ghi lệnh ra LCD 
 MOV A, # 0EH ; Lệnh của LCD cho con trỏ bật 
 ACALL NMDWRT ; Ghi lệnh ra LCD 
 MOV A, # 01H ; Xoá LCD 
 ACALL NMDWRT ; Ghi lệnh ra LCD 
 MOV A, # 06 ; Lệnh dịch con trỏ sang phải 
 ACALL CMDWRT ; Ghi lệnh ra LCD 
 ... ; v.v... cho tất cả mọi lệnh LCD 
 MOV A, # 'N' ; Hiển thị dữ liệu ra (chữ N) 
 ACALL NCMDWRT ; Gửi dữ liệu ra LCD để hiển thị 
 MOV A, # '0' ; Hiển thị chữ "0" 
 ACALL NDADWRT ; Gửi ra LCD để hiển thị 
 ... ; v.v... cho các dữ liệu khác 
 ; Ch−ơng trình con ghi lệnh NCMDWRT có hiển thị cờ bận 
 NCMDWRT: MOV R2, A ; L−u giá trị thanh ghi A 
 MOV A, #90H ; Đặt PA lμ cổng đầu vμo để đọc 
trạng thái LCD 
 MOV R0, # CNTPORT ; Nạp địa chỉ thanh ghi điều khiển 
 MOVX @R0, A ; Đặt PA đầu vμo, PB đầu ra
 MOV A, # 00000110B ; RS=0, R/W=1, E=1 đọc lệnh 
 MOV @R0, BPORT ; Nạp địa chỉ cổng B 
 MOVX R0, A ; RS=0, R/W=1 cho các chân RD vμ 
RS 
MOV R0, APORT ; Nạp địa chỉ cổng A 
 READY: MOVX @R0 ; Đọc thanh ghi lệnh 
 RLC A ; Chuyển D7 (cờ bận) vμo bit nhớ carry 
 JC READY ; Chờ cho đến khi LCD sẵn sμng 
 MOV A, #80H ; Đặt lại PA, PB thμnh đầu ra 
 MOV R0, #CNTPORT ; Nạp địa chỉ cổng điều khiển 
 MOVX @R0, A ; Xuất từ điều khiển tới 8255 
 MOV A, R2 ; Nhận giá trị trả lại tới LCD 
 MOV R0, #APORT ; Nạp địa chỉ cổng A 
 MOVX @R0, A ; Xuất thông tin tới các chân 
dữ liệu của LCD 
 MOV R0, #BPORT ; Nạp địa chỉ cổng B 
 MOV A, #00000100B ; Đặt RS=0, R/W=0, E=1 cho xung 
thấp lên cao 
 MOVX @R0, A ; Kích hoạt RS, R/W, E của 
LCD 
 NOP ; Tạo độ rộng xung của chân E 
 NOP 
 MOV A, #00000000B ; Đặt RS=0, R/W=0, E=0 cho xung 
cao xuống thấp 
 MOVX @R0, A ; Chốt thông tin ở chân dữ 
liệu LCD 
 RET 
 ; Ch−ơng trình con ghi dữ liệu mới NDATAWRT sử dụng cờ bận 
 NCMDWRT: MOV R2, A ; L−u giá trị thanh ghi A 
 MOV A, #90H ; Đặt PA lμ cổng đầu vμo để đọc 
trạng thái LCD 
 MOV R0, # CNTPORT ; Nạp địa chỉ thanh ghi điều khiển 
 MOVX @R0, A ; Đặt PA đầu vμo, PB đầu ra
 MOV A, # 00000110B ; RS=0, R/W=1, E=1 đọc lệnh 
 MOV @R0, BPORT ; Nạp địa chỉ cổng B 
 MOVX R0, A ; RS=0, R/W=1 cho các chân RD vμ 
RS 
MOV R0, APORT ; Nạp địa chỉ cổng A 
 READY: MOVX @R0 ; Đọc thanh ghi lệnh 
 RLC A ; Chuyển D7 (cờ bận) vμo bit nhớ carry 
 JC READY ; Chờ cho đến khi LCD sẵn sμng 
 MOV A, #80H ; Đặt lại PA, PB thμnh đầu ra 
 MOV R0, #CNTPORT ; Nạp địa chỉ cổng điều khiển 
 MOVX @R0, A ; Xuất từ điều khiển tới 8255 
 MOV A, R2 ; Nhận giá trị trả lại tới LCD 
 MOV R0, #APORT ; Nạp địa chỉ cổng A 
 MOVX @R0, A ; Xuất thông tin tới các chân 
dữ liệu của LCD 
 MOV R0, #BPORT ; Nạp địa chỉ cổng B 
 MOV A, #00000101B ; Đặt RS=1, R/W=0, E=1 cho xung 
thấp lên cao 
 MOVX @R0, A ; Kích hoạt RS, R/W, E của 
LCD 
 NOP ; Tạo độ rộng xung của chân E 
 NOP 
 MOV A, #00000001B ; Đặt RS=1, R/W=0, E=0 cho xung 
cao xuống thấp 
 MOVX @R0, A ; Chốt thông tin ở chân dữ 
liệu LCD 
 RET 
15.2.3 Nối ghép ADC tới 8255. 
 Các bộ ADC đã đ−ợc trình bμy ở ch−ơng 12. D−ới đây một ch−ơng trình chỉ 
một bộ ADC đ−ợc nối tới 8255 theo sơ đồ cho trên hình 115.11. 
 MOV A, #80H ; Từ điều khiển với PA = đầu ra vμ 
PC = đầu vμo 
 MOV R1, #CRPORT ; Nạp địa chỉ cổng điều khiển 
 MOVX @R1, A ; Đặt PA = đầu ra vμ PC = 
đầu vμo 
 BACK: MOV R1, #CPORT ; Nạp địa chỉ cổng C 
 MOVX A, @R1 ; Đọc địa chỉ cổng C để xem 
ADC đã sẵn sμng ch−a 
 ANL A,, #00000001B ; Che tất cả các bít cổng C để xem 
ADC đã sẵn sμng ch−a 
 JNZ BACK ; Giữ hiển thị PC0 che EOC 
 ; Kết thúc hội thoại vμ bây giờ nhận dữ liệu 
của ADC 
 MOV R1, #APORT ; Nạp địa chỉ PA 
 MOVX A, @R1 ; A = đầu vμo dữ liệu t−ơng tự 
 Cho đến đây ta đã đ−ợc trao đổi chế độ vμo/ ra đơn giản của 8255 vμ trình bμy 
nhiều ví dụ về nó. Ta xét tiếp các chế độ khác. 
 Hình 15.11: Nối ghép ADC 804 với 8255. 
15.3 Các chế độ khác của 8255. 
15.3.1 Chế độ thiết lập/ xoá bit BSR. 
D0 
D7 
Decoding 
Circuyiry 
A2 
A7 
D0
D7
PA0 
PA7 
PC0 INTR
RESET 
8255 
VCC 
CLK R
CLK IN
Vin(+)
Vin(-)
A GND
Vref/2
GND
CS
10K
POT
10k 150pF
5VADC80
RD
WR
 Một đặc tính duy nhất của cổng C lμ các bit có thể đ−ợc điều khiển riêng rẽ. 
Chế độ BSR cho phép ta thiết lập các bit PC0 - PC7 lên cao xuống thấp nh− đ−ợc chỉ 
ra trên hình 15.12. Ví dụ 15.6 vμ 15.7 trình bμy cách sử dụng chế độ nμy nh− thế nμo? 
 Hình 15.12: Từ điều khiển của chế độ BSR. 
Ví dụ 15.6: 
 Hãy lập trình PCA của 8255 ở chế độ BSR thì bit D7 của từ điều khiển phải ở 
mức thấp. Để PC4 ở mức cao, ta cần một từ điều khiển lμ "0xxx1001" vμ ở mức thấp 
ta cần "0xxx1000". Các bít đ−ợc đánh dấu x lμ ta không cần quan tâm vμ th−ờng 
chúng đ−ợc đặt về 0. 
 MOV A, 00001001B ; Đặt byte điều khiển cho PC4 =1 
 MOV R1, #CNTPORT ; Nạp cổng thanh ghi điều khiển 
 MOVX @R1, A ; Tạo PC4 = 1 
 ACALL DELAY ; Thời gian giữ chậm cho 
xung cao 
 MOV A, #00001000B ; Đặt byte điều khiển cho PC4 = 0 
 MOVX @R1, A ; Tạo PC4 = 0 
 ACALL DELAY 
 0 x x x Bit Select S/R 
BSR 
Mode 
D7 D6 D5 D4 D3 D2 D1 D0
Not Used. 
Generally = 0. 
000=Bit0 100=Bit4
001 = Bit1 101=Bit5 
010 = Bit2 110=Bit6 
011 = Bit3 111=Bit7 
Set=1
Reset=0 
D0
D7
WR
RD RD
WR
A0
8255
 Hình 15.13: Cấu hình cho ví dụ 15.6 vμ 15.7. 
Ví dụ 15.7: 
 Hãy lập trình 8255 theo sơ đồ 15.13 để: 
a) Đặt PC2 lên cao 
b) Sử dụng PC6 để tạo xung vuông liên tục với 66% độ đầy xung. 
Lời giải: 
 a) MOV R0, # CNTPORT 
 MOV A, # 0XXX0101 ; Byte điều khiển 
 MOV @R0, A 
 b) 
 AGAIN: MOV A, #00001101B ; Chọn PC6 = 1 
 MOV R0, #CNTPORT ; Nạp địa chỉ thanh ghi điều khiển 
 MOVX @R0, A ; Tạo PC6 = 1 
 ACALL DELAY 
 ACALL DELAY 
 MOV A, #00001100B ; PC6 = 0 
 ACALL DELAY ; Thời gian giữ chậm 
 SJMP AGAIN 
 PC4 
PC4 
PC7 
PC6 
INTEA 
Port A Output 
OBFA
ACKA
Po
rt 
A 
w
ith
H
an
sh
ak
e 
Si
gn
al
s 
1 0 1/0 1 0 X 1 0 
D7 D6 D5 D4 D3 D2 D1 D0
Port B O
utput 
Port B M
ode1 
Port B O
utput 
Port A O
utput 
Port A M
ode1 
Port A M
ode1 
I/O
 M
ode 
PC
4.51=Input,0=O
utpput 
ControlWord-Mode1Output
S 
s 
 Hình 15.14: Biểu đồ đầu ra của 8255 ở chế độ 1. 
INTEB 
OBF
WR
ACK
Output 
 Hình 15.15: Biểu đồ định thời của 8255 ở chế độ 1. 
15.3.2 8255 ở chế độ 1: Vμo/ ra với khả năng nμy bắt tay. 
 Một trong những đặc điểm mạnh nhất của 8255 lμ khả năng bắt tay với các 
thiết bị khác. Khả năng bắt tay lμ một quá trình truyền thông qua lại của hai thiết bị 
thông minh. Ví dụ về một thiết bị có các tín hiệu bắt tay lμ máy in. D−ới đây ta trình 
bμy các tín hiệu bắt tay của 8255 với máy in. 
 Chế độ 1: Xuất dữ liệu ra với các tín hiệu bắt tay. 
 Nh− trình bμy trên hình 15.14 thì cổng A vμ B có thể đ−ợc sử dụng nh− các 
cổng đầu ra để gửi dữ liệu tới một thiết bị với các tín hiệu bắt tay. Các tín hiệu bắt tay 
cho cả hai cổng A vμ B đ−ợc cấp bởi các bit của cổng C. Hình 15.15 biểu đồ định thời 
của 8255. 
 D−ới đây lμ các phần giải thích về các tín hiệu bắt tay vμ tính hợp lý của chúng 
đối với cổng A, còn cổng B thì hoμn toμn t−ơng tự. 
 Tín hiệu OBFa : Đây lμ tín hiệu bộ đệm đầu ra đầy của cổng A đ−ợc tích cực 
mức thấp đi ra từ chân PC7 để báo rằng CPU đã ghi 1 byte dữ liệu tới cổng A. Tín 
hiệu nμy phải đ−ợc nối tới chân STROBE của thiết bị thu nhận dữ liệu (chẳng hạn 
nh− máy in) để báo rằng nó bây giờ đã có thể đọc một byte dữ liệu từ chốt cổng. 
 Tín hiệu ACKa : Đây lμ tín hiệu chấp nhận do cổng A có mức tích cực mức 
thấp đ−ợc nhân tại chân PC6 của 8255. Qua tín hiệu ACKa thì 8255 biết rằng tín hiệu 
tại cổng A đã đ−ợc thiết bị thu nhận lấy đi. Khi thiết bị nhận lấy dữ liệu đi từ cổng A 
nó báo 8255 qua tín hiệu ACKa . Lúc nμy 8255 bật OBFa lên cao để báo rằng dữ liệu 
tại cổng A bây giờ lμ dữ liệu cũ vμ khi CPU đã ghi một byte dữ liệu mới tới cổng A thì 
OBFa lại xuống thấp v.v... 
 Tín hiệu INTRa: Đây lμ tín hiệu yêu cầu ngắt của cổng A có mức tích cực cao đi 
ra từ chân PC3 của 8255. Tín hiệu ACK lμ tín hiệu có độ dμi hạn chế. Khi nó xuống 
thấp (tích cực) thì nó lμm cho OBFa không tích cực, nó ở mức thấp một thời gian 
ngắn vμ sau đó trở nên cao (không tích cực). S−ờn lên của ACK kích hoạt INTRa lên 
cao. Tín hiệu cao nμy trên chân INTRa có thể đ−ợc dùng để gây chú ý của CPU. CPU 
đ−ợc thông báo qua tín hiệu INTRa rằng máy in đã nhận byte cuối cùng vμ nó sẵn 
sμng để nhận byte dữ liệu khác. INTRa ngắt CPU ngừng mọi thứ đang lμm vμ ép nó 
gửi byte kế tiếp tới cổng A để in. Điều quan trọng lμ chú ý rằng INTRa đ−ợc bật lên 1 
chỉ khi nếu INTRa, OBFa vμ ACKa đều ở mức cao. Nó đ−ợc xoá về không khi CPU 
ghi một byte tới cổng A. 
 Tín hiệu INTEa: Đây lμ tín hiệu cho phép ngắt cổng A 8255 có thể cấm INTRa 
để ngăn nó không đ−ợc ngắt CPU. Đây lμ chức năng của tín hiệu INTEa. Nó lμ một 
mạch lật Flip - Flop bên trong thiết kế để che (cấm) INTRa. Tín hiệu INTRa có thể 
đ−ợc bật lên hoặc bị xoá qua cổng C trong chế độ BSR vì INTEa lμ Flip - Plop đ−ợc 
điều khiển bởi PC6. 
 Từ trạng thái: 8255 cho phép hiển thị trạng thái của các tín hiệu INTR, OBF vμ 
INTE cho cả hai cổng A vμ B. Điều nμy đ−ợc thực hiện bằng cách đọc cổng C vμo 
thanh ghi tổng vμ kiểm tra các bit. Đặc điểm nμy cho phép thực thi thăm dò thay cho 
ngắt phần cứng. 
 Hình 15.16: Đầu cắm DB-25. 
 (hình 15.17 mờ quá không vẽ đ−ợc) 
 Hình 15.17: Đầu cáp của máy in Centronics. 
 Bảng 15.2: Các chân tín hiệu của máy in Centronics. 
Chân số Mô tả Chân số Mô tả 
1 
2 
STROBE 
Dữ liệu D0 
11 
12 
Bận (busy) 
Hết giấy (out of paper) 
1 13
14 25
3 
4 
5 
6 
7 
8 
9 
10 
Dữ liệu D1 
Dữ liệu D2 
Dữ liệu D3 
Dữ liệu D4 
Dữ liệu D5 
Dữ liệu D6 
Dữ liệu D7 
ACK (chấp nhận) 
13 
14 
15 
16 
17 
18-25 
Chọn (select) 
Tự nạp ( Autofeed ) 
Lỗi ( Error ) 
Khởi tạo máy in 
Chọn đầu vμo ( inputSelect ) 
Đất (ground) 
 Các b−ớc truyền thông có bắt tay giữa máy in vμ 8255. 
Một byte dữ liệu đ−ợc gửi đến bus dữ liệu máy in. 
Máy in đ−ợc báo có 1 byte dữ liệu cần đ−ợc in bằng cách kích hoạt tín hiệu đầu 
vμo STROBE của nó. 
Khi máy nhận đ−ợc dữ liệu nó báo bên gửi bằng cách kích hoạt tín hiệu đầu ra 
đ−ợc gọi lμ ACK (chấp nhận). 
Tín hiệu ACK khởi tạo quá trình cấp một byte khác đến máy in. 
 Nh− ta đã thấy từ các b−ớc trên thì chỉ khi một byte dữ liệu tới máy in lμ không 
đủ. Máy in phải đ−ợc thông báo về sự hiện diện của dữ liệu. Khi dữ liệu đ−ợc gửi thì 
máy in có thể bận hoặc hết giấy, do vậy máy in phải đ−ợc báo cho bên gửi khi nμo nó 
nhận vμ lấy đ−ợc dữ liệu của nó. Hình 15.16 vμ 15.17 trình các ổ cắm DB25 vμ đầu cáp 
của máy in Centronics t−ơng ứng. 

File đính kèm:

  • pdfgiao_trinh_cac_bo_vi_dieu_khien.pdf