Mạng quang báo giao tiếp với máy tính
Trang 1CHUONG I: Giới thiệu về mạch quang báo -: e-+ -sexe2 11
I Các phương pháp thực hiện mạch quang báo . - + seseeneeerese 11
II Giới thiệu sơ lược các loại quang báo - - sen ghe 12
II Các phương pháp quét Led - - «5 n9 1913841321181 118 1111 re 12
CHƯƠNG II: Vi điều khiển -5 5c552cccrerrrrrrrerrterirrrirrrirre 17
L Giới thiệu về cấu trúc vi xử lý họ MSC51
II Khảo sát vi xử lý 895] .- - «tì nHư HH 41871 0111111110110 10 11 ren 19
II Cấu trúc bên trong vi điều khiỂn 5-5-5 set 22
IV Các chế độ timer và CỜ trần G + t2 x91 vn nh ghe 34 N@;p i09 80 1 36
VI Tổ chức ngắt trong 895 l + St xt2tEEEHrrrerrrke 42 VII Tóm tắc các tập lệnh của 895 l 2< + +séretrrrrrrrrrirrrrsrrrie 43
CHUONG III: Điều khiển ghép nối máy tính với thiết bị ngọai vi 48
I Giao tiếp máy tính qua rãnh cắm mở rỘng - - + +s+s+s++xexexssersres 48
II Giao tiếp máy tính qua cổng song SONg . - 5s +ctseeterrrsrrrrrrrrre 49
II Giao tiếp máy tính qua cổng nối tiẾp «55+ +cessreterrrtrrrrrrrree 49
TV Truyén div 116 T17 53
V Thông tin nối tiếp đồng bộ - - + 5 HH 2101211111 1.1 erre 58
VI Lưu đồ và chương trình dành cho phần cứng . -7 5sxecsrsrrzrses 59
VIII Chương trình giao tiếp giữa máy tính và vi điều khiển 89C51 64
IX Mạch điện giao tiếp với máy tính s -+cs+treekererrrrrrrrrrrrrrrrrre 65
PHAN IL THIET KE VA THI CONG MACH
CHUONG I: GiGi thiệu linh kiện - - <6 6 Ăn v re g vưy 71
TI Vi mach diéu khi€n 74HC5S73 71
Trang 2VI Ma tran Led 21 86
CHUONG II: Thiết kế phần cứng - - +5 5555525 css+vreersreree 89 I8 s J0 89
II Sơ đồ từng khốii cccrrieerriirtrirrriiriiiriiriiirriieriririiiirie 89
Trang 3
PHẦN I:CƠ SỞ LÝTHUYẾT
Trang 4
CHƯƠNG I: GIGI THIEU VE MACH QUANG BAO
I CÁC PHƯƠNG PHÁP THUC HIEN MACH QUANG BAO
Có nhiễu cách để thực hiện một mạch quang báo: dùng IC rời, dùng
EPROM, dùng vi điều khiển Nếu dùng IC rời thì ta sử dụng các IC giải đa hợp (Demultiplexer) kết hợp với diod để tạo thành mạch ROM, kiểu này được gọi là MADE HOME Chương trình loại này được tạo ra bằng cách sắp xếp vị trí các diod Dung lượng bộ nhớ này thay đổi theo kích thước mạch, kích thước càng lớn
thì dung lượng mạch càng lớn Nếu muốn đủ độ nhớ để chạy một mạch quang báo bình thường thì kích thước mạch rất lớn và vì vậy giá thành sẽ rất cao, thực hiện sẽ
vô cùng phức tạp, nếu muốn thay đổi thông tin trên bảng led hiển thị thì phải thay đổi lại mạch Do đó không thực tế Vì thế, dạng ROM này không sử dụng trong thực tế Tương tự nếu sử dụng IC có lập trình như PLC, tuy mạch có giảm nhưng nhìn chung mạch vẫn rất lớn so với sử dụng vi điểu khiển
Khi thay các IC rời bằng EPROM thì kích thước mạch và giá thành sẽ giảm bớt đi rất đáng kể Kích thước mạch của EPROM hầu như không tăng theo dung lượng bộ nhớ,ngoài ra khi muốn thay đổi chương trình hiển thị thì ta chỉ việc xoá chương trình củ và thay thế vào đó một chương trình phần mềm khác Mặc dù việc
thực hiện quang báo bằng EPROM có nhiều ưu điểm hơn IC rời nhưng cả hai đều
có một khuyết điểm lớn là dữ liệu chưa được xử lý trước khi xuất ra Led.Khuyết Lliểm này làm cho hai phương pháp dùng IC rời và dùng EPROM phụ thuộc nhiều vào phần cứng Nếu ta sử dụng vi điều khiển để thực hiện mạch quang báo với nhiều kỹ xảo hơn, linh hoạt hơn chỉ bằng cách thay đổi phần mềm thay vì phải thay đổi phân cứng Để dùng vi điều khiển làm mạch quang báo thì cần có những linh kiện kèm theo như: IC ghi dịch, IC đệm dòng, các linh kiện rời dùng làm mạch đệm khác
I GIỚI THIÊU SƠ LƯỢC CÁC LOẠI QUANG BÁO:
Dựa vào phạm vi ứng dụng và sự linh hoạt của nó mà ta có thể chia quang
báo thành các loại như sau:
Trang:11
Trang 5
> Loại quang báo mà nội dung hiển thị của nó được lưu trữ trong bộ nhớ Rom Loại quang báo này rất bất tiện vì khi muốn thay đổi nội dung của nó ta cần phải nạp lại nội dung trong Rom, điều đó thì rất bất tiện và không có tính kinh tế Chính
vì vậy mà nó ít được sử dụng
> Loại quang báo giao tiếp với bàn phím: để nhập nội dung cần hiển thị ta chỉ cần dùng bàn phím nhập vào nội dung, nó có thể thay đổi nội dung cần hiển thị một cách nhanh chóng nhưng khả năng hiển thị của nó bị giới hạn vì nó chỉ có thể hiển thị các chữ cái đơn giản
> Loại quang báo giao tiếp với máy tính: loại quang báo này được điều khiển bằng máy vi tính, khả năng hiển thị của nó rất đa dang Thông thường loại quang báo này được thiết kế để truy xuất từng điểm
> Loại quang báo giao tiếp kết hợp giữa Kit vi điều khiển với máy tính: loại này được sử dụng rất phổ biến vì tính đa dạng và phong phú của nó, nó rất thuận tiện khi thay đổi nội dung hiển thị cũng như khả năng hiển thị các dạng hình ảnh phức tạp khác Nó có thể kiểm tra nội dung cần hiển thị một cách chính xác và nhanh chóng thông qua màn hình giao tiếp của máy vi tính
1 Phương pháp quét Led đối với ma trận Led
Để điều khiển ma trận Led cần có mạch chốt dữ liệu, xuất dữ liệu các mạch này phải kết hợp chặt chẽ với nhau Số mạch chốt tỷ lệ với số lượng Led
Với ma trận hiển thị, số lượng Led rất lớn, kéo theo số mạch chốt nhiều, dẫn đến phần hiển thị quang báo trở nên phức tạp, cổng kểnh, khó kết nối, khó vẽ mạch
in không có tính kinh tế Phương pháp MULTIPLEX cho phép ta điều khiển ma trận
led với số lượng đường dây và mạch in giảm đáng kể
Theo phương pháp này tại mỗi thời điểm chỉ có một Led sáng Các Led phát sáng theo tần số đủ nhanh để mắt người cảm thấy Led sáng liên tục nhờ hiện tượng lưu ảnh trên võng mạc của mắt, nhưng chú ý làm sao cho các Led sáng rõ không có
cảm giác rung
Trang:12
Trang 6
Do Led được cấu dòng phát sáng trong thời gian ngắn nên để Led thấy rõ
biên độ dòng xung phải lớn hơn nhiều lần so với dòng DC trung bình qua Led Vì vậy các ma trận Led phải được bảo vệ thích hợp tránh hư hỏng
Phương pháp MULTIPLEX được dùng trong phương pháp truyền Data nối tiếp hay song song được chia làm hai loại: quét hàng hay quét cột trên bảng Led
2 Phương pháp quét theo hàng
Dữ liệu thể hiện nội dung của một hàng sẽ được nạp vào trên tất cả các cột trong hàng trước khi điều khiển hàng đó bật sáng Như vậy, để điều kiển một bảng Led có m hàng* n cột thì cần có:
Một hay nhiều thanh ghi dịch có n bit để điều khiển các cột của bảng đèn Thanh ghi này có nhiệm vụ ghi lại quá trình tối, sáng của từng cột trong từng hàng tương ứng với nội dung cần thể hiện
Một bộ giải mã để điều khiển chọn hàng bật sáng
Để đảm bảo an toàn cho mạch điểu khiển, giữa bộ giải mã và tầng công
suất cũng như giữa thanh ghi và bảng đèn cần có thêm một bộ đệm Ở chế độ xung
ta có thể tăng dòng lên 1 — 5 lần để tăng cường độ sáng của điểm sáng
———————=—=ZaAaAỚ(_Ớ_ÐỀGGEEợAaqaẽaBaBaBaaynnnnnnnnnnnnnnnnnnnnnnnng
Trang:13
Trang 7
SƠ ĐỒ KHOI CUA PHUONG PHAP QUET THEO HÀNG
KHOI DIEU KHIEN COT KHOI KHOI
GIAO DIEU TIEP KHIEN
>
CHOT DU
LIEU COT
MACH GHI DICH NOI
Hình III.1: Sơ đỗ khối phương pháp quét hàng:
Cách quét cụ thể đối với một bảng LED gồm 8 hàng * 64 cột như sau:
Khi kích dòng nhận từ mạch vi điểu khiển lên từng hàng từ hàng 1 thì một
điểm trên hàng đó sẽ được bật sáng đồng thời thanh ghi dịch điểu khiển cột sẽ điều
khiển một điểm tương ứng trên hàng đó sáng Trong mỗi lần quét trên một hàng
như vậy thì có tối đa 64 cột sáng tương ứng với 64 điểm trên một hàng và sáng thấp nhất là một điểm trên một hàng
Một điểm trong một hàng sáng hay tối phụ thuộc vào dữ liệu ta khai báo tức
định nghĩa dữ liệu Tương tự ta cho cách quét một hàng ta sẽ quét lần lượt sáng cho
16 hàng trên một bảng Led
ẳẮẳằồ5ŠồŠồŠồ5ŠồŠồ®ồồồồỒồỀ‹:‹5ẳẳồồ ———GGGEagatễtễễnnnnnnnnznan
Trang:14
Trang 8
Việc chọn hàng nào sáng là do bộ giải mã điều khiển xuất ở ngõ ra từ YO đến Y15 tương ứng xuất từ hàng 1 đến hàng 8 Hàng nào sáng thì tương ứng với ngõ
ra Y của hàng đó tích cực mức l1
Về màu sắc thể hiện ví dụ khi muốn thể hiện Led màu đỏ hay màu xanh trên một điểm nào đó thì ta sẽ kích dòng trên hàng đó đồng thời thanh ghi dịch sẽ điều khiển chân của cột tương ứng với màu đó sáng
3 Phương pháp quét theo cột
Phương pháp này thì dữ liệu nội dung của một cột sẽ được nạp trên tất cả các hàng Bộ giải mã để điều khiển chọn cột bật sáng
Tín hiệu từ máy tính qua khối giao tiếp đến khối điều khiển Khối điều khiển đưa dữ liệu đến khối giải mã cột, tiến hành giải mã dữ liệu, đưa đến khối khuếch đại cột lựa chọn dữ liệu sẽ xuất trên cột nào của bãng Led Mỗi lần xuất ra bảng Led chỉ được một cột, nhưng có thể xuất dữ liệu ra trên nhiều hàng Sau khi xuất dữ liệu ra trên cột bảng Led thì khối điều khiển sẽ tiến hành đưa dữ liệu đến khối KD hang và bắt đầu lựa chọn xem sẽ xuất dữ liệu ra là màu xanh hay là mau
đỏ Nếu là màu xanh thì dữ liệu sẽ đưa đến khối KÐ xanh và xuất ra bảng Led Nếu là màu đỏ thì đữ liệu được đưa đến khối KD hang đỏ Mỗi lần dữ liệu xuất ra hàng là có thể nhiều hàng Mỗi một cột được đưa ra bảng Led ứng với nhiều hàng trên cột đó Ta cần tốn nhiều lần cho việc mở hàng
Trang 9CHƯƠNG I MACH QUANGBÁO GIAO TIẾP VỚI MÁY TÍNH
THIẾT BỊ ĐIỀU KHIỂN (MÁY VI TÍNH)
Trang 10CHƯƠNG II MẠCH QUANG BÁO GIAO TIẾP VỚI MÁY TÍNH
CHƯƠNG II:VI ĐIỀU KHIỂN
1 Giới thiệu cấu trúc vỉ xử lý họ MSC-51:
> Đặc điểm và chức năng hoạt động của các IC ho MSC-51 hoan toan tương tự nhau Họ IC vi điều khiển 89C51 do hãng INTEL sản xuất có một số đặc
_ điểm chung như sau:
e 4KB eprom bén trong
128 byte ram nội
e 4 port xuadt_nhap 8 bit
e_ Giao tiếp nối tiếp
Trang 11
P0.0 + PO.7 P2.0 + P2.7
Vee T KH mm nem 211224 “ma K 11111117 ¬ eres :
Trang 12
18 ÈxTAL2 P2.o/As LÊ:
| P141 P3.1/TXD -†a P12 P3.2/INTO [45 A+ P13 P3.3/INT1 [3
2 Chức năng của các chân:
> _ IC 89C51 có tất cả 40 chân, trong đó có 24 chân có tác dụng kép(nghĩa
là một chân có hai chức năng, mỗi chân có thể họat động như những đường xuất nhập, đường điều khiển hoặc là thành phần của các bus dữ liệu và bus địa chỉ
> IC 89C51 gồm 4 port, có một số chức năng và đặc điểm như sau:
2.1 Port 0:
> Port 0 1a port xudt_nhap 8 bit cực điện hở Khi làm nhiệm vụ là port xuất, mỗi chân của port có thể hút dòng của 8 ngõ vào TTL Khi các mức lôgïc 1 được ghi vào chân port 0 các chân này có thể sử dụng làm các ngõ vào có tổng trở
cao
> _ Port0 cũng được dùng làm bus địa chỉ byte thấp và làm bus dữ liệu đa
hợp trong khi truy xuất bộ nhớ dữ liệu ngoài và bộ nhớ chương trình ngoài Trong
chế độ đa hợp này port 0 có các điện trở kéo lên ở bên trong
> Port O cũng nhận cdc byte mã trong khi lập trình cho Flash và xuất các
byte mã trong khi kiểm tra chương trình Các điện trở kéo lên ở bên ngoài cần đến khi kiểm tra chương trình
nee
Trang: 19
Trang 13
ừttẳẮ.ẳẮ _ỪỪ———Ằ—=ZAỚïỚïY-aaagnnẵẳng
2.2 Port 1:
> Port 1 14 port xuat_nhap hai chiều có điện trở kéo lên bên trong Các bộ
đệm của port này có thể hút và cấp dòng cho 4 ngõ vao TTL
> Port 1 ciing là byte dia chỉ thấp trong thời gian lập trình cho Flash và kiểm
tra chương trình
2.3 Port 2:
> Port 2 là port xuất_nhập có tác dụng kép, có điện trở kéo lên ở bên trong
Các bộ đệm của port 2 có thể hút và cấp dòng cho 4 ngõ vào TTL
> Port 2 là byte cao của bus địa chỉ trong thời gian tìm và nạp lệnh từ bộ nhớ chương trình ngoài và thời gian truy xuất bộ nhớ dữ liệu ngoài
> Port 2 cũng nhận các bit địa chỉ cao và vài tín hiệu điều khiển trong thời
gian lập trình cho Flash và kiển tra chương trình
dưới đây:
P3.6 WR Tín hiệu ghi dữ liệu lên bộ nhớ ngoài P3.7 RD Tín hiệu đọc bộ nhớ dữ liệu ngoài
> Port 3 cũng nhận các bit dia chi cao va vài tín hiệu điều khiển trong thời
gian lập trình cho Flash và kiểm tra chương trình
ef
Trang: 20
Trang 14CHUONG II MACH QUANG BAO GIAO TIẾP VỚI MAY TINH
2.5 Các ngõ tín hiệu điều khiển:
2.5.1 Ngõ tín hiệu PSEN(program store enable):
> PSEN là ngõ tín hiệu ra có tác dụng cho phép đọc bộ nhớ chương trình mở
rộng, thường được nối đến chân OE(output enable) của Eprom cho phép đọc các
byte mã lệnh
> PSEN ở mức thấp trong thời gian 89C51 lấy lệnh
> Các mã lệnh của chương trình được đọc từ eprom qua bus dữ liệu và được
chốt vào thanh ghi lệnh bên trong 89C51 để giải mã lệnh Khi 89C51 thi hành chương trình trong Rom nội, PSEN sẽ ở mức lôgic 1
2.5.2 Ngo tin hiéu diéu khién ALE(Address Latch Enable
> Khi 89C51 truy xuất bộ nhớ bên ngoài, port 0 có chức năng là bus địa chỉ
và bus dữ liệu, do đó cần phải tách thành hai đường riêng biệt Tín hiệu ALE
2.5.3 Ngõ tín hiệu EA(External Access)
> Tin hiéu vao EA có thể ở mức lôgic 1 hoặc mức lôgic 0 Nếu ở mức lôgic 1 thì 89C51 thi hành chương trình từ Rom nội trong khỏang địa chỉ thấp 4KB Nếu ở
mức lôgic 0 thì 89C51 sẽ thi hành chương trình từ bộ nhớ mở rộng Chân EA được lấy làm chân cấp nguồn 12V khi lập trình cho Eprom trong 89C51
> Nếu bit khóa 1 được lập trình thì EA sẽ được chốt bên trong khi reset
Trang 15CHUONG II MACH QUANG BAO GIAO TIẾP VOI MAY TINH
FFH | On-Chip FFFFH CODE FFFFH CODE
Enable via Enable via
thanh ghi có chức năng đặc biệt
1.3 IC 89C51 có bộ nhớ theo cấu trúc Havard:
> _ Tức là có những vùng nhớ riêng biệt cho chương trình và dữ liệu Chương
trình và dữ liệu có thể chứa bên trong 89C51 nhưng 89C51 vẫn có thể kết nối với
64K byte bộ nhớ chương trình và 64K byte bộ nhớ dữ liệu ngoài
1.3.1 Có hai đặc tính cần chú ý là:
s* Các thanh ghi và các port xuất_ nhập đã được định vị trong bộ nhớ và có thể truy xuất trực tiếp giống như các địa chỉ bộ nhớ khác
s* Ngăn xếp bên trong Ram nội nhỏ hơn ngăn xếp ở trong Ram ngoại
1.3.2 Ram bên trong 89C51 được phan chia nhu sau:
> Ram da dung:
+ Gồm có 80 byte, chiếm địa chỉ từ 30H đến 7FH
Trang: 22
Trang 16
+ Moi dia chi trong ving Ram da dụng đều có thể truy xuất tự do dùng kiểu định vị địa chỉ trực tiếp hoặc gián tiếp
> Ramcé thé truy xuat ting bit:
+ IC 89C51 chita 210 bit được địa chỉ hóa, trong đó có 128 bịt tạo thanh 16
byte nim từ vị trí 20H đến 2FH, các bit còn lại tạo thành các thanh ghi có chức
năng đặc biệt
+ Các bit được SET, CLR, AND, OR, với một lệnh đơn Ngoài ra các port
cũng có thể truy xuất từng bit
> Cac bank thanh ghi:
+ 32 byte thấp của Ram nội được dành cho các bank thanh ghi Bộ lệnh 89C51
hổ trợ 8 thanh ghi có tên là RO đến R7 và theo mặt định sau khi reset hệ thống, các thanh ghi này có các địa chỉ từ 00H đến 07H
+ _ Các lệnh dùng các thanh ghi R0 đến R7 sẽ ngắn hơn và nhanh hơn so với các lệnh có chức năng tương ứng dùng kiểu định địa chỉ trực tiếp Các đữ liệu được dùng thường xuyên nên dùng trong các thanh ghi này
+ Do có 4 bank thanh ghi nên tại một thời điểm chỉ có một bank thanh ghi được truy xuất bởi các bank thanh ghi R0 đến R7 Để chuyển đổi việc truy xuất
các bank thanh ghi ta phải thay đổi các bit chọn bank trong thanh ghi trạng thái
2 Các thanh ghỉ có chức năng:
»> Các thanh ghi của 89C51 được truy xuất ngầm định bởi bộ lệnh
»> Các thanh ghi trong 89C51 được định dạng như một phần của Ram trên chip vì vậy mỗi thanh ghi có một địa chỉ (ngoại trừ thanh ghi bộ đếm chương trình
và thanh ghi lệnh, vì các thanh ghi này hiếm khi bị tác động trực tiếp) Cũng như các thanh ghi RO đến R7, 89C51 có 21 thanh ghi có chức năng đặc biệt
(SFR: Special Function Register) ở vùng trên của Ram nội từ địa chỉ 80H đến FFH
> Tat cd 128 địa chỉ từ 80H đến FFH không được định nghĩa, chỉ có 21 thanh ghi có chức năng đặc biệt được định nghĩa sẵn các địa chỉ
Trang: 23
Trang 17
2.1 Thanh ghỉ trạng thái chương trình (PSW:Program Status Word):
PSW.0 Port DOH Even parity flag
Bảng II.2.1: Bảng thanh ghi trạng thái
2.2 Chức năng từng bit của thanh ghỉ trạng thái chương trình ;
> Cờ cary CY: là cờ nhớ có tác dụng kép Thông thường nó được dùng cho
các lệnh toán học Nếu phép cộng có sự tràn hoặc phép trừ có mượn thì C=1, ngược
lại C=0
> _ Cờ cary phụ AC: cờ này được sử dụng khi cộng những giá trị BCD Cờ nhớ phụ được SET nếu kết quả 4 bit thấp nằm trong phạm vi điều khiển (từ OAH + 0FH), ngược lại cờ AC=0
> _ Cờ F0: là 1 bit cờ đa dụng dùng cho một số ứng dụng của người lập trình
> _ Những bit chọn bank thanh ghi truy xuất RSO và RSI:
> _ Các bit này quyết định dãy thanh ghi tích cực Chúng được xóa sau khi
reset hệ thống và được thay đổi bởi phần mềm khi cần thiết
Tùy theo giá tri cia RSO va RS1 ma bank tích cực tương ứng là Bank 0, Bank 1, Bank 2 hoặc là Bank 3
Trang: 24
Trang 18
Bảng IL2.2: Bảng chức năng từng bit thanh ghi trạng thai
>_ Cờ tràn OV: cờ tràn được SET sau một hoạt động cộng hoặc trừ nếu có
sự tràn toán học Khi các số có dấu được cộng hoặc trừ với nhau, phần mềm có thể kiểm tra bit này để xác định xem kết quả có nằm trong tầm xác định hay không Khi các số không có dấu được cộng, bit OV được bỏ qua Các kết quả lớn hơn 127 hoặc nhỏ hơn -128 thi bit OV=1
> Bit parity: bit nay dudc tu déng SET hay CLR 6 mi chu ki may dé lap Parity chấn với thanh ghi A sự đếm các bít 1 trong thi A cộng với bit parity luén
> _ Thanh ghi B có thể được dùng như một thanh ghi đệm trung gian đa mục đích Nó là những bit định vị thông qua những địa chỉ từ FOH + F7H
2.4 Con trổ ngăn xếp SP (stack pointer) :
> Là một thanh ghi 8 bit ở địa chỉ 81H nó chứa địa chỉ của byte dữ liệu hiện hành trên đỉnh ngăn xếp Các lệnh trên ngăn xếp bao gồm các lệnh cất dữ liệu vào ngăn xếp sẽ làm giảm SP Khi reset 89C51, SP sẽ mang giá trị mặt định là 07H.
Trang 192.6 Các thanh ghi port :
> 89C51 c6 4 port nằm ở địa chỉ 80H, 90H, A0H và B0H Tất cả các port này đều có thể truy xuất từng bit nên rất thuận tiện trong khả năng giao tiếp
2.7 Các thanh ghi Timer :
> IC 89C51 có chứa 2 bộ định thời đếm 16 bit, được dùng cho việc định
thời và đếm các su kién Timer 0 6 dia chi 8AH (TLO: byte thấp) và 8CH (THO:
byte cao) Timer 1 6 dia chi 8BH (TL1: byte thấp) va 8DH (THI: byte cao)
»> _ Việc khởi động timer được SET bởi thanh ghi TMOD ở địa chỉ 89H và thanh ghi điều khiển TCON ở địa chỉ 88H Chỉ có thanh ghi TCON được địa chỉ hóa
từng bịt
2.8 Thanh ghỉ port nối tiếp :
»> _ 89C51 chứa một port nối tiếp cho việc trao đổi thông tin với các thiết bị nối tiếp như máy tính, modem hoặc giao tiếp với IC khác Một thanh ghi đệm dữ liệu nối tiếp (SBUF) ở địa chỉ 99H sẽ giữ cả hai dữ liệu truyền và đữ liệu nhập Khi truyền, dữ liệu được ghi lên SBUE; khi nhận đữ liệu thì sẽ đọc từ SBUF Các mode
chuyển dữ liệu được lập trình qua thanh ghi điều khiển port nối tiếp (SCON) được
dia chỉ hóa từng bít ở địa chi 98H
2.9 Thanh ghi ngắt :
> 89C51 có 5 nguồn ngắt, 2 mức ưu tiên Các ngắt bị cấm sau khi reset hệ thống và sẽ được cho phép trở lại nếu thanh ghi ngắt IE (ở địa chỉ A8H) bị tác động Thanh ghi này được địa chỉ hóa từng bit
2.10 Thanh ghi điều khiển nguồn PCON:
> Thanh ghi PCON không có định vị bit, nằm 6 dia chi 87H
rang: 26
Trang 20CHUONG II MACH QUANG BAO GIAO TIẾP VỚI MÁY TÍNH
7 | SMOD | Bit gấp đôi tốc độ baud, nếu được set thì tốc độ baud sẽ tăng
gấp đôi trong các mode 1,2 và 3 của port nối tiếp
PD Giảm công suất, được set để kích hoạt Mode giảm công
suất, chỉ thoá khi reset
0 IDL Mode chờ, set để kích hoạt mode chờ, chỉ thoát khi có ngắt
hoặc reset hệ thống
> _ Khi dùng bộ nhớ ngoài, port 0 không còn chức năng xuất_nhập nữa, nó
được kết hợp giữa bus c (A0+A7) và bus dữ liệu (D0+D7) với tín hiệu ALE để chốt byte của địa chỉ khi bắt đầu mỗi chu kì bộ nhớ Port 0 được cho là byte cao của bus địa chỉ
Truy xuất bộ nhớ mã ngoài:
> Bộ nhớ chương trình bên ngoài là bộ nhớ Rom được cho phép của tín hiệu PSEN Sự kết nối phần cứng của bộ nhớ Eprom như sau:
Trang 21bộ nhớ chương trình Nếu lệnh đang hiện hành là lệnh 1 byte thi CPU chi doc
Opcode, còn byte thứ 2 bỏ đi
Truy xuất bộ nhớ dữ liệu ngoài:
> _ Bộ nhớ dữ liệu ngoài là một bộ nhớ Ram được đọc hoặc ghi khi được cho phép của tín hiệu RD và WR Hai tín hiệu này nằm ở chân P3.7 (RD) và P3.6 (WR) Lệnh MOVX được dùng để truy xuất bộ nhớ dữ liệu ngoài và dùng một bộ
đệm dữ liệu 16 bịt (DPTR)
> Các Ram có thể giao tiếp với 89C51 tương tự cách thức như Eprom, ngoại trừ chân RD (của 89C51 nối với chân OE của Ram) và chân WR (của 89C51 nối với chân WR của Ram) Sự kết nối các bus địa chỉ và địa chỉ tương tự như cách
> Cụ thể, IC giải mã 74HC138 được dùng với những ngõ ra của nó được
nối với những ngõ vào là CS (chip select) trên những IC nhớ Eprom, Ram, Hình sau đây cho phép kết nối nhiều Eprom và Ram
Trang: 28
Trang 223.2 Sự đè lên nhau của các vùng nhớ dữ liệu ngoài:
> Vì bộ nhớ chương trình là Rom nên nảy sinh một vấn đề bất tiện khi phát triển phần mềm cho vi điều khiển Một nhược điểm chung của 89C51 là các vùng nhớ dữ liệu ngoài nằm đè lên nhau, vì tín hiệu PSEN được dùng để đọc bộ nhớ mã
ngoài và tín hiệu RD được dùng để đọc bộ nhớ đữ liệu,nên một bộ nhớ Ram có thể chứa cả chương trình và dữ liệu bằng cách nối đường OE của Ram đến ngõ ra một cổng AND có hai ngõ vào PSEN và RD
> _ Sơ đồ mạch như hình sau cho phép bộ nhớ Ram có hai chức năng vừa là
bộ nhớ chương trình vừa là bộ nhớ dữ liệu:
Trang 23hình II.3.3: Sơ đồ chức năng của Ram
>_ Vậy một chương trình có thể được tải vào Ram bằng cách xem nó như bộ
nhớ đữ liệu và thi hành chương trình bằng cách xem nó như bộ nhớ chương trình
4 Hoạt động reset:
> IC 89C51 có ngõ vào reset (RST) tích cực ở mức cao trong khoảng thời gian 2 chu kì máy, sau đó xuống mức thấp để 89C51 bắt đầu làm việc RST có thể kích bằng tay bằng một phím thường hở, sơ đổ mạch reset như sau:
> _ Trạng thái của tất cả các thanh ghi trong 89C51 sau khi reset hệ thống được tóm tắt như sau:
Trang 24
Bảng II.3.2: Mô tả các thanh ghi
> Thanh ghi quan trọng nhất là thanh ghi bộ đếm chương trình PC được reset tại địa chỉ 0000H Khi ngõ vào RST xuống mức thấp, chương trình luôn bắt đầu tại địa chỉ 0000H của bộ nhớ chương trình Nội dung của Ram trên IC 8§9C51
không bị thay đổi bởi tác động của ngõ vào reset
5 Hoạt động của timer bên trong 89C51:
5,1 Giới thiệu:
> Bộ định thời của Timer là một chuỗi các flip_flop được chia làm hai phần, nó nhận nguồn xung clock của bộ dao động bên trong 89C51 hoặc nhận tín hiệu xung từ chân TO hoặc TÌ
> Timer có n tầng thì tần số ngõ vào được chia cho 2n Ngõ ra của tầng cuối cùng là nơi báo trần của Timer và nó được kiểm tra bằng phần mềm hoặc sinh
ra ngắt
5.2 Các thanh ghi điều khiển Timer:
5.2.1 Thanh ghi điều khiển chế độ Timer (TMOD: timer mode register):
> Thanh ghi mode timer gdm 2 nhóm, mỗi nhóm có 4 bit: 4 bit thấp đặt mode hoạt động cho Timer 0 và 4 bit cao đặt mode hoạt động cho Timer 1; 8 bít
của thanh ghi TMOD được tóm tắt như sau:
rang: 31
Trang 25
7 |GATE | 1 Khi GATE = 1, Timer 1 chi lam viéc khi INT 1 = 1
C/T = 1: cho phép đếm sự kiện
C/T =0: cho phép ghi giờ đều đặn
3 | GATE | 0 Khi GATE = 1, Timer 0 chi lam viéc khi INT 0= 1
Bảng II.3.3: Mô tả thanh ghi chế độ Timer
Hai bit MO và MI của thanh ghi TMOD để chọn mode hoạt động cho Timer 0
hoặc Timer 1, được tóm tắt như sau:
1 0 2 Mode tự động nạp lại 8 bit
Timer 0: TLO 1a Timer 8 bit dudc diéu khién bdi cdc bit của Timer 0 Tương tự, THO điều khiển bởi các bit Timer 1
Timer 1: không sử dụng
Bang II.3.2: Thanh ghi Tmod
> _ Thanh ghi TMOD không có khả năng định vị bit, nó thường được LOAD một lần bởi phần mém 6 dau chương trình để khởi động mode Timer Sau đó sự định thời có thể dừng lại, được khởi động lại bởi sự truy xuất bởi các thanh ghi chức năng đặc biệt của Timer khác
lrang: 32
Trang 26
5.2.2 Thanh ghi điều khién Timer (TCON: timer control register):
> Bao gồm các bit trạng thái và bit điều khiển bởi Timer 0 va Timer 1 Thanh ghi TCON có bit định vị Hoạt động của từng bit được thể hiện trong bảng
sau:
TCON.7 TF1 8FH Cờ tran cua Timer 0, được SET bởi
phần cứng khi có tràn, và được xóa
bởi phần mêm hoặc bởi phần cứng khi các vectơ xử lí đến thủ tục phục
vụ ngắt ISR
hoặc ngưng chạy Timer 1; được SET hoặc CLR bởi phần mềm
TCON.4 TRO SCH Bit cho phép chạy hoặc ngưng Timer
0
ngắt khi có cạnh xuống trên chân INTI IE1 được xóa bởi phần mềm hoặc phần cứng khi CPU định hướng
đến thủ tục ngắt ngoài
TCON.2 IT1 8AH Cờ kiểu ngắt ngoài thứ 1 Được SET
hoặc xóa bởi phần mềm
Bảng II.3.4 :Mô tả thanh ghỉ điều khiển Timer
5.2.3 Các nguồn xung nhịp cho Timer:
> C6 hai nguén xung nhịp có thể cung cấp cho các Timer là nguồn dao động trên chip và nguồn dao động từ chân T0 hoặc T1 ở bên ngoài đưa vào.
Trang 27Thach anh
hình H.3.4: Mô ta nguồn xung nhip cho Timer
5.2.4 Sự đỉnh giờ bên trong:
> Néu bit C/T = 0 thì xung nhịp cấp cho Timer được lấy từ dao động trên chip Một bộ chia 12 được thêm vào để giảm tần số của xung nhịp cấp cho Timer
Do đó các thanh ghi TLx và THx hoạt động ở tần số nhỏ hơn tần số trên chip 12 lan
> Sự tràn của Timer phụ thuộc vào giá trị khởi tạo được LOAD vào các
thanh ghi THx và TLx
5.2.5 Sự đếm các sự kiện:
> Nếu bit C/T = 1 thì bộ Timer được ghi giờ từ nguồn bên ngoài Con số của những sự kiện bên ngoài được xác định bằng cách đọc các thanh ghi Timer TLx
và THx, bởi vì giá trị 16 trong các thanh ghi này tăng lên sau mỗi sự kiện
> Nguồn xung clock bên ngoài được đưa đến chân P3.4 (T0)của Timer 0 hoặc chân P3.5 của Timer 1 (T1)
5.2.6 Sự khởi đông và truy xuất các thanh ghi Timer:
> Các Timer được khởi động 1 lần ở đầu chương trình để đặt mode hoạt động cho chúng Sau đó trong chương trình các Timer được khởi động và ngưng chạy bằng phần mềm, các thanh ghi Timer được đọc và cập nhật theo từng yêu cầu
cụ thể
Trang 28> Mode Timer 16 bit (mode 1):
+ Mode 1 là mode Timer 16 bit, tương tự nhu mode 0 ngoại trừ Timer này hoạt động như một Timer đầy đủ 16 bit Khi xung clock được cấp cho bộ đếm, giá trị của bộ đếm sẽ tăng dẫn, và sự tràn xuất hiện khi giá trị của bộ đếm chuyển từ giá trị FEFEH sang giá trị 0000H,lúc này cờ tràn TFx được SET, sau đó Timer đếm tiếp
+ _ Cờ tràn TFx nằm trong thanh ghi TCON, nó được đọc bởi phần mềm
Trang 29
+ Timer 0 được chia ra làm 2 Timer 8 bít, TLO và THO hoạt động như những
Timer riéng biét, su tran sé SET cdc bit TLO va TF1 tuong ting
+ Timer 1 không được sử dụng ở mode 3, nhưng có thể được khởi động bởi
việc ngắt nó vào trong một mode khác Nhược điểm của mode này là cờ tràn TF1
không bị ảnh hưởng bởi các sự tràn của Timer 1, vì TF1 được nối với TH0
+ Mode 3 cung cấp 1 Timer ngoài 8 bit là Timer thứ 3 của 89C51 khi vào Timer 0 ở mode 3, Timer có hoạt động hoặc tắt sự ngắt nó ra ngoài và vào trong mode của chính nó hoặc có thể được dùng bởi porrt nối tiếp như là một máy phát
tốc độ Baud, hoặc nó có thể dùng trong hướng nào đó mà không sử dụng Interrup
Timer clock TL1 (8 bit) | THI (8 bit) Coo
Timer clock THO (8 bit) ) TFl
> _ Port nối tiếp cho hoạt động song công và có đệm thu cho phép một kí tự
sẽ được thu và được giữ trong khi kí tự thứ hai được nhận Nếu CPU đọc kí tự thứ nhất trước khi kí tự thứ hai được thu đầy đủ thì dữ liệu sẽ không bị mất
> Hai thanh ghi chức năng đặc bệt cho phép phần mềm truy xuất đến port nối tiếp là: SBUF và SCON.Bộ đệm port nối tiếp (SBUF) ở địa chỉ 99H nhận dữ liệu để thu hoặc phát Thanh ghi điều khiển port nối tiếp (SCON) ở địa chỉ 98H là thanh ghi có địa chỉ bit chứa các bit trạng thái và các bit điều khiển Các bit điều khiển đặt chế độ họat động cho port nối tiếp, và các bit trạng thái báo cáo kết thúc việc phát hoặc thu ký tự Các bit trạng thái có thể được kiểm tra bằng phan mềm, hoặc có thể lập trình để tạo ngắt
Trang 30
—_———————————————————— ốẦờ on n¬5a¬a5ắaắẳäẳäẳäaắậamẫẫama=——ï5ï5.=.== _.~
2 Các thanh ghi và các chế độ họat động của port nối tiếp:
2.1.Thanh ghi điều khiển port nối tiếp:
> Chế độ họat động của port nối tiếp được đặt bằng cách ghi vào thanh ghi chế độ port nối tiếp (SCON) ở địa chỉ 98H Sau đây các bảng tĩm tắt thanh ghi SCON và các chế độ của port nối tiếp:
Bit 2 của chế độ port nối tiếp Cho phép truyền thơng đa xử
Bit 8 phát, bit thứ 9 được phát
Trang 31
2.2 Tóm tắt thanh ghi chế độ port nối tiếp:
SMO |SMI |Chế độ |Mô tả Tốc độ baud
0 0 0 Thanh ghi dịch Cố định (Fose/12)
Hình II.3.5: tắt thanh ghi chế độ port nối tiếp
2.3 Các chế độ port nối tiếp:
> Trước khi sử dụng port nối tiếp, phải khởi động SCON cho đúng chế độ Khởi động port nối tiếp cho chế độ 1 (SM0/SMI = 0/1), cho phép bộ thu (REN=1)
và cờ ngắt phát(TP=1) để bộ phát sẵn sàng hoạt động
> Chế độ 0( Thanh ghi dịch đơn 8 bit):
Chế độ 0 được chọn bằng các thanh ghi các bit 0 vào SMI và SM2 của SCON, đưa port nối tiếp vào chế độ thanh ghi dịch 8 bit Dữ liệu nối tiếp vào và ra qua RXD và TXD xuất xung nhịp dịch, 8 bit được phát hoặc thu với bit đầu tiên là LSB Tốc độ baud cố định ở 1/12 tần số dao động trên chíp
> Việc phát đi được khởi động bằng bất cứ lệnh nào ghi dữ liệu vào SBUF
> _ Dữ liệu dịch ra ngoài trên đường RXD (P3.0) với các xung nhịp được gửi
ra đường TXD (P3.1) Mỗi bit phát đi hợp lệ (trên RXD) trong một chu kỳ máy, tín hiệu xung nhịp xuống thấp ở S3_P1 và trở về cao ở S6_P1
Cố định (Fose/12 hoặc
Bảng II.3.6: Chế độ PORT nối tiếp
Trang 32
Việc thu được khởi động khi cho phép bộ thu (REN) 1a 1 va bit ngắt thu (R]) là 0
>_ Quy tắt tổng quát là đặt REN khi bắt đầu chương trình để khởi động port nối tiếp, rồi xóa RI để bắt đầu nhận dữ liệu Khi RI bị xóa, các xung nhịp được đưa ra đường TXD, bắt đầu chu kỳ máy kế tiếp và dữ liệu theo xung nhịp ở đường RXD Lấy xung nhịp cho dữ liệu vào port nối tiếp xảy ra ở cạnh đường của TXD
JLTLILTLTLTLILILTLTLILTILTLI Cp0>—<pI>—<p4>—<D3>—<p4¿>—<pš>—< D6)
Giản đô thời gian phát nối tiếp ở chế độ 0
Chế độ 1 (UART 8 bit với tốc độ baud thay đổi được):
> _Ở chế độ I, port nối tiếp của 89C51 làm việc như một UART 8 bịt với tốc độ baud thay đổi được Một UART( bộ thu phát đồng bộ vạn năng) là một dụng
cụ thu phát đữ liệu nối tiếp với mỗi ký tự dữ liệu đi trước là bit start ở mức thấp và theo sau bit stop ở mức cao Đôi khi xen thêm bit kiểm tra chẵn lẻ giữa bịt dữ liệu
cuối cùng và bit stop Hoạt động chủ yếu của UART là chuyển đổi song song sang
nối tiếp với dữ liệu nhập
> Ở chế độ I, 10 bit được phát trên TXD hoặc thu trên RXD Những bit
đó là: 1 bit start (luôn luôn là 0), 8 bit dữ liệu (LSB đầu tiên) và 1 bit stop (luôn
luôn là 1) Với hoạt động thu, bit stop được đưa vào RB8 trong SCON Trong 89C51 chế độ baud được đặt bằng tốc độ báo tràn của Timerl
> Tao xung nhịp và đồng bộ hóa các thanh ghi dịch của port nối tiếp trong các chế độ 1, 2 và 3 được thiết lập bằng bộ đếm 4 bịt chia cho 16, ngõ ra là xung nhịp tốc độ baud Ngõ vào của bộ đếm này được chọn qua phần mềm
—Ỷ“Ỷ“ễỶr-zsẽơ‹.‹-cơ-‹iặẳễnc-‹-‹-‹ằẳằễẳễtợợ‹ơơợơợýẶẳằẳớéơơơơơờợớợgxszỶỸỶïỶnnzzzaanäẳờn 7 “mmmmaamnmmaaaaaraaaaammmmmmmam
Trang: 39
Trang 33Xung nhịp tốc độ baud Thanh ghi dịch port nối tiếp
hình II.3.6:Chế độ 1
UART 9 bit với tốc độ baud cố định (chế độ 2):
> Khi SMI = I và SM0 = 0, cổng nối tiếp làm việc ở chế độ 2, như một URAT 9 bit có tốc độ baud cố định, 11 bit sẽ được phát hoặc thu: 1 bit start, 8 bit dif
liệu, 1 bit dữ liệu thứ 9 có thể được lập trình và 1 bit stop Khi phát bit thứ 9 thì bất
cứ gì đã được đưa vào TB8 trong SCON (có thể là bit parity) Khi thu bit thứ 9, bit này sẽ nằm trong RB8 Tốc độ baud ở chế độ 2 là 1/32 hoặc 1/16 tần số dao động
trên
UART 9 bít với tốc độ baud thay đổi được (chế độ 3):
> _ Chế độ này giống như chế độ 2 ngoại trừ tốc độ baud có thể lập trình được và được cung cấp bởi Timer Thật ra, các chế độ 1, 2, 3 rất giống nhau Khác biệt ở tốc độ baud (cố định trong chế độ 2; thay đổi trong chế độ 1 và 3) và ở số bit
dữ liệu (8 bit trong chế độ 1, 9 trong chế độ 2 và 3)
3 Khởi động và truy xuất các thanh ghi cổng nối tiếp:
> Bit cho phép thu (Ren: Receiver Enable): bit nay nim trong thanh ghi SCON, được SET bởi phần mềm để cho phép thu các kí tự thông thường thực hiện việc này ở đầu chương trình khi khởi động cổng nối tiếp, Timer, Có thể thực hiện việc này theo hai cách:
SETB REN;
Hoac:
MOV SCON,#XXX1XXXXB; (X c6 thé 14 0 hodc 1 để đặt chế độ làm việc)
> Bit di liệu thứ 9: trong chế độ 2 hoặc 3, bit này được nạp vào trong TB8 bằng phần mềm Bit dữ liệu thứ 9 thu được đặt ở trong RB8 Phần mềm có thể cần hoặc không cần bit đữ liệu thứ 9, nó phụ thuộc vào đặc tính kỹ thuật của thiết
eee
Trang: 40
Trang 34> Thém 1 bit parity: thường sử dụng bit dữ liệu thứ 9 để thêm parity vào
ki tu Bit parity trong từ trạng thái chương trình (PSW) được đặt lên 1 hoặc bị xóa trong 1 chu kì máy, để thiết lập kiểm tra chẳn đối với 8 bit trong thanh ghi tích lũy
> Cac cd ngắt: hai cờ ngắt thu và phát (RI và TD trong SCON đóng vai trò quan trọng trong truyền thông nối tiếp dùng 89C51 Cả hai bit được đặt lên 1 bằng phần cứng, nhưng lại được xóa bằng phần mềm
4 Tốc độ baud của port nối tiếp:
> _ Trong chế độ 0 : nó luôn luôn là tần số dao động trên chip (tần số đã được chia cho 12) Thông thường thạch anh ấn định tần số dao động trên chip nhưng
Dao động >) + 64 Th Xung nhip
Pp +32 |_| smop=0: UP
Hình II.7:Nguồn tạo xung nhịp cho port nối
> _ Mặc nhiên sau khi reset hệ thống, tốc độ baud trong chế độ 2 là tần số dao động trên chip chia cho 64 Tốc độ baud cũng bị ảnh hưởng bởi 1 bit trong thanh ghi điểu khiển nguồn cung cấp (PCON), bit thứ 7 của thanh ghi PCON là bit SMOD Đặt bit SMOD lên 1 sẽ làm tốc độ baud trong chế độ 1, 2 và 3 tăng gấp đôi Trong
chế độ 2, tốc độ baud có thể tăng gấp đôi từ giá trị mặc nhiên là 1/64 (tần số dao
Trang 35Vì PCON không được địa chỉ hóa từng bit, nên muốn đặt bit SMOD lên I thì phải
thực hiện qua một số thanh ghi trung gian, cụ thể như sau:
s* MOV A,PCON; lấy giá trị hiện thời của PCON
“* SETB ACC.7; dat bit SMOD lén 1
s* MOV PCON,A; ghi giá trị ngược về cho PCON
Các tốc độ baud trong chế độ 1 và 3 được xác định bằng tốc độ tràn của Timer I, vì Timer hoạt động ở tần số tương đối cao, tràn Timer được chia cho 32 (16 nếu SMOD = I) trước khi cung cấp tốc độ xung nhịp cho port nối tiếp
VI Tổ chức ngắt trong 89C51:
»> Vi điều khiển có 5 nguồn ngắt: 4 nguồn ngắt ngoài, 2 Timer ngắt và l ngắt port nối tiếp Tất cả các ngắt đều bị cấm sau khi reset hệ thống và cho phép bởi phần mềm
Cho phép và không cho phép ngắt:
> Mỗi nguồn ngắt được cho phép hoặc không cho phép thông qua thanh ghi chức năng đặc biệt là thanh ghi IE (interrupt enable) ở tại địa chỉ 08AH Thanh ghi này được tóm tắt như sau:
Bít | Kíhiệu Địa chỉ Mô tả (1: cho phép, 0: không cho phép)
Bảng IHI.4.1: Tổ chức ngắt trong 89c51
a
Trang: 42
Trang 36
1 Vectơ ngắt:
> _ Khi ngắt được chấp nhận giá trị được đưa vào PC (program counter) gọi
là vectơ ngắt (interrupt vectơ)
Bảng IL4.2:Mô tả các ngắt
2 Ngắt port nối tiếp:
> Chỉ xảy ra khi cả hai cờ truyền (TD hoặc cờ ngắt (RD được đặt lên 1 Ngắt truyền xảy ra khi bit cuối cùng trong SBUFE truyền xong, tức là lúc này thanh ghi SBUF rỗng Ngắt nhận xảy ra khi SBUF đã hoàn thành việc nhận và đang đợi
để đọc, tức là lúc này thanh ghi SBUF đây Cả hai cờ ngắt này được đặt bởi phần cứng và xóa bởi phần mềm
VII Tém tắt tập lệnh của 89C51 :
> Các chương trình được cấu tạo từ nhiều lệnh, chúng được xây dựng lôgic, sự nối tiếp của các lệnh được nghĩ một cách hiệu quả và nhanh, kết quả của chương trình khả quan
> _ Tập lệnh của họ MSC_51 được sự kiểm tra của các mode dinh vi va các lệnh của chúng có các opcode 8 bit Điều này cung cấp khả năng 256 lệnh được thi hành và một lệnh không được định nghĩa Vài lệnh có 1 hoặc 2 byte dữ liệu hoặc địa chỉ thêm vào opcode Toàn bộ tập lệnh có 255 lệnh gồm 139 lệnh 1 byte,
92 lệnh 2 byte và 24 lệnh 3 byte
Trang 37
»> _ Các chế độ dinh vi dia chi (addressing mode): cdc mode dinh vi 1a mét
bộ phận thống nhất của tập lệnh Chúng cho phép định rõ nguồn hoặc nơi gởi tới của dữ liệu ở các đường khác nhau tùy thuộc vào trạng thái của người lập trình
89C51 có 8 mode định vị được dùng như sau:
Thanh ghi Trực tiếp Gián tiếp Tức thời Tương đối Tuyệt đối Dai
1 Kiéu dinh vi thanh ghi (register addressing):
> Có 4 dãy thanh ghi 32 byte đầu tiên của Ram dữ liệu trên chíp có địa
chỉ 00H + IFH, nhưng tại một thời điểm chỉ có một dãy hoạt động các bit PSW.3,
PSW.4 của từ trạng thái chương trình sẽ quyết định dãy nào hoạt động
Các lệnh để định vị thanh ghi được ghi mật mã bằng cách dùng bit trọng số thấp nhất của opcode lệnh để chỉ một thanh ghi trong vùng địa chỉ theo lôgic này Như vậy một mã chức năng và địa chỉ có thể được kết hợp để tạo thành một lệnh ngắn
1 byte
> Mội vài lệnh dùng cụ ue cno I thanh ghi nào đó như thanh ghi A, DPTR, mã opcode tự nó cho biết thanh ghi và các bit địa chỉ không cần biết đến
2 Kiểu định địa chỉ trực tiếp (direct addressing):
> _ Kiểu định vị địa chỉ trực tiếp có thể truy xuất bất kì giá trị nào trên chip
hoặc thanh ghi phần cứng trên chip Một byte địa chỉ trực tiếp được đưa vào opcode
để định rõ vị trí được dùng.
Trang 38FFH), và 128 vị trí nhớ thấp của Ra trên chip được chọn
> _ Tất cả các port LO, các thanh ghi chức năng đặc biệt, thanh ghi điều khiển hoặc thanh ghi trạng thái bao giờ cũng được quy định các địa chỉ trong khoảng 128 + 255 (80H + FEH) Khi byte địa chỉ trực tiếp nằm trong giới han nay (ứng với bit 7 = 1) thi thanh ghi chức năng đặc biệt được truy xuất Ví dụ: port 0 và
port 1 được quy định địa chỉ trực tiếp là 80H và 90H; P0, P1 là dạng thức rút gọn
thuật nhớ của port, sự biến thiên cho phép thay thế và hiểu dạng thức rút gọn thuật
nhớ của chúng Chẳng hạn lệnh : MOV PI,A ; sự biên dịch sẽ xác định địa chỉ trực tiếp của port 1 là 90H
3 Kiểu định địa chỉ gián tiếp:
> _ Kiểu định địa chỉ gián tiếp được tượng trưng bởi kí hiệu @ được đặt
trước RO, R1 hay DPTR RO và R1 hoạt động như một thanh ghi con trỏ mà nội dung cho biết một địa chỉ trong Ram nội ở nơi mà dữ liệu được ghi hoặc được đọc
»> _ Bit trọng số nhỏ nhất của opcode lệnh sẽ xác định RO hay R1 được dùng con trỏ pointer
4 Kiểu đỉnh địa chỉ tức thời (Immediate addressin
> Được tượng trưng bởi kí hiệu # đứng trước một hằng số, một biến kí hiệu hoặc một biểu thức số học được sử dụng bởi các hằng, các kí hiệu, các hoạt động
do người điều khiển
> Chương trình biên dịch tính toán giá trị và thay thế dữ liệu tức thời Byte
lệnh thêm vô chứa trị số dữ liệu tức thời như sau:
5 Kiểu định địa chỉ tương đối:
> _ Chỉ sử dụng đối với những lệnh nhảy nào đó Một địa chỉ tương đối (hoặc offset) là một giá trị 8 bit mà nó được cộng vào bộ đếm chương trình PC để
tạo thành địa chỉ một lệnh tiếp theo được thực thi Phạm vi của sự nhảy nằm trong khoảng -128 + 127 Offset tương đối được gắn vào lệnh như một byte thêm vào và được mô tả như sau:
> Những nơi nhảy đến thường được chỉ rõ bởi các nhãn và chương trình
biên dịch xác định offset relative cho phù hợp
Trang: 45
Trang 396 Kiểu định địa chỉ tuyệt đối:
> Được dùng đối với các lệnh ACALL và AJMP Các lệnh 2 byte cho
phép phân chia trong trang 2K đang lưu hành của mã bộ nhớ mã của việc cung cấp
11 bit thấp để xác định địa chỉ trong trang 2K (A0 + A10 : A10 + A8 trong opcode
và A7 + A0 trong byte) và 5 bit cao để chọn trang 2K (5 bit cao đang lưu hành trong
bộ đếm chương trình là 5 bit opcode)
> Sự định vị tuyệt đối đem lại thuận lợi cho các lệnh ngắn (2 byte) nhưng bất lợi trong việc giới hạn phạm vi nơi gởi đến và cung cấp mã có vị trí độc lập
7 Kiểu định địa chỉ dài:
> Được dùng đối với các lệnh LCALL và LIMP Cá lệnh 3 byte nay bao
gồm một địa chỉ nơi gởi tới 16 bit đầy đủ là 2 byte và 3 byte của lệnh
> Ưu điểm của việc định vị địa chỉ dài là vùng nhớ 64K có thé được dùng hết, nhưng mỗi lệnh tốn 3 byte và vị trí lệ thuộc Sự phụ thuộc vào vị trí sẽ bất lợi bởi chương trình không thể thực thi tại địa chỉ khác
8 Kiểu đỉnh địa chỉ phụ lục (định địa chỉ chỉ số):
>_ Kiểu định vị này sử đụng một thanh ghi nền (hoặc bộ đếm chương trình hoặc
con trỏ dữ liệu) và một offset ( thanh chứa A) tạo thành dạng địa chỉ hiệu dụng cho
hình II.7: Mô tả kiểu định vi
> Trong nhiều ứng dụng, các bảng nhảy hoặc các bảng tìm kiếm được tạo ra
dễ dàng bằng cách sử dụng kiểu định địa chỉ chỉ số
Trang 40sử dụng khác nhau Khả năng có thể giao tiếp điều khiển các thiết bị ngoại vi được người sử dụng rất quan tâm Nhưng một máy tính khi được xuất xưởng thì bản thân
nó chưa phải là một hệ thống hoàn chỉnh Tùy theo yêu cầu của người sử dụng, mà
có thể nâng cấp, mở rộng cấu hình bằng cách ghép nối thêm các card mở rộng hoặc
các thiết bị ngoại vi như modum, máy ¡n, Các nhà sản xuất đã để sẵn các rãnh
cắm mở rộng trên bản mạch chính, các cổng ghép nối song song và các cổng nối
tiếp Đây chính là những nơi mà người sử dụng có thể tác động vào để có thể thực
hiện việc ghép Dựa vào các đường đã được thiết kế sẵn bởi các nhà sản xuất thì có
3 cách thực hiện ghép nối máy tính:
> Ghép nối qua cổng máy in hay còn gọi là cổng song song
> Ghép nối máy tính qua rãnh cắm mở rộng trên bản mạch chính
> Ghép nối qua cổng COM (RS 232) hay còn gọi là cổng nối tiếp
Mỗi một cách ghép nối đều có những ưu nhược điểm riêng Tùy theo từng mục đích cụ mà có thể lựa chọn phương án sao cho phù hợp nhất Sau đây là một
số vấn để cơ bản về việc ghép nối qua qua các rãnh cắm mở rộng và các cổng:
L GIAO TIẾP MÁY TÍNH QUA RÃNH CẮM MO RONG
>_ Sự ra đời của rãnh cắm mở rộng gắn liền với sự phát triển của kỹ thuật máy tính Cho dến nay đã có nhiều loại rãnh cắm đã ra đời như: bus PCI (32/64 bit), bus AGP (32/64 bit), mỗi một loại rãnh cắm có một mục đích cụ thể do chính nhà sản
xuất đưa ra, để cho người sử dụng có thể tác động vào nó
> Để có thể ghép nối máy tính qua rãnh cắm mở rộng, thì cần phải có một card mở rộng, sau đó là một phần mềm cài đặt để đăng ký card mở rộng vào trong
hệ thống máy tính Đối với các mục đích điều khiển chuyên dùng, thì người sử dụng cần phải tự thiết kế các card mở rộng cho chính mục đích của mình Muốn làm được
nt
Trang: 48