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
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:
- Bài giảng Lập trình ghép nối thiết bị ngoại vi.pdf