Bài giảng Lập trình ghép nối thiết bị ngoại vi

MỤC LỤC

Chƣơng 1: Các chuẩn ghép nối. . 5

1.1. Cổng song song . 5

1.1.1. Cấu trúc cổng . 5

1.1.2. Trao đổi cổng song song với đường dẫn tín hiệu . 6

1.1.3. Lập trình cổng song song . 8

1.2. Cổng nối tiếp . 8

1.2.1. Các đặc trưng điện áp . 8

1.2.2. Khôn mẫu khung truyền . 10

1.2.3. Các vấn đề truyền thông . 11

1.3. Bus nối tiếp đa năng . 12

1.3.1. Bus nối tiếp đa năng - Giới thiệu chung . 12

1.3.2. Đầu nối và cáp tín hiệu . 13

1.3.3. Truyền dữ liệu nối tiếp . 14

1.3.4. Phần cứng, phần mềm và kết nối hệ thống . 14

1.3.5. Chuẩn USB 2.0 . 15

1.4. Khe cắm mở rộng . 15

1.4.1. BUS ISA 16 bit . 15

1.4.2. BUS PCI . 17

1.4.4. Ghép nối qua khe cắm mở rộng . 18

Chƣơng 2. Bus Ghép nối đa năng . 20

2.1. Đặt vấn đề . 20

2.2. Tiêu chuẩn IEEE-488 truyền thông . 20

2.3. Cấu hình và hoạt động của Bus GPIB . 21

Chƣơng 3. Vòng đo điện áp . 23

3.1.Truyền dữ liệu bằng vòng dòng điện . 23

3.2. Vòng dòng điện 60mA . 23

3.3. Vòng dòng điện 20mA . 24

3.4. Vòng dòng điện 4 đến 20mA . 25

Chƣơng 4. Các mạch điều khiển với bộ biến đổi A/D . 26

4.1. Card biến đổi A/D 12 bit dùng ICL7107 . 26

4.2. Card biến đổi A/D 12 bit dùng ADC547 . 26

4.3. Card biến đổi ADA 9-16 bit . 27

Chƣơng 5. Tự động hóa với PCL S7-200 . 29

5.1. Bộ điều khiển khả trình PCL . 29

5.2. Soạn thảo chương trình với PCL . 30

Chƣơng 6. Họ vi điều khiển 8951 . 33

6.1. Cấu trúc phần cứng . 33

6.2. Tập lệnh . 3

pdf42 trang | Chuyên mục: Kiến Trúc Máy Tính | Chia sẻ: dkS00TYs | Lượt xem: 4060 | Lượt tải: 1download
Tóm tắt nội dung Bài giảng Lập trình ghép nối thiết bị ngoại vi, để xem tài liệu hoàn chỉnh bạn click vào nút "TẢI VỀ" ở trên
EC A : (A) (A) - 1 
 DEC direct : (direct) (direct) - 1 
- 36 - 
 DEC @Ri : ((Ri)) ((Ri)) - 1 
 DEC Rn : (Rn) (Rn) - 1 
 MULL AB : (A) LOW [(A) x (B)];có ảnh hưởng cờ OV 
 : (B) HIGH [(A) x (B)];cờ Cary được xóa. 
 DIV AB : (A) Integer Result of [(A)/(B)]; cờ OV 
 : (B) Remainder of [(A)/(B)]; cờ Carry xóa 
 DA A :Điều chỉnh thanh ghi A thành số BCD đúng trong phép cộng 
BCD (thường DA A đi kèm với ADD, ADDC) 
Nếu [(A3-A0)>9] và [(AC)=1] (A3A0) (A3A0) + 6. 
Nếu [(A7-A4)>9] và [(C)=1] (A7A4) (A7A4) + 6. 
 Lệnh logic. 
Tất cả các lệnh logic sử dụng thanh ghi A như là một trong những toán hạng thực thi 
một chu kỳ máy, ngoài A ra mất 2 chu kỳ máy. Những hoạt động logic có thể được thực hiện 
trên bất kỳ byte nào trong vị trí nhớ dữ liệu nội mà không qua thanh ghi A. 
Các hoạt động logic được tóm tắt như sau: 
 ANL 
 ANL A, Rn : (A) (A) AND (Rn). 
 ANL A, direct : (A) (A) AND (direct). 
 ANL A,@ Ri : (A) (A) AND ((Ri)). 
 ANL A, # data : (A) (A) AND (# data). 
 ANL direct, A : (direct) (direct) AND (A). 
 ANL direct, # data : (direct) (direct) AND # data. 
 ORL 
 ORL A, Rn : (A) (A) OR (Rn). 
 ORL A, direct : (A) (A) OR (direct). 
 ORL A,@ Ri : (A) (A) OR ((Ri)). 
 ORL A, # data : (A) (A) OR # data. 
 ORL direct, A : (direct) (direct) OR (A). 
 ORL direct, # data : (direct) (direct) OR # data. 
 XRL 
 XRL A, Rn : (A) (A) (Rn). 
 XRL A, direct : (A) (A) (direct). 
 XRL A,@ Ri : (A) (A) ((Ri)). 
 XRL A, # data : (A) (A) # data. 
 XRL direct, A : (direct) (direct) (A). 
 XRL direct, # data : (direct) (direct) # data. 
 CLR A : (A) 0 
 CLR C : (C) 0 
 CLR Bit : (Bit) 0 
 RL A : Quay vòng thanh ghi A qua trái 1 bit 
 (An + 1) (An); n = 06 
 (A0) (A7) 
 RLC A : Quay vòng thanh ghi A qua trái 1 bit có cờ Carry 
- 37 - 
 (An + 1) (An); n = 06 
 (C) (A7) 
 (A0) (C) 
 RR A : Quay vòng thanh ghi A qua phải 1 bit 
 (An + 1) (An); n = 06 
 (A0) (A7) 
 RRC A : Quay vòng thanh ghi A qua phải 1 bit có cờ Carry 
 (An + 1) (An); n = 06 
 (C) (A7) 
 (A0) (C) 
 SWAP A : Đổi chỗ 4 bit thấp và 4 bit cao của A cho nhau (A3A0)(A7A4). 
 Dịch chuyển dữ liệu. 
Các lệnh dịch chuyển dữ liệu trong những vùng nhớ nội thực thi 1 hoặc 2 chu kỳ máy. 
Mẫu lệnh MOV , cho phép di chuyển dữ liệu bất kỳ 2 vùng nhớ nào 
của RAM nội hoặc các vùng nhớ của các thanh ghi chức năng đặc biệt mà không thông qua 
thanh ghi A. 
Vùng Ngăn xếp của 8951 chỉ chứa 128 byte RAM nội, nếu con trỏ Ngăn xếp SP được 
tăng quá địa chỉ 7FH thì các byte được PUSH vào sẽ mất đi và các byte POP ra thì không biết 
rõ. 
Các lệnh dịch chuyển bộ nhớ nội và bộ nhớ ngoại dùng sự định vị gián tiếp. Địa chỉ 
gián tiếp có thể dùng địa chỉ 1 byte (@ Ri) hoặc địa chỉ 2 byte (@ DPTR). Tất cả các lệnh 
dịch chuyển hoạt động trên toàn bộ nhớ ngoài thực thi trong 2 chu kỳ máy và dùng thanh ghi 
A làm toán hạng DESTINATION. 
Việc đọc và ghi RAM ngoài (RD và WR) chỉ tích cực trong suốt quá trình thực thi của 
lệnh MOVX, còn bình thường RD và WR không tích cực (mức 1). 
Tất cả các lệnh dịch chuyển đều không ảnh hưởng đến cờ. Hoạt động của từng lệnh 
được tóm tắt như sau: 
 MOV A,Rn : (A) (Rn) 
 MOV A, direct : (A) (direct) 
 MOV A, @ Ri : (A) ((Ri)) 
 MOV A, # data : (A) # data 
 MOV Rn, A : (Rn) (A) 
 MOV Rn, direct : (Rn) (direct) 
 MOV Rn, # data : (Rn) # data 
 MOV direct, A : (direct) (A) 
 MOV direct, Rn : (direct) (Rn) 
 MOV direct, direct : (direct) (direct) 
 MOV direct, @ Ri : (direct) ((Ri)) 
 MOV direct, # data : (direct) data 
 MOV @ Ri, A : ((Ri)) (A) 
 MOV @ Ri, direct : ((Ri)) (direct) 
 MOV @ Ri, # data : ((Ri)) # data 
 MOV DPTR, # data16 : (DPTR) # data16 
 MOV A, @ A + DPTR : (A) (A) + (DPTR) 
- 38 - 
 MOV @ A + PC : (PC) (PC) + 1 
 (A) (A) + (PC) 
 MOVX A, @ Ri : (A) ((Ri)) 
 MOVX A, @ DPTR : (A) ((DPTR)) 
 MOVX @ Ri, A : ((Ri)) (A) 
 MOVX @ DPTR, A : ((DPTR)) (A) 
 PUSH direct : Cất dữ liệu vào Ngăn xếp 
 (SP) (SP) + 1 
 (SP) (Drirect) 
 POP direct : Lấy từ Ngăn xếp ra direct 
 (direct) ((SP)) 
 (SP) (SP) - 1 
 XCH A, Rn : Đổi chỗ nội dung của A với Rn 
 (A) (Rn) 
 XCH A, direct : (A) (direct) 
 XCH A, @ Ri : (A) ((Ri)) 
 XCHD A, @ Ri : Đổi chỗ 4 bit thấp của (A) với ((Ri)) 
 (A3A0) ((Ri3Ri0)) 
 Lý luận. 
8951 chứa một bộ xử lí luận lý đầy đủ cho các hoạt động bit đơn, đây là một điểm mạnh 
của họ vi điều khiển MSC-51 mà các họ vi điều khiển khác không có. 
RAM nội chứa 128 bit đơn vị và các vùng nhớ các thanh ghi chức năng đặc biệt cấp lên 
đến 128 đơn vị khác. Tất cả các đường Port là bit định vị, mỗi đường có thể được xử lí như 
Port đơn vị riêng biệt. Cách truy xuất các bit này không chỉ các lệnh rẽ nhánh không, mà là 
một danh mục đầy đủ các lệnh MOVE, SET, CLEAR, COMPLEMENT, OR, AND. 
Toàn bộ sự truy xuất của bit dùng sự định vị trực tiếp với những địa chỉ từ 00H - 7FH 
trong 128 vùng nhớ thấp và 80H - FFH ở các vùng thanh ghi chức năng đặc biệt. 
Bit Carry C trong thanh ghi PSW\ của từ trạng thái chương trình và được dùng như một 
sự tích lũy đơn của bộ xử lí luận lý. Bit Carry cũng là bit định vị và có địa chỉ trực tiếp vì nó 
nằm trong PSW. Hai lệnh CLR C và CLR CY đều có cùng tác dụng là xóa bit cờ Carry nhưng 
lệnh này mất 1 byte còn lệnh sau mất 2 byte. 
Hoạt động của các lệnh luận lý được tóm tắt như sau: 
 CLR C : Xóa cờ Carry xuống 0. Có ảnh hưởng cờ Carry. 
 CLR BIT : Xóa bit xuống 0. Không ảnh hưởng cờ Carry 
 SET C : Set cờ Carry lên 1. Có ảnh hưởng cờ Carry. 
 SET BIT : Set bit lên 1. Không ảnh hưởng cờ Carry. 
 CPL C : Đảo bit cờ Carry. Có ảnh hưởng cờ Carry. 
 CPL BIT : Đảo bit. Không ảnh hưởng cờ Carry. 
 ANL C, BIT : (C) (C) AND (BIT) : Có ảnh hưởng cờ Carry. 
 ANL C, /BIT : (C) (C) AND NOT (BIT):Không ảnh hưởng cờ Carry. 
 ORL C, BIT : (C) (C) OR (BIT) : Tác động cờ Carry. 
 ORL C, /BIT : (C) (C) OR NOT (BIT) : Tác động cờ Carry. 
- 39 - 
 MOV C, BIT : (C) (BIT) : Cờ Carry bị tác động. 
 MOV BIT, C : (BIT) (C) : Không ảnh hưởng cờ Carry. 
 Rẽ nhánh chương trình. 
Có nhiều lệnh để điều khiển lên chương trình bao gồm việc gọi hoặc trả lại từ chương 
trình con hoặc chia nhánh có điều kiện hay không có điều kiện. 
Tất cả các lệnh rẽ nhánh đều không ảnh hưởng đến cờ. Ta có thể định nhản cần nhảy tới 
mà không cần rõ địa chỉ, trình biên dịch sẽ đặt địa chỉ nơi cần nhảy tới vào đúng khẩu lệnh đã 
đưa ra. 
Sau đây là sự tóm tắt từng hoạt động của lệnh nhảy. 
 JC rel : Nhảy đến “rel” nếu cờ Carry C = 1. 
 JNC rel : Nhảy đến “rel” nếu cờ Carry C = 0. 
 JB bit, rel : Nhảy đến “rel” nếu (bit) = 1. 
 JNB bit, rel : Nhảy đến “rel” nếu (bit) = 0. 
 JBC bit, rel : Nhảy đến “rel” nếu bit = 1 và xóa bit. 
 ACALL addr11: Lệnh gọi tuyệt đối trong page 2K. 
 (PC) (PC) + 2 
 (SP) (SP) + 1 
 ((SP)) (PC7PC0) 
 (SP) (SP) + 1 
 ((SP)) (PC15PC8) 
 (PC10PC0) page Address. 
 LCALL addr16: Lệnh gọi dài chương trình con trong 64K. 
 (PC) (PC) + 3 
 (SP) (SP) + 1 
 ((SP)) (PC7PC0) 
 (SP) (SP) + 1 
 ((SP)) (PC15PC8) 
 (PC) Addr15Addr0. 
 RET : Kết thúc chương trình con trở về chương trình chính. 
 (PC15PC8) (SP) 
 (SP) (SP) - 1 
 (PC7PC0) ((SP)) 
 (SP) (SP) -1. 
 RETI : Kết thúc thủ tục phục vụ ngắt quay về chương trình chính hoạt 
động tương tự như RET. 
 AJMP Addr11 : Nhảy tuyệt đối không điều kiện trong 2K. 
 (PC) (PC) + 2 
 (PC10PC0) page Address. 
 LJMP Addr16 : Nhảy dài không điều kiện trong 64K 
 Hoạt động tương tự lệnh LCALL. 
 SJMP rel :Nhảy ngắn không điều kiện trong (-128127) byte 
 (PC) (PC) + 2 
 (PC) (PC) + byte 2 
- 40 - 
 JMP @ A + DPTR:Nhảy không điều kiện đến địa chỉ (A) + (DPTR) 
 (PC) (A) + (DPTR) 
 JZ rel : Nhảy đến A = 0. Thực hành lệnh kế nếu A 0. 
 (PC) (PC) + 2 
 (A) = 0 (PC) (PC) + byte 2 
 JNZ rel : Nhảy đến A 0. Thực hành lệnh kế nếu A = 0. 
 (PC) (PC) + 2 
 (A) 0 (PC) (PC) + byte 2 
 CJNE A, direct, rel : So sánh và nhảy đến A direct 
 (PC) (PC) + 3 
 (A) (direct) (PC) (PC) + Relative Address. 
 (A) < (direct) C = 1 
 (A) > (direct) C = 0 
 (A) = (direct). Thực hành lệnh kế tiếp 
 CJNE A, # data, rel : Tương tự lệnh CJNE A, direct, rel. 
 CJNE Rn, # data, rel : Tương tự lệnh CJNE A, direct, rel. 
 CJNE @ Ri, # data, rel : Tương tự lệnh CJNE A, direct, rel. 
 DJNE Rn, rel : Giảm Rn và nhảy nếu Rn 0. 
 (PC) (PC) + 2 
 (Rn) (Rn) -1 
 (Rn) 0 (PC) (PC) + byte 2. 
 DJNZ direct, rel : Tương tự lệnh DJNZ Rn, rel. 
CÂU HỎI VÀ BÀI TẬP 
1. Trình bày Cấu trúc phần cứng vi điều khiển 8951 
2. Thực hành lập trình cho vi điều khiển 8951 
- 41 - 
Strobe 
AutoFeed 
Reset 
X 
Đ 
V 
D5 
D6 
D7 
X 
Đ 
V 
ĐỀ THI MẪU 
Đề 1 : 
Câu 1: Nêu cấu trúc cổng, ý nghĩa các chân cắm của cổng LPT. 
 Xác định khuôn dạng dữ liệu của cổng COM là bao nhiêu khi truyền đi 5 ký tự 
“EFGHI”với 1 bit start,8bit a,1 bit Parity, 2 bit stop? 
Câu 2: 
 Lập trình cho các đèn LED nối với cổng LPT 
theo sơ đồ bên lần lượt thay nhau phát sáng theo chu 
kỳ 2 giây. 
Câu 3 : Xây dựng thủ tục cho phép quét và cấp phát ID cho các thiết bị đạng được đấu 
nối giao diện kết nối USB của máy tính 
Gợi ý đáp án 
 Câu 1 : Liệt kê danh sách các chân tín hiệu (tên, số hiệu chaanm chiều, ý nghĩa chân 
tín hiệu) 
 Chuyển đổi chuỗi ký tự sang mã ASCIII 8bit , xác định khuôn dạng dữ liệu, vẽ sơ đồ 
tín hiệu. 
Câu 2 : Xác định thanh ghi nào cần sử dụng cũng như các giá trị của thanh ghi đó theo 
các yêu cầu của đề bài, tiến hành viết đoạn chương trình đưa nạp giá trị vào các thanh ghi 
thông qua các thông số đã được xác định trước tương ứng với yêu cầu đề bài. 
Câu 3 : Sử dụng các hàm vả thủ tục API và HID để xây dựng chương trình. 
Đề 2 : 
Câu 1: Nêu cấu trúc đầu cắm, cáp nối của Bus ghép nối đa năng nối tiếp. 
 Xác định khuôn dạng dữ liệu của cổng COM là bao nhiêu khi truyền đi 5 ký tự 
“ABCDE”với 1 bit start,8bit a,1 bit Parity, 1 bit stop 
Câu 2: 
 Lập trình cho các đèn LED nối với cổng LPT 
theo sơ đồ bên lần lượt thay nhau phát sáng theo chu kỳ 
3 giây. 
Câu 3: Xây dựng thủ tục cho phép truyền và nhận dữ liệu qua cổng USB với tham số 
cho trước là địa chỉ cổng 

File đính kèm:

  • pdfBài giảng Lập trình ghép nối thiết bị ngoại vi.pdf