Luận văn Giao tiếp máy tính với kit vi xử lý 8085

Tài liệu Luận văn Giao tiếp máy tính với kit vi xử lý 8085: LUậN VĂN TỐT NGHIỆP Đề tài: GIAO TIẾP MÁY TÍNH VỚI KIT VI XỬ LY 8085 Lời mở đầu Kỹ thuật vi xử lí với tốc độ phát triển nhanh đã và đang mang đến những thay đổi to lớn trong khoa học và công nghệ cũng như trong đời sống hàng ngày. Ngày nay, các thiết bị máy móc ngày càng trở nên thông minh hơn, các công việc được thực hiện với hiệu quả cao hơn, đó cũng là nhờ vi xử lý, vi điều khiển. Kỹ thuật vi xử lý, vi điều khiển là kỹ thuật của tương lai, là chìa khóa đi vào công nghệ hiện đại. Đối với sinh viên chuyên ngành điện tử, đây là một lĩnh vực mới, hứa hẹn và mở ra nhiều triển vọng. Để góp phần tạo nền tảng ban đầu cho việc học tập, tìm hiểu kỹ thuật vi xử lý và cách truyền dữ liệu từ vi xử lý với các thiết bị bênh ngoài em xin đề nghị thực hiện đề tài: “GIAO TIẾP MÁY TÍNH VỚI KIT VI XỬ LÝ 8085”. Trong quá trình thực hiện đề tài này, mặc dù em đã rất cố gắng, xong chắc chắn không tránh khỏi những thiếu sót. Rất mong nhận sự góp ý, phê bình và chỉ dẫn củ...

pdf101 trang | Chia sẻ: haohao | Lượt xem: 1375 | Lượt tải: 0download
Bạn đang xem trước 20 trang mẫu tài liệu Luận văn Giao tiếp máy tính với kit vi xử lý 8085, để tải tài liệu gốc về máy bạn click vào nút DOWNLOAD ở trên
LUậN VĂN TỐT NGHIỆP Đề tài: GIAO TIẾP MÁY TÍNH VỚI KIT VI XỬ LY 8085 Lời mở đầu Kỹ thuật vi xử lí với tốc độ phát triển nhanh đã và đang mang đến những thay đổi to lớn trong khoa học và công nghệ cũng như trong đời sống hàng ngày. Ngày nay, các thiết bị máy móc ngày càng trở nên thông minh hơn, các công việc được thực hiện với hiệu quả cao hơn, đó cũng là nhờ vi xử lý, vi điều khiển. Kỹ thuật vi xử lý, vi điều khiển là kỹ thuật của tương lai, là chìa khóa đi vào công nghệ hiện đại. Đối với sinh viên chuyên ngành điện tử, đây là một lĩnh vực mới, hứa hẹn và mở ra nhiều triển vọng. Để góp phần tạo nền tảng ban đầu cho việc học tập, tìm hiểu kỹ thuật vi xử lý và cách truyền dữ liệu từ vi xử lý với các thiết bị bênh ngoài em xin đề nghị thực hiện đề tài: “GIAO TIẾP MÁY TÍNH VỚI KIT VI XỬ LÝ 8085”. Trong quá trình thực hiện đề tài này, mặc dù em đã rất cố gắng, xong chắc chắn không tránh khỏi những thiếu sót. Rất mong nhận sự góp ý, phê bình và chỉ dẫn của quí thầy cô và bạn đọc. Lời cảm tạ Cuốn luận văn này được hoàn thành tốt đẹp theo đúng thời gian quy định của nhà trường cũng như của khoa.Việc đạt được kết quả như trên không chỉ là sự nỗ lực của em mà còn sự giúp đỡ, chỉ bảo của thầy hướng dẫn, của quý thầy cô và các bạn sinh viên. Em xin chân thành cám ơn: Sự dạy dỗ, chỉ bảo và góp ý của quý thầy cô trong khoa, đặc biệt là các thầy cô ở các xưởng thực tập đã tạo mọi điều kiện thuận lợi cho chúng em hoàn thành luận văn. Sự giúp đỡ và chỉ bảo tân tình của Thầy hướng dẫn Nguyễn Đình Phú trong quá trình làm luận văn. Xin cám ơn các bạn sinh viên trong khoa đã giúp đỡ chúng tôi rất nhiều mặt: như phương tiện, sách vở, ý kiến … Chương: Cơ sở lý luận I. Thể thức nghiên cứu: 1. Thời gian nghiên cứu: Quá trình nghiên cứu đề tài được xem là một qui trình công nghệ hẳn hoi vì đòi hỏi phải tiến hành theo các khâu kế tiếp nhau bao gồm việc chọn đề tài, biên soạn đề cương, thu thập dữ kiện, xử lý dữ kiện, viết công trình nghiên cứu. Luận văn tốt nghiệp được tiến hành thực hiện trong khoảng thời gian là 6 tuần: Tuần 1 : Chọn đề tài, chính xác hóa đề tài, soạn đề cương, thu thập kiện và tài liệu liên hệ. Tuần 2 : Biên soạn nội dung phần lý thuyết. Tuần 3 : Thiết kế mạch trên giấy và tiến hành thi công, thủ mạch. Tuần 4 : Thiết kế bàn thực tập. Tuần 5 : Soạn bài thực tập cho mô hình đã thiết kế. Tuần 6 : Hoàn chỉnh mô hình,cân chỉnh phần lý thuyết để in ấn và nộp luận văn. 2. Phương pháp thu thập dữ kiện: Đây là giai đoạn quan trọng, sử dụng các phương pháp và phương tiện nghiên cứu để thu thập các dữ kiện về đề tài đã xác định. Dữ kiện đã thu thập được sẽ là chất liệu để hình thành công trình thực hiện đề tài. Vấn đề là làm sao thu thập được dữ kiện đầy đủ, chính xác, và phù hợp với nội dung nghiên cứu. Trong phạm vi luận văn này người nghiên cứu sử dụng phương pháp tham khảo tài liệu để thu thập dữ kiện giải quyết đề tài. Việc tham khảo tài liệu giúp người thực hiện bổ sung thêm kiến thức, lý luận cũng như phương pháp mà những công trình nghiên cứu trước đó đã xây dựng. Nhờ đó người nghiên cứu tập trung giải quyết vấn đề còn tồn tại. Tuy nhiên việc nghiên cứu tham khảo tài liệu luôn bảo đảm tính kế thừa và phát triễn có chọn lọc. 3. Xử lý dữ kiện: Các dữ kiện sau khi được thu thập chưa thể sử dụng được ngay mà phải qua quá trình sàng lọc, sửa chữa, phân tích khái quát thành lý luận . Tài liệu được sử dụng là những tài liệu có chất lượng cao chủ yếu là tài liệu gốc nên bảo đảm chính xác về nội dung đề cập. 4. Trình bày đồ án: Đề tài tốt nghiệp được trình bày theo cấu trúc một tập đồ án tốt nghiệp để phù hợp với nội dung và thời gian nghiên cứu đồng thời đáp ứng đúng yêu cầu về chương trình đào tạo của trường. Trình bày thành văn công trình nghiên cứu khoa học là giai đoạn hoàn thành nghiên cứu, do đó không được xem đó là quá trình kỹ thuật mà là một quá trình sáng tạo sâu sắc. Chính việc nắm vững bút pháp trong nghiên cứu khoa học giúp người nghiên cứu làm sáng tỏ thêm những kết quả đạt được, phát triễn chúng và có thêm những kiến thức mới. II. Cơ sở lý luận: Đồ án tốt nghiệp thực chất là một quá trình nghiên cứu khoa học - quá trình nhận thức và hành động. Quá trình này đòi hỏi phải có thời gian nhất định tương xứng với nội dung của đối tượng nghiên cứu và tính chất phức tạp của vấn đề nghiên cứu. Việc nghiên cứu khoa học giúp ta tìm ra cái mới. Cái mới ở đây không những mang tính chủ quan của người nghiên cứu mà còn mang tính khách quan đối với xã hội. Nghiên cứu khoa học phải nhằm mục đích phục vụ xã hội, đáp ứng yêu cầu thực tiễn. Hoạt động ngiên cứu khoa học muốn đạt kết quả tốt phải hội đủ các yếu tố: Phương tiện, phương pháp, cơ sở vật chất, máy móc thiết bị, hình thức tổ chức. Các yếu tố này có mối quan hệ hữu cơ và phù hợp với đối tượng nghiên cứu. CÁC CƠ SỞ CHO VIỆC NGHIÊN CỨU ĐỀ TÀI 1. Kiến thức và năng lực người nghiên cứu: Trong quá trình nghiên cứu và thực hiện đề tài người nghiên cứu cần phải cân nhắc kỹ độ khó và độ phức tạp của đề tài sao cho phù hợp với khả năng, kiến thức và năng lực của người nghiên cứu. Độ phức tạp của đề tài thể hiện ở các mặt: lĩnh vực nghiên cứu rộng hay hẹp, ở một ngành hay liên ngành, đối tượng nghiên cứu là đồng nhất hay không đồng nhất. Tuy nhiên cần lưu ý rằng giá trị của đề tài không phụ thuộc vào độ phức tạp của nó. Đề tài hẹp chưa hẳn là đề tài kém giá trị. Mỗi đề tài nghiên cứu khoa học có một phạm vi nhất định, phạm vi này càng hẹp thì sự nghiên cứu càng sâu. Độ khó của đề tài nói lên tính vừa sức đối với người nghiên cứu. Do đó độ phức tạp của đề tài thường có mối liên hệ tương hổ với độ khó của nó. Kiến thức của người nghiên cứu (đây là điều kiện chủ quan ở người nghiên cứu). Trước hết đó là vốn liếng, kinh nghiệm của người nghiên cứu. Giáo sư Hà Văn Tấn đã nhận xét: “Trình độ học sinh, sinh viên hiện nay không cho phép họ ngay từ đầu chọn được đề tài nghiên cứu. Vì vậy phải có sự gợi ý của thầy cô giáo…”. Mỗi đề tài nghiên cứu khoa học có những yêu cầu nhất định của nó. Người nghiên cứu cần nắm vững nội dung, phương pháp nghiên cứu phù hợp với đề tài, nói khác đi đề tài nghiên cứu phải mang tính vừa sức. Người nghiên cứu phải thể hiện năng lực nghiên cứu khoa học bao gồm việc nắm vững lý thuyết cơ bản của khoa học trong lĩnh vực nghiên cứu của mình, nắm được mức độ nhất định về sự phát triễn và tiến bộ thuộc lĩnh vực nghiên cứu. Có như thế mới chọn được đề tài có giá trị. Trong tình hình tiến bộ của khoa học kỹ thuật hiện nay trên thế giới, khối lượng thông tin khoa học gia tăng với qui mô lớn và nhịp độ nhanh đòi hỏi người nghiên cứu phải tham khảo tài liệu nước ngoài. Để thực hiện được vấn đề này người nghiên cứu người nghiên cứu khoa học cần có số vốn ngoại ngữ nhất định. Thể hiện lòng ham mê khoa học và quyết tâm nghiên cứu tìm tòi chân lý. 2-Vấn đề thực tiễn: Người nghiên cứu phải coi thực tiễn làm cơ sở, là động lực của nhận thức. Ang - ghen viết: “Khi xã hội có những yêu cầu kỹ thuật thì xã hội thúc đẩy khoa học hơn mười trường đại học”. Mặt khác thực tiễn cũng là tiêu chuẩn để kiểm tra nhận thức . Thực tế là những sự việc có thật, những tình hình cụ thể, những vấn đề đã hoặc chưa được giải quyết trong cuộc sống. Người nghiên cứu với kinh nghiệm bản thân trong công tác hàng ngày thường thấy được các mặt của vấn đề, các mối quan hệ phức tạp, các diễn biến, phương hướng phát triển của sự vật từ đó có định hướng thích hợp giải quyết đề tài. Chính thực tiễn giúp người nghiên cứu tìm thấy vấn đề một cách cụ thể. Người nghiên cứu phải xem thực tiễn cao hơn nhận thức (lý luận) vì nó có ưu điểm không những có tính phổ biến mà còn có tính hiện thực trực tiếp. Hồ Chủ Tịch cũng đã dạy: “Học tập thì theo nguyên tắc: kinh nghiệm và thực tiễn phải đi cùng nhau”. Đề tài thực hiện mang tính thực tiễn, nội dung của đề tài là có thật, phát triển từ thực tế khách quan. Có thể nói hầu như mọi công trình nghiên cứu điều có giá trị thực tế của nó, chỉ khác nhau ở mức độ ít nhiều, phục vụ trước mắt hay lâu dài, gián tiếp hay trực tiếp. 3. Tác động của điều kiện khách quan đến việc thực hiện đề tài: Trong quá trình nghiên cứu thực hiện đề tài người nghiên cứu là yếu tố chủ quan góp phần quan trọng đến kết quả còn đối tượng nghiên cứu, phương pháp nghiên cứu kể cả phương tiện ngiên cứu, thời gian nghiên cứu cùng những người cộng tác nghiên cứu và người hướng dẫn nghiên cứu là những điều kiện khách quan ảnh hưởng trực tiếp đến việc nghiên cứu và kết quả nghiên cứu. Người nghiên cứu càng nắm chắc các yếu tố khách quan đó bao nhiêu thì kết quả nghiên cứu càng được khẳng định bấy nhiêu. Chương I: CẤU TRÚC VI XỬ LÝ 8085 I. CẤU TẠO BÊN TRONG VI XỬ LÝ 8085 1. Cấu trúc của một vi xử lý cơ bản : Một vi xử lý về cơ bản gồm có 3 khối chức năng: đơn vị thực thi (Execution), bộ điều khiển tuần tự (Sequencer) và bus giao tiếp. - Đơn vị thực thi : Xử lý các lệnh số học và logic. Các toán hạng liên quan có mặt ở các thanh ghi dữ liệu hoặc địa chỉ hoặc từ bus nội. - Bộ điều khiển tuần tự : Bao gồm bộ giải mã lệnh (Intrustruction Decoder) và bộ đếm chương trình (Program Counter). + Bộ đếm chương trình gọi các lệnh chương trình tuần tự. + Bộ giải mã lệnh thì khởi động các bước cần thiết để thực hiện lệnh. Bộ điều khiển tuần tự tạo thành một hệ thống logic tuần tự mà cách thức hoạt động của nó được chứa trong ROM. Nội dung chứa trong ROM được gọi là vi chương trình. Các lệnh bên ngoài trong trường hợp này xác định các địa chỉ vào vi chương trình. Khi chương trình bắt đầu thực hiện thì bộ đếm chương trình PC được đặt ở địa chỉ bắt đầu, thường là địa chỉ 0000H (với xi xử lý 8 bit). Địa chỉ này được chuyển đến bộ nhớ thông qua bus địa chỉ (Address Bus). Khi tín hiệu Read được đưa vào ở bus địa chỉ nội dung của bộ nhớ liên quan xuất hiện trên bus dữ liệu (data bus) và sẽ được chứa ở bộ giải mã lệnh (Instruction Decoder). Sau khi khởi động một số bước cần thiết để thực thi lệnh nhờ một số chu kỳ máy và khi lệnh đã thực thi, thì bộ giải mã lệnh làm cho bộ đếm chương trình chỉ đến ô địa chỉ của lệnh kế. Trong đề tài này, sử dụng vi xử lý 8085 là một vi xử lý 8 bit nên dưới đây xin trình bày cấu trúc của vi xử lý 8085. Hình 1.1 : Sơ đồ khối của một vi xử lý 8 bit. Address Register Data Register ALU Instruction Decoder Program Counter Logic Control C ontrol Logic Instruction Register Instruction Decoder TEMP-1 TEMP-2 ALU Out SP PC High Low Memory Address Register Accumulator (A) Status Register Register B Register D Register H Register C Register E Register L 16 bit Address 8 bit Data Bus IN IN 8 bit Internal data bus Bus Hình 1.2 : Sơ đồ cấu trúc của một vi xử lý. Qua sơ đồ trên, ta thấy vi xử lý bao gồm các khối chính sau: khối đơn vị số học/logic ALU (Arithmatic Logic Unit), các thanh ghi và khối Control Logic. Các khối này liên hệ với nhau qua các đường dây truyền tín hiệu. 2. Chức năng và nhiệm vụ của các khối trong vi xử lý: a. Khối ALU (Arithmatic Logic Unit). Khối đơn vị số học/ logic là khối quan trọng nhất bên trong vi xử lý, khối ALU chứa các mạch điện logic có chức năng chính là thực hiện các phép toán, các phép thay đổi số liệu. Cơ sở chính của khối ALU là mạch cộng, nên nó có khả năng thực hiện các phép xử lý số nhị phân. Khối ALU có hai ngõ vào và một ngõ ra, các ngõ vào có chức năng chuyển tín hiệu ngõ vào vào khối ALU để tính toán, sau đó dữ liệu được chuyển đến ngõ ra để chuyển ra ngoài. Dữ liệu trước khi vào khối ALU được chứa ở thanh ghi TEMP 1 và TEMP 2 là các thanh ghi đệm. Trong vi xử lý có một thanh ghi đặc biệt có tên là thanh ghi A, hầu hết mọi hoạt động của ALU đều thông qua thanh ghi này. Thông thường khối ALU nhận dữ liệu từ thanh ghi A rồi xử lý dữ liệu, sau khi xử lý xong thì lại gởi dữ liệu ra thanh ghi A. b. Các thanh ghi bên trong vi xử lý. Các thanh ghi bên trong của vi xử lý có chức năng lưu trữ tạm thời các dữ liệu khi xử lý. Trong số đó có một vài thanh ghi đặc biệt khi thực hiện lệnh, còn các thanh ghi còn lại là các thanh ghi thông dụng. Các thanh ghi này giúp cho người lập trình thực hiện chương trình dễ dàng hơn, số lượng thanh ghi phụ thuộc vào từng loại vi xử lý. Các thanh ghi trong một vi xử lý gồm có: thanh ghi tích lũy (Accumulator Register), thanh ghi PC (Program Counter Register), thanh ghi con trỏ ngăn xếp (Stack Pointer Register), thanh ghi trạng thái (Status Register), các thanh ghi thông dụng, thanh ghi địa chỉ và thanh ghi lệnh (Instruction Register). * Thanh ghi tích lũy (thanh ghi A – Accumulator Register) : Thanh ghi A là một thanh ghi quan trọng của vi xử lý có chức năng lưu trữ dữ liệu khi tính toán. Hầu hết các phép toán số học và phép toán logic đều xảy ra giữa ALU và thanh ghi A, nhưng cần lưu ý rằng hầt hết sau khi thực hiện phép tính, ALU thường gởi dữ liệu vào thanh ghi A làm dữ liệu trong thanh ghi A trước đó bị mất. Thanh ghi A thường làm trung gian để trao dữ liệu của vi xử lý với các thiết bị ngoại vi. Với vi xử lý 8085A, thanh ghi A có độ dài 8 bit. * Thanh ghi PC (Program Counter Register) : Thanh ghi PC là thanh ghi quan trọng nhất của vi xử lý. Khi thực hiện một chương trình, các lệnh của chương trình sẽ được quản lý bằng thanh ghi PC. Thanh ghi PC sẽ chứa địa chỉ của các lệnh đang thực hiện của một chương trình. Chính vì vậy, trước khi vi xử lý thực hiện một chương trình thì thanh ghi PC phải được nạp một dữ liệu, đó chính là địa chỉ đầu tiên của chương trình. Trong quá trình thực hiện chương trình, vi xử lý tự động tăng nội dung thanh ghi PC để chuẩn bị đón các lệnh tiếp theo, tuy nhiên trong chương trình có lệnh có khả năng làm thay đổi nội dung thanh ghi PC. Với vi xử lý 8085, thanh ghi PC có độ dài 16 bit và khi vi xử lý được reset lại, thanh ghi PC sẽ tự động nạp cho mình giá trị 0000H. * Thanh ghi trạng thái (Status Register): Thanh ghi trạng thái còn gọi là thanh ghi cờ (Flag Register – thanh ghi F) dùng để lưu trữ kết quả của một số lệnh kiểm tra. Việc lưu trữ kết quả của các lệnh kiểm tra giúp cho người lập trình có khả năng điều khiển chương trình theo các nhánh khác nhau. Với vi xử lý 8085 cấu trúc của thanh ghi trạng thái như sau: 7 6 5 4 3 2 1 0 S Z x AC x P x CY Trong đó: S (signal): bit dấu : S = 1 khi kết quả âm, S = 0 khi kết quả dương. Z (Zero): bit Zero: Z = 1 khi kết quả bằng 0, Z = 0 khi kết quả khác 0. AC (Auxiliary carry): bit tràn: AC = 1 : phép tính bị tràn trên bit 4. AC = 0 : phép tính không bị tràn trên bit 4. P (Parity): bit chẵn, lẻ: P = 1 khi kết quả là số chẵn. P = 0 khi kết quả là số lẻ. CY (Carry): bit nhớ: CY = 1 khi kết quả có số nhớ. CY = 0 khi kết quả không có số nhớ. Các bit x là các bit không được sử dụng thông dụng nên không giới thiệu trong đề tài này. * Thanh ghi con trỏ ngăn xếp (Stack Pointer Register – thanh ghi SP): Thanh ghi con trỏ ngăn xếp là thanh ghi quan trọng của vi xử lý, độ dài dữ liệu của thanh ghi SP bằng với độ dài dữ liệu của thanh ghi PC. Chức năng của thanh ghi SP là dùng để quản lý bộ nhớ ngăn xếp khi muốn lưu trữ tạm thời dữ liệu vào ngăn xếp, cũng giống như thanh ghi PC, thanh ghi SP cũng tự động chỉ tới ô nhớ kế. Trong các vi xử lý, vị trí con trỏ ngăn xếp luôn tự động giảm để chỉ tới ô nhớ kế tiếp, vì vậy khi thiết lập giá trị cho thanh ghi con trỏ ngăn xếp phải là địa chỉ cuối cùng của chương trình và nó phải nằm trong vùng nhớ RAM. Nếu không khởi tạo địa chỉ con trỏ ngăn xếp, nó sẽ chỉ đến một địa chỉ ngẫu nhiên, do đó dữ liệu cất vào ngăn xếp có thể ghi chồng lên phần chương trình làm chương trình chạy sai hoặc SP không nằm trong vùng nhớ RAM làm nó không thực hiện đúng chức năng của mình. * Thanh ghi địa chỉ bộ nhớ: Thanh ghi địa chỉ ô nhớ có chức năng tạo đúng địa chỉ ô nhớ mà vi xử lý muốn truy xuất dữ liệu. Thanh ghi địa chỉ luôn bằng với thanh ghi PC. * Thanh ghi lệnh : Thanh ghi này có chức năng chứa lệnh mà vi xử lý đang thực hiện. Đầu tiên, lệnh được đón từ bộ nhớ đến chứa trong thanh ghi lệnh, tiếp theo lệnh sẽ được thực hiện, trong khi thực hiện lệnh, bộ giải mã lệnh sẽ đọc dữ liệu trong thanh ghi lệnh để xử lý và báo chính xác cho vi xử lý biết yêu cầu của lệnh. Trong suốt quá trình này thanh ghi lệnh không đổi, nó chỉ thay đổi khi thực hiện lệnh kế tiếp. Với vi xử lý 8085 thanh ghi lệnh có độ dài dữ liệu là 8 bit. Người lập trình không có khả năng tác động vào thanh ghi này. * Thanh ghi chứa dữ liệu tạm thời (Temporary Data Register): Thanh ghi chứa dữ liệu tạm thời dùng để trợ giúp khối ALU trong quá trình thực hiện các phép toán. Trong mỗi loại vi xử lý, số lượng các thanh ghi tạm thời khác nhau. c. Khối điều khiển logic (Logic Control): Khối điều khiển logic thực chất là các mạch điều khiển logic, có chức năng nhận lệnh hay tín hiệu điều khiển từ bộ giải mã lệnh và thực hiện việc điều khiển theo đúng yêu cầu của lệnh. Khối điều khiển logic được xem như là bộ xử lý của vi xử lý. Các tín hiệu điều khiển của khối điều khiển logic là các tín hiệu điều khiển các thiết bị bên ngoài giao tiếp với vi xử lý và các đường điều khiển vi xử lý từ các thiết bị bên ngoài. Ngõ vào tín hiệu quan trọng nhất trong khối điều khiển logic là ngõ vào xung clock, phải có tín hiệu này thì khối điều khiển mới hoạt động được. Đồng thời giúp hệ thống hoạt động được đồng bộ. d. Các thành phần khác bên trong vi xử lý. Khối giải mã lệnh (Instruction Decoder): Chức năng của khối giải mã lệnh là nhận lệnh từ thanh ghi lệnh, sau đó tiến hành giải mã lệnh rồi đưa tín hiệu điều khiển đến khối điều khiển logic. Các đường dây dẫn: Các khối bên trong của vi xử lý liên hệ với nhau thông qua các đường dây dẫn. Các đường dây dẫn được chia làm ba nhóm chính: đường dữ liệu, đường địa chỉ và đường điều khiển. - Đường địa chỉ: trong vi xử lý 8085, đường dữ liệu của nó gồm 16 đường dây dẫn song song để truyền tải các bit địa chỉ. Số đường địa chỉ cho ta biết số ô nhớ tối đa mà vi xử lý có khả năng truy xuất được, số ô nhớ được tính bằng công thức 2n với n là số đường dây dẫn. Vậy với vi xử lý 8085A, khả năng truy xuất ô nhớ tối đa là 65536 ô nhớ. Với nhiệm vụ định ra địa chỉ của thiết bị cần truy xuất nên đường địa chỉ mang tính một chiều và chỉ có vi xử lý mới có khả năng đưa địa chỉ lên đường địa chỉ. - Đường dữ liệu: dùng để kết nối các thanh ghi bên trong vi xử lý với các khối khác bên trong vi xử lý và chuyển dữ liệu ra ngoài. Vi xử lý 8085A có 8 đường dữ liệu. Để các thanh ghi bên trong vừa có khả năng nhận dữ liệu vừa có khả năng xuất dữ liệu thì đường dữ liệu phải có tính chất hai chiều. - Đường điều khiển: bao gồm các tín hiệu điều khiển để bảo đảm sự hoạt động đồng bộ với nhau giữa các khối. Mỗi tín hiệu điều khiển có một chiều nhất định. 3. Tập lệnh của vi xử lý: Mỗi vi xử lý có một tập lệnh riêng tùy thuộc vào cấu trúc bên trong của nó. Tập lệnh gồm nhiều lệnh. Lệnh của vi xử lý là dữ liệu ở dạng số nhị phân, với vi xử lý 8085 chiều dài một lệnh là 8 bit. Một lệnh luôn luôn bao gồm hai phần chính: mã lệnh và địa chỉ, nếu một lệnh mà phần sau của nó là dữ liệu thì phần địa chỉ đã được hiểu ngầm. Để việc viết chương trình dễ dàng hơn, người ta dùng các từ gọi nhớ để lệnh dễ viết và dễ đọc hơn, việc này làm người viết chương trình có thể nhớ được nhiều lệnh hơn. Tập lệnh của vi xử lý được chia làm 9 nhóm lệnh cơ bản sau: - Nhóm lệnh truyền dữ liệu. - Nhóm lệnh số học và logic. - Nhóm lệnh trao đổi, truyền khối dữ liệu và tìm kiếm. - Nhóm lệnh xoay và dịch. - Nhóm lệnh điều khiển. - Nhóm lệnh về bit. - Nhóm lệnh nhảy. - Nhóm lệnh gọi, trở về và nhóm lệnh bắt đầu. - Nhóm lệnh xuất/nhập. 4. Các kiểu định địa chỉ trong vi xử lý: Trong vi xử lý sử dụng rất nhiều kiểu định địa chỉ, sau đây là một số kiểu định địa chỉ thông dụng. * Kiểu định địa chỉ tức thời: Với kiểu định địa chỉ tức thời thì trong mã lệnh không đề cập tới địa chỉ mà chỉ đề cập tới dữ liệu, địa chỉ ở đây đã được hiểu ngầm. * Kiểu định địa chỉ trực tiếp: Trong mã lệnh có chứa địa chỉ trực tiếp của ô nhớ cần xử lý, vi xử lý 8085A có 16 đường địa chỉ nên địa chỉ trực tiếp cũng có độ dài 16 bit. * Kiểu định địa chỉ ngầm: Trong cách định địa chỉ này, vị trí hoặc giá trị của số liệu được hiểu ngầm nhờ mã lệnh. * Kiểu định địa chỉ gián tiếp dùng thanh ghi: Yếu tố thứ hai trong cấu trúc lệnh không phải là địa chỉ của dữ liệu mà chỉ là dấu hiệu cho biết vị trí, nơi chứa địa chỉ của số liệu. * Kiểu định địa chỉ trực tiếp bằng thanh ghi: Yếu tố thứ hai của cấu trúc lệnh là ký hiệu của các thanh ghi, dữ liệu xử lý là dữ liệu chư II. SƠ ĐỒ CẤU TRÚC BÊN NGOÀI VÀ CHỨC NĂNG CÁC CHÂN CỦA VI XỬ LÝ 8085: 1. Đặc tính của vi xử lý 8085A: - Nguồn cung cấp: 5 V  10%. - Dòng điện cực đại: Imax = 170 mA. - Tần số xung clock chuẩn: 6,134 Mhz. - Độ dài dữ liệu là 8 bit. - Khả năng truy xuất ô nhớ trực tiếp là 64 Kbytes. - Vi xử lý có thể tính số nhị phân, thập phân. - Vi xử lý có 8 đường dữ liệu và 16 đường địa chỉ. - Các đường điều khiển : RD\, WR\, IO/M\, Clock Out, Reset Out và 4 ngắt. 2. Sơ đồ chân và sơ đồ logic: Hình 1.3 : Sơ đồ chân và sơ đồ logic của 8085A 3. Chức năng các chân: * Chân 1, 2 – X1, X2 (Input): - Chân X1, X2 là hai ngõ vào, đây cũng là nơi đặt thạch anh. Nhiệm vụ của nó là tạo dao động cho các khối bên trong vi xử lý. - Vi xử lý khác nhau có tần số làm việc khác nhau, sau đây là tần số làm việc cực đại của một vài vi xử lý do Intel sản xuất:  6MHz đối với 8085A.  10MHz đối với 8085A-2.  12 MHz đối với 8085A-1. * Chân 3: Reset Out (Output): - Cho biết vi xử lý đang đặt ở trạng thái ban đầu. Ta có thể sử dụng tín hiệu từ chân này làm tín hiệu reset cho các vi mạch khác trong hệ thống. - Chân này nếu không sử dụng thì để trống. - Tín hiệu luôn ở mức [0], khi tác động thì lên [1]. * Chân 4: SOD (Output): - SOD (Serial Output Data): đây là ngõ ra dữ liệu nối tiếp, dữ liệu được xuất ra ở chân này tại bit A7 của thanh ghi A. ngõ ra này được thực hiện bởi lệnh SIM. - Chân này nếu không sử dụng thì để trống. * Chân 5: SID (Input): - SID (Serial Input Data): đây là ngõ vào dữ liệu vào nối tiếp, dữ liệu từ hệ thống khác gửi đến từng bit một khi vi xử lý có lệnh nhận tín hiệu, dữ liệu ở ngõ vào này được nạp vào bit A7 của thanh ghi A. - Vi xử lý thực hiện công việc này khi nhận lệnh RIM. * Chân 6: TRAP (Input): - Ở chân này, tín hiệu ngắt không ngăn được. Tín hiệu yêu cầu ngắt có bậc Ready Hold Intr RST 7.5 RST 6.5 RST 5.5 Trap Reset in X1 X2 SID Vcc Vss A8 – A15 AD0 – AD7 ALE S0 S1 RD\ WR\ HLDA INTA Reset out Clock out SOD 8085A X1 X2 Reset out SOD SID Trap RST 7.5 RST 6.5 RST 5.5 INTR INTA\ AD0 AD1 AD2 AD3 AD4 AD5 AD6 AD7 Vss Vcc HOLD HLDA Clock out Reset in READY IO/M\ S1 RD\ WR\ ALE S0 A15 A14 A13 A12 A11 A10 A9 A8 1 20 21 40 8085A ưu tiên cao, không bị ngăn lại bởi chương trình (phần mềm). - Ngõ vào này do hệ thống khác điều khiển. Hình 1.4 : Sơ đồ tác động ngắt của vi xử lý. - Ngõ vào này được kích bởi cạnh lên. - Khi chân TRAP ở mức [1], trạng thái này được lưu vào 1 bit bên trong vi xử lý, lúc đó chương trình thứ I sẽ ngưng lại khi thực hiện xong và nhảy đến địa chỉ 0024H để thực hiện chương trình tại địa chỉ này cho đến khi gặp lệnh trở về thì mới quay lại chương trình chính. - Ứng dụng của ngắt : Một trong những ứng dụng là quét bàn phím. Khi có một phím tác động, IC quét bàn phím sẽ báo cho vi xử lý tín hiệu ngắt vi xử lý sẽ chuyển sang nhận và xử lý phím đó. Sau khi xử lý xong mới trở về chương trình chính. * Chân 7, 8, 9 – RST 7.5, RST 6.5, RST 5.5: (Input): - RST (Restart Interrupt Request): Tín hiệu ngắt có thể ngăn được. Đây là ba ngõ vào điều khiển vi xử lý. - Ba ngõ vào này được kích bằng cạnh lên hoặc bằng mức, tín hiệu đưa vào chân RST 7.5 có thể là một xung. - Khi gặp tín hiệu ngắt, vi xử lý sẽ thực hiện chương trình tại địa chỉ được quy định quy định trước. * Chân RST 7.5 có địa chỉ chương trình phục vụ ngắt là: 003C. * Chân RST 6.5 có địa chỉ chương trình phục vụ ngắt là: 0034. * Chân RST 5.5 có địa chỉ chương trình phục vụ ngắt là: 002C. - Khi đoạn chương trình chính có lệnh cho phép ngắt DI tín hiệu ngắt từ các chân này sẽ không được thực hiện. - Khi đoạn chương trình chính có lệnh cho phép ngắt EI, thì các lệnh ngắt này sẽ được thực hiện kể từ khi gặp lệnh EI trong chương trình chính. - Nếu các chân này không sử dụng thì sẽ nối đất (GND). Hệ thống khác 8085A 6 8085A 6 o Trap VXL Hoặc  * Chân 10: INTR (Input): - INTR (Interrupt) : tín hiệu báo ngắt vi xử lý sẽ nhận ra sau khi thi hành xong một chỉ thị. - Khi không sử dụng chân 10 nối GND. * Chân 11: INTA\ (Output): - INTA (Interrupt Acknowledge): Tín hiệu trả lời ngắt. Tín hiệu sẽ báo cho thiết bị yêu cầu ngắt bởi tín hiệu INTA biết rằng vi xử lý đã chấp nhận yêu cầu ngắt và thiết bị yêu cầu ngắt hãy đặt lệnh lên đường dữ liệu (Data Bus). - Chân 10 và 11 thường được liên kết với các IC DMA (dùng trong máy tính). - Khi không sử dụng chân 11 bỏ trống. * Chân 12  19 – AD0  AD7 (Input/Output): - AD (Address Data): đây là các đường địa chỉ và các đường dữ liệu được tích hợp chung với nhau tạo thành đường dữ liệu – địa chỉ. - Ở chu kỳ máy T1, các ngõ AD này đóng vai trò là các ngõ ra địa chỉ, ở các chu kỳ sau thì bus này đóng vai trò là các đường dữ liệu. Vi xử lý xuất hay nhập dữ liệu đều thông qua các đường này. - Các đường dữ liệu và địa chỉ trong bus này có thể được tách ra hẳn bởi một IC chốt (74LS373, 74LS573) được điều khiển bởi chân ALE của vi xử lý. * Chân 20 – Vss: Chân GND của vi xử lý. * Chân 21  28 – A8  A15 (Output) Address bus: Các ngõ ra này được dùng để xuất 8 bit địa chỉ cao. Như vậy, vi xử lý 8085A có 16 đường địa chỉ và 8 đường dữ liệu. * Chân 29, 33, 34 – S0, S1, IO/M\ (Output). - Ba ngõ này cho biết trạng thái hoạt động của vi xử lý, trạng thái hoạt động có thể xem ở bảng sau: IO/M\ S1 S0 Trạng thái 0 0 1 Viết vào bộ nhớ (Memory Write) 0 1 0 Đọc bộ nhớ (Memory Read) 0 1 1 Xuất dữ liệu ra cổng (Op-Code Fetch) 1 0 1 Xuất dữ liệu ra cổng (I/0 Write) 1 1 0 Đọc dữ liệu từ cổng (I/0 Read) 1 1 1 Interrup Acknowledge * Chân 30 – ALE (Output): - ALE (Address Latch Enable) là chân điều khiển, dùng xác định vai trò của đường AD7  AD0. Ngõ này tạo ra một xung ở chu kỳ máy T1 nhằm xác định lúc đó đường AD7  AD0 đóng vai trò là đường địa chỉ (A7  A0). - Bình thường thì ALE ở mức [0], ở chu kỳ T1 thì ALE ở mức [1]. - Chân này dùng làm chân điều khiển cho IC chốt. * Chân 31: WR\ (Output): - WR\ (Write) dùng để xác định vi xử lý 8085A đang thực hiện lệnh ghi dữ liệu lên bộ nhớ hay I/O. - Chân WR\ của vi xử lý 8085A thường được nối với các chân WR của các IC khác (bộ nhớ hay I/O). * Chân 32: RD\ (Output): - RD\ (Read): dùng để xác định vi xử lý đang thực hiện lệnh đọc dữ liệu từ bộ nhớ hay I/0 và vi xử lý. - Chân RD\ của vi xử lý 8085A thường được nối với các chân RD của các IC khác (bộ nhớ hay I/0). * Chân 35: Ready (Input): - Ready: Tức tín hiệu trả lời cho vi xử lý. Bộ nhớ hay thiết bị ngoại vi I/0 báo cho vi xử lý biết là đã sẵn sàng gửi hoặc nhận dữ liệu. Vi xử lý chưa thể hoàn thành chu kỳ máy nếu Ready có giá trị thấp. - Nếu hết 3 chu kỳ xung clock mà bộ nhớ chưa gửi dữ liệu ra thì chương trình sẽ sai. Do đó để đồng bộ người thiết kế dùng chân Ready này (bình thường Ready ở mức [1]). * Chân 36: Reset In (Input): - Reset In: ngõ vào này dùng để reset vi xử lý. Khi thực hiện reset tín hiệu này phải ở mức logic [0] trong khoảng 3 chu kỳ xung clock. - Khi reset thanh ghi PC = 0000H nghĩa là vi xử lý trở về trạng thái ban đầu. Sau đó vi xử lý sẽ đón lệnh tại địa chỉ này. - Khi chân Reset In tác động thì chân Reset Out của vi xử lý cũng tác động theo. Nếu các IC khác được nối với chân Reset Out thì khi reset vi xử lý, các IC khác cũng được reset theo. Hình 1.5 : Sơ đồ reset 8085A. * Chân 37: CLK (Output): - CLK (Clock): ngõ ra tín hiệu xung clock để cung cấp cho các thiết bị khác khi có yêu cầu. Tần số của nó bằng tần số ngõ vào chia 2. - Nếu không sử dụng thì chân này để trống. * Chân 38: HLDA (Output): - HLDA (Hold Acknowledge): Tín hiệu ngõ ra cho biết tín hiệu HOLD đã được chấp nhận và vi xử lý sẽ ở trạng thái HOLD ở chu kỳ xung clock tiếp theo. * Chân 39: HOLD (Input): - HOLD: nhận tín hiệu yêu cầu ngưng bộ điều khiển DMA. - Nếu không sử dụng, chân HOLD nối GND. Tóm lại, với chân HOLD và HLDA: khi DMA ngưng thì vi xử lý làm việc và ngược lại vì DMA kết nối thông qua bus. * Chân 40 – Vcc : Năng lượng nguồn 5V cung cấp cho vi xử lý hoạt động. 8085A 36  R C III. BỘ NHỚ: 1. KHÁI NIỆM: Bộ nhớ là các vi mạch được tích hợp với mật độ cao. Bộ nhớ chính là nơi lưu trữ các chương trình cho vi xử lý cũng như lưu trữ các kết quả khi xử lý, vì vậy mọi hệ thống điều khiển tự động dùng vi xử lý đều phải dùng tới bộ nhớ. 2. HOẠT ĐỘNG TỔNG QUÁT CỦA MỘT BỘ NHỚ: Quá trình hoạt động truy xuất dữ liệu của bộ nhớ đều thông qua các bước sau: - Nhận địa chỉ để chọn đúng ô nhớ cần truy xuất. - Nhận tín hiệu điều khiển, tín hiệu này sẽ cho phép đọc hay ghi dữ liệu từ bộ nhớ. - Nhận dữ liệu vào ô nhớ khi thực hiện chức năng ghi hoặc gởi dữ liệu ra khi thực hiện chức năng đọc. Hình 1.6 : Sơ đồ mô tả các đường tín hiệu của bộ nhớ. Các đường điều khiển bao gồm ngõ vào Memory Enable và ngõ vào Read\Write. Ngõ vào Memory Enable dùng để cho phép bộ nhớ hoạt động. Ngõ vào Read \ Write dùng để xác định chế độ hoạt động của bộ nhớ: đọc dữ liệu ra hay ghi dữ liệu vào. Các đường địa chỉ vào xác định đúng địa chỉ ổ nhớ cần truy xuất. Các đường dữ liệu dùng để truyền dữ liệu hai chiều. BỘ NHỚ Các đường dữ liệu vào\ra Các ường iều khiển Các đường địa chỉ vào 3. PHÂN LOẠI BỘ NHỚ: Bộ nhớ được phân thành 2 loại, mỗi loại có cơ chế hoạt động khác nhau nhưng cùng có chung chức năng chính là lưu trữ dữ liệu. - Bộ nhớ chỉ đọc (ROM – Read Only Memory): trong lúc hoạt động bình thường, dữ liệu chỉ có thể đọc ra chứ không có thể ghi vào. - Bộ nhớ truy xuất ngẫu nhiên (RAM – Random Access Memory): bất kỳ ô nhớ nào cũng dễ dàng truy xuất như những ô nhớ khác tức là dữ liệu có thể dễ dàng ghi vào cũng như đọc ra. a. Bộ nhớ ROM: ROM là bộ nhớ được thiết kế cho các ứng dụng cần tỷ lệ đọc dữ liệu cao. ROM lưu trữ dữ liệu cố định và trong khi hoạt động bình thường chỉ dùng để đọc dữ liệu ra chứ không thể ghi dữ liệu vào ROM. Có nhiều loại ROM khác nhau, dưới đây là một số loại ROM thường gặp : - PROM (Programmable ROM): loại ROM này chỉ có thể lập trình được một lần, sau đó không thể xóa hay nạp lại để thay đổi dữ liệu. - EPROM (Erasable Programmable ROM): với loại ROM này, dữ liệu có thể xóa đi để nạp dữ liệu mới được. Tuy nhiên, khi cần thay đổi giá trị của một ô nhớ thì không thể chỉ xóa dữ liệu của ô nhớ đó mà phải xóa hết rồi nạp lại toàn bộ dữ liệu. Để xóa dữ liệu của EPROM phải dùng ánh sáng cực tím. Còn để nạp dữ liệu cho ROM phải dùng mạch nạp cho ROM. Họ EPROM có mã số 27xxx. - EEPROM (Electrically Erasable Programmable ROM): đây là loại ROM cải tiến từ EPROM. Với loại EEPROM này có thể xóa và nạp các ô nhớ một cách độc lập, không cần xóa đi toàn bộ các ô nhớ chứa chương trình như của EPROM. Họ EEPROM có mã số 28xxx. Trong thực tế, với các hệ thống điều khiển dùng vi xủ lý, người ta thường sử dụng EPROM vì nó có thể cho phép người sử dụng nạp và xóa chương trình nhiều lần, đồng thời tính kinh tế cao (rẻ và dễ kiếm hơn EEPROM nhiều lần). Chính vì vậy, trong đề tài này, nhóm đã sử dụng EPROM để làm bộ nhớ cho hệ thống điều khiển của mình. EPROM có nhiều loại với các dung lượng khác nhau. Sau đây là bảng liệt kê các loại EPROM. Bảng liệt kê các loại EPROM: Tên EPROM Dung lượng Ngõ ra Thời gian truy xuất 2707 1 Kbytes 3 trạng thái 150 ns 2716 2 Kbytes 3 trạng thái 150 ns 2732 4 Kbytes 3 trạng thái 250 ns 2764 8 Kbytes 3 trạng thái 450 ns 27128 16 Kbytes 3 trạng thái 450 ns 27256 32 Kbytes 3 trạng thái 450 ns 27512 64 Kbytes 3 trạng thái 450 ns Trong đề tài nầy, ở đây chỉ trình bày sơ đồ chân, sơ đồ logic cùng bảng trạng thái của vi mạch 2764: Hình 1.7 : Sơ đồ chân và sơ đồ logic của vi mạch 2764 Bảng trạng thái của vi mạch 2764: Mode CE\ OE\ PGM\ VPP VCC Output Read VIL VIL VIH VCC VCC Dout Stand by VIH x x VCC VCC High Z Program VIL x VIL VPP VCC Din Program verify VIL VIL VIH VPP VCC Dout Program Inhibit VIH x x VPP VCC High Z b. Bộ nhớ RAM: Bộ nhớ RAM là bộ nhớ thay đổi, bất kỳ ô nhớ nào cũng có thể truy xuất dễ dàng và thời gian truy xuất của các ô nhớ là như nhau. Khác với bộ nhớ ROM, dữ liệu trong RAM sẽ mất đi khi nguồn điện cung cấp bị mất. Tuy vậy người ta khắc phục điều này bằng cách sử dụng nguồn pin để “nuôi” RAM. RAM thường được dùng trong các hệ thống điều khiển tự động để lưu trữ dữ liệu tạm thời chương trình hay các dữ liệu. Do nội dung dữ liệu trong RAM thường thay đổi liên tục trong quá trình hoạt động nên yêu cầu chu kỳ đọc và ghi của RAM phải nhanh để không làm ảnh hưởng đến tốc độ của cả hệ thống. Cũng như bộ nhớ ROM, bộ nhớ RAM cũng dùng thanh ghi để lưu trữ dữ liệu, mỗi thanh ghi lưu trữ một dữ liệu và chỉ tương ứng với một địa chỉ duy nhất. Khác với bộ nhớ ROM, bộ nhớ RAM còn có đường điều khiển cho phép ghi hoặc đọc dữ liệu : R\W. Bộ nhớ RAM được chia làm hai loại: SRAM và DRAM. - SRAM (Static RAM) còn gọi là RAM tĩnh. Đây là loại RAM lưu trữ dữ liệu cho đến khi nào nguồn nuôi không còn. SRAM thực chất là những Flip – Flop (FF), trong đó mỗi FF là một phần tử nhớ đại diện cho một bit. - DRAM (Dynamic RAM) còn gọi là RAM động. Đây là loại RAM phải luôn được làm “tươi” tức là phải nạp lại dữ liệu cho RAM trong một khoảng thời gian nhất định, nếu không RAM sẽ bị mất dữ liệu. Trong khi làm tươi RAM, ô nhớ đó không được phép truy A0 A1 A11 A12 CE\ OE\ PGM\ Vpp D0 D7 2764 1 2 3 4 5 6 7 8 9 10 11 12 13 14 28 27 26 25 24 23 22 21 20 19 18 17 16 15 Vpp A12 A7 A6 A5 A4 A3 A2 A1 A0 D0 D1 D2 GND Vcc PGM\ NC A8 A9 A11 OE\ A10 CE\ D7 D6 D5 D4 D3 2764 xuất. Trong đề tài này, nhóm chỉ sử dụng SRAM: 6264 nên ở đây chỉ trình bày sơ đồ chân, sơ đồ logic và bảng trạng thái của SRAM này. Bảng trạng thái làm việc của vi mạch 6264: Mode WR\ CS\ CS OE\ Output Not select x H X X High Z Not select x x L X High Z Output Disable H L H H High Z Read H L H L Dout Write L L H H Din A0 A1 A11 A12 CS\ OE\ WR\ CS D0 D7 6264 1 2 3 4 5 6 7 8 9 10 11 12 13 14 28 27 26 25 24 23 22 21 20 19 18 17 16 15 NC A12 A7 A6 A5 A4 A3 A2 A1 A0 D0 D1 D2 GND Vcc WR\ CS A8 A9 A11 OE\ A10 CS\ D7 D6 D5 D4 D3 6264 Hình 1.8 : Sơ ồ chân và sơ ồ logic của vi mạch 6264 IV. KẾT NỐI BỘ NHỚ VỚI VI XỬ LÝ: Bộ nhớ có vai trò rất quan trọng trong hệ thống vi xử lý, hoạt động của bộ nhớ gắn liền với hoạt động của vi xử lý, là nơi lưu trữ dữ liệu để vi xử lý xử lý. do đó bộ nhớ luôn hiện diện trong hệ thống vi xử lý và khi sử dụng phải tiến hành kết nối. Bộ nhớ bao gồm cả ROM và RAM, chúng liên hệ với nhau và đợc kết nối với vi xử lý thông qua các bus: bus dữ liệu, bus địa chỉ, và bus điều khiển. Sơ đồ kết nối được trình bày ở dạng khối sau: Trong hệ thống có thể có một ROM một RAM hoặc số lượng ROM và RAM nhiều hơn nữa, việc bộ nhớ được truy xuất hoàn toàn phụ thuộc vào sự điều khiển của vi xử lý thông qua 1 IC giải mã 74LS138. Hình 1.8 : Sơ đồ khối kết nối giữa bộ nhớ với vi xử lý Trong hệ thống có thể có một ROM một RAM hoặc số lượng ROM và RAM nhiều hơn nữa. Việc bộ nhớ được truy xuất hoàn toàn phụ thuộc vào sự điều khiển của vi xử lý thông qua 1 IC giải mã 74LS138. Khi thiết kế vấn đề quan tâm đầu tiên đó là khả năng truy xuất bộ nhớ của vi xử lý, kế đến là dung lượng của bộ nhớ cần sử dụng. Trong thực tế, bộ nhớ có nhiều dung lượng khác nhau (2K, 4K, 8K… ), nhằm phục vụ cho việc thiết kế đồ án này nhóm thực hiện lựa chọn bộ nhớ có dung lượng 8Kbyte đó là vi mạch nhớ 2764 và 6264. V. VẤN ĐỀ GIẢI MÃ CHO BỘ NHỚ : Với mỗi bộ nhớ (1EPROM hay 1 RAM) để vi xử lý có thể truy xuất hết 8 Kbyte bộ nhớ thì phải tiến hành kết nối 13 đường địa chỉ A12A11A10A9A8A7A6A5A4A3A2A1A0 của vi xử lý đến 13 đường địa chỉ A12A11A10A9A8A7A6A5A4A3A2A1A0 của bộ nhớ. do đó tất cả 13 đường địa chỉ của EPROM và RAM đều được nối với 13 đường địa chỉ của vi xử lý. để truyền được tín hiệu với nhau thì các đường dữ liệu D7 – D0 của vi xử lý cũng phải được kết nối với các đường dữ liệu D7 – D0 của từng bộ nhớ. Đường tín hiệu điều khiển RD\ của vi xử lý được kết nối với ngõ vào OE\ của EPROM và RAM. Nếu chỉ như vậy thì khi vi xử lý gởi một địa chỉ ra để truy xuất thì các bộ nhớ đều nhận được địa chỉ này và sẽ cùng gởi dữ liệu ra hoặc cùng nhận dữ liệu vào. Như vậy dữ liệu mà vi xử lý nhận được sẽ không biết của ô nhớ nào. Vấn đề được đặt ra là bằng cách nào để vi xử lý truy xuất chính xác từng ô nhớ yêu cầu. Công việc này được giải quyết bằng cách thiết kế thêm phần giải mã địa chỉ để cho phép hoặc không cho phép bộ nhớ nào hoạt động. Riêng đối với bộ nhớ RAM vì RAM là bộ nhớ đọc – ghi nên phải nối thêm đường WR\ của vi xử lý tới đường WR\ của RAM. Sơ đồ mạch giải mã bộ nhớ: Vi xử lý Bộ nhớ ROM Bộ nhớ RAM Bus địa chỉ Bus dữ liệu Bus điều khiển Hình 1.10 : Sơ đồ mạch giải mã bộ nhớ ến CE\ của EPROM ến CS\ của RAM A13 A14 A15 A B C O0\ O1\ O2\ O3\ O4\ O5\ O6\ O7\ E3 E1\ E2\ 0 1 d d d s s s 1 0 0 0 0 s s s CHƯƠNG II: GIỚI THIỆU TẬP LỆNH CỦA VI XỬ LÝ 8085 I. NHÓM LỆNH DI CHUYỂN 8 BIT: 1. Lệnh truyền dữ liệu giữa các thanh ghi: + Cú pháp: MOV d, s  s (source): tượng trưng cho các thanh ghi phát.  d (destination): tượng trưng cho thanh nhận. + Mã đối tượng: + Các bit ddd và sss tra ở BẢNG 2.1 cuối tập lệnh. + Ý nghĩa: chuyển nội dung thanh ghi s vào thanh ghi d, nội dung thanh ghi s vẫn còn. + Lệnh này chiếm 1 byte, số chu kỳ xung clock = 4. + Thanh ghi trạng thái không thay đổi. (Tương tự cho các lệnh khác). 2. Lệnh chuyển dữ liệu thanh ghi vào ô nhớ: Cú pháp: MOV M, s 3. Lệnh chuyển dữ liệu từ ô nhớ vào thanh ghi: Cú pháp: MOV d, M 4. Lệnh truyền tức thời dữ liiệu 8 bit vào thanh ghi: Cú pháp: MVI d, D8 5. Lệnh truyền tức thời dữ liệu 8 bit vào ô nhớ: Cú pháp: MVI M, D8 II. NHÓM LỆNH TĂNG GIẢM 8 BIT: 1. Lệnh tăng nội dung thanh ghi: + Cú pháp: INR d + Mã đối tượng: + Ý nghĩa: Lệnh này tăng nội dung thanh ghi lên một đơn vị. + Lệnh nầy chiếm 1 byte , số chu kỳ xung clock = 4. + Lệnh nầy ảnh hưởng đến thanh ghi trạng thái trừ bit Cy không ảnh hưởng. (Tượng tự cho các lệnh khác) 2. Lệnh giảm nội dung thanh ghi: Cú pháp: DCR d 3. Lệnh tăng nội dung ô nhớ: Cú pháp: INR M 4. Lệnh giảm nội dung ô nhớ: Cú pháp: DCR M III. NHÓM LỆNH SỐ HỌC GIỮA THANH GHI A VÀ THANH GHI 1. Lệnh cộng thanh ghi: + Cú pháp: ADD s + Mã đối tượng: + Ý nghĩa: nội dung thanh ghi A được cộng với nội dung thanh ghi s, kết quả chứa trong thanh ghi A , nội dung thanh ghi s vẫn còn. + Lệnh này chiếm một byte, số chu kỳ xung clock = 4. + Lệnh này ảnh hưởng đến thanh ghi trạng thái. 2. Lệnh cộng thanh ghi có số nhớ ban đầu: 0 0 d d d 1 0 0 1 0 0 0 1 s s s + Cú pháp: ADC s + Mã đối tượng: + Ý nghĩa: nội dung thanh ghi A được cộng với nội dung thanh ghi s cộng với bit Cy, kết quả chứa trong thanh ghi A, nội dung thanh ghi s vẫn còn. + Lệnh nầy chiếm 1 byte, số chu kỳ xung clock = 4. + Lệnh nầy ảnh hưởng đến thanh ghi trạng thái. (Tương tự cho các lệnh khác) 3. Lệnh trừ thanh ghi: Cú pháp: SUB s 4. Lệnh trừ thanh ghi có số nhớ ban đầu: Cú pháp: SBB s 5. Lệnh and với thanh ghi: Cú pháp: ANA s 6. Lệnh Ex-or với thanh ghi: Cú pháp: XRA s 7. Lệnh or với thanh ghi: Cú pháp: ORA s 8. Lệnh so sánh với thanh ghi: Cú pháp: CMP s IV. NHÓM LỆNH SỐ HỌC GIỮA Ô NHỚ VỚI THANH GHI A: 1. Lệnh cộng với ô nhớ: + Cú pháp: ADD M + Mã đối tượng: + Ý nghĩa: nội dung thanh ghi A được cộng với nội dung ô nhớ có địa chỉ chứa trong cặp thanh ghi HL, kết quả chứa trong thanh ghi A, nội dung ô nhớ không thay đổi. + Lệnh nầy chiếm 1 byte, số chu kỳ xung clock = 7. + Lệnh nầy ảnh hưởng đến thanh ghi trạng thái. 2. Lệnh cộng ô nhớ có số nhớ ban đầu: + Cú pháp: ADC M + Mã đối tượng: + Ý nghĩa: nội dung thanh ghi A được cộng với dung ô nhớ có địa chỉ chứa trong cặp thanh ghi HL, kết quả chứa trong A, nội dung ô nhớ không thay đổi. + Lệnh nầy chứa 1 byte, số chu kỳ xung clock = 7. + Lệnh nầy ảnh hưởng đến thanh ghi trạng thái. (Tương tự cho các lệnh khác) 3. Lệnh trừ với ô nhớ: Cú pháp: SUB M 4. Lệnh trừ ô nhớ có số nhớ ban đầu: Cú pháp: SBB M 5. Lệnh and với ô nhớ: Cú pháp: ANA M 6. Lệnh Ex-or với ô nhớ: Cú pháp: XRA M 7. Lệnh or với ô nhớ: Cú pháp: ORA M 8. Lệnh so sánh với ô nhớ: Cú pháp: CMP M 1 0 0 0 0 1 1 0 1 0 0 0 1 1 1 0 0 0 0 0 0 0 0 1 8 bit thấp 8 bit cao V. NHÓM LỆNH SỐ HỌC GIỮA THANH GHI A VÀ DỮ LIỆU 8 BIT: 1. Lệnh cộng tức thời với dữ liệu 8 bit: + Cú pháp: ADI D8 + Mã đối tượng: + Ý nghĩa: nội dung thanh ghi A được cộng với dữ liệu 8 bit D8, kết quả chứa trong thanh ghi A. + Lệnh nầy chứa 2 byte, số chu kỳ xung clock = 7. + Lệnh nầy ảnh hưởng đến thanh ghi trạng thái. 2. Lệnh cộng tức thời với dữ liệu 8 bit có số nhớ ban đầu: + Cú pháp: ACI D8 + Mã đối tượng: + Ý nghĩa: nội dung thanh ghi A được cộng với dữ liệu 8 bit D8, cộng với bit Cy, kết quả chứa trong thanh ghi A. + Lệnh nầy chứa 2 byte, số chu kỳ xung clock = 7. + Lệnh nầy ảnh hưởng đến thanh ghi trạng thái. ( Tương tự cho các lệnh khác ) 3. Lệnh trừ tức thời với dữ liệu 8 bit: Cú pháp: SUI D8 4. Lệnh trừ tức thời với dữ liệu 8 bit có số nhớ ban đầu: Cú pháp: SBI D8 5. Lệnh and tức thời với dữ liệu 8 bit: Cú pháp: ANI D8 6. Lệnh Ex-or tức thời với dữ liệu 8 bit: Cú pháp: XRI D8 7. Lệnh or tức thời với dữ liệu 8 bit: Cú pháp: ORI D8 8. Lệnh so sánh tức thời với dữ liệu 8 bit: Cú pháp: CPI D8 VI. NHÓM LỆNH NẠP TỨC THỜI CẶP THANH GHI: 1. Lệnh nạp cặp thanh ghi BC: + Cú pháp: LXI B, D16 + Mã đối tượng: + Ý nghĩa: dữ liệu 16 bit D16 được nạp vào cặp thanh ghi BC. + Lệnh nầy chiếm 3 byte, số chu kỳ xung clock = 10. + Không ảnh hưởng đến thanh ghi trạng thái. (Tương tự cho các lệnh khác) 2. Lệnh nạp cặp thanh ghi DE: Cú pháp: LXI D, D16 3. Lệnh nạp cặp thanh ghi HL: Cú pháp: LXI H, D16 4. Lệnh nạp cặp thanh ghi SP: Cú pháp: LXI SP, D16 1 1 0 0 0 1 1 0 Dữ liệu 8 bit D8 1 1 0 0 1 1 1 0 Dữ liệu 8 bit D8 1 1 0 0 0 1 0 VII. NHÓM LỆNH PUSH: 1. Lệnh cất cặp thanh ghi BC: + Cú pháp: PUSH B +Mã đối tượng: +Ý nghĩa: nội dung cặp thanh ghi BC được copy vào ngăn xếp. Nội dung thanh ghi B được cất vào ngăn xếp tại địa chỉ (SP-1), thanh ghi C được cất vào ngăn xếp tại địa chỉ (SP- 2), nội dung thanh ghi SP giảm đi 2. + Lệnh này chiếm 1 byte, số chu kì xung clock =12. +Lệnh này không ảnh hưởng đến thanh ghi trạng thái. (Tương tự cho các lệnh khác) 2. Lệnh cất cặp thanh ghi DE: Cú pháp: PUSH D 3. Lệnh cất cặp thanh ghi HL: Cú pháp: PUSH H 4. Lệnh cất cặp thanh ghi AF: Cú pháp: PUSH PSW VIII. NHÓM LỆNH POP: 1. Lệnh chuyển nội dung ngăn xếp vào cặp thanh ghi: + Cú pháp: POP B + Mã đối tượng: + Ý nghĩa: chuyển nội dung từ ngăn xếp vào cặp thanh ghi BC. Nội dung ngăn xếp có địa chỉ chứa trong SP được chuyển cho thanh ghi C, nội dung của ngăn xếp có địa chỉ (SP+1) được chuyển cho thanh ghi B, sau lệnh POP nội dung của SP tăng lên 2. + Lệnh này chiếm một byte, số chu kì clock =12. + Lệnh này không ảnh hưởng đến thanh ghi teạng thái. (Tương tự cho các lệnh khác cùng nhóm). 2. Lệnh chuyển nội dung ngăn xếp vào cặp thanh ghi DE: + Cú pháp: POP D 3. Lệnh chuyển nội dung ngăn xếp vào cặp thanh ghi HL: + Cú pháp: POP H 4. Lệnh chuyển nội dung ngăn xếp vào cặp thanh ghi AF: + Cú pháp: POP PSW IX. NHÓM LỆNH CỘNG CẶP THANH GHI VỚI CẶP THANH GHI: 1. Lệnh cộng cặp thanh ghi BC: + Cú pháp: DAD B + Mã đối tượng: + Ý nghĩa: nội dung cặp thanh ghi BC được cộng với cặp thanh ghi HL, kết quả cất trong cặp thanh ghi HL. Thanh ghi L được cộng với C, thanh ghi H được cộng với B. + Lệnh này chiếm 1 byte, số chu kỳ clock =10. + Lệnh này chỉ làm ảnh hưởng đến bit trạng thái Cy. Tương tự cho các lệnh cùng nhóm này như sau: 2. Lệnh cộng cặp thanh ghi DE: + Cú pháp: DAD D 3. Lệnh cộng cặp thanh ghi HL: + Cú pháp: DAD H 4. Lệnh cộng cặp thanh ghi SP: + Cú pháp: DAD SP X. NHÓM LỆNH TĂNG CẶP THANH GHI: 1.Lệnh tăng cặp thanh ghi BC: 1 1 0 0 0 0 0 1 0 0 0 0 1 0 0 1 + Cú pháp: INX B + Mã đối tượng: +Ý nghĩa: nội dung cặp thah ghi BC tăng thêm một đơn vị. + Lệnh này chiếm 1 byte, số chu kỳ clock =6. + Lệnh này không làm ảnh hưởng đến thanh ghi trạng thái. (Tương tự cho các lệnh khác) 2. Lệnh tăng cặp thanh ghi DE: + Cú pháp: INX D 1. Lệnh tăng cặp thanh ghi HL: + Cú pháp: INX H 2. Lệnh tăng cặp thanh ghi SP: + Cú pháp: INX SP 0 0 0 0 0 0 0 1 0 0 1 1 0 0 1 0 8 bit thấp 8 bit cao XI. LỆNH GIẢM CẶP THANH GHI: 1. Lệnh giảm cặp thanh ghi BC: + Cú pháp: DCX D + Mã đối tượng: + Ý nghĩa: nội dung cặp thanh ghi BC giảm thêm 1 đơn vị. + Lệnh này chiếm 1 byte, số chu kỳ clock=6. + Lệnh này không làm ảnh hưởng đến thanh ghi trạng thái. (Tương tự cho các lênh khác) 2. Lệnh giảm cặp thanh ghi DE: + Cú pháp: DCX D 3. Lệnh giảm cặp thanh ghi HL: + Cú pháp: DCX H 4. Lệnh giảm cặp thanh ghi SP: + Cú pháp: DCX SP XII. NHÓM LỆNH GIÁN TIẾP DÙNG CẶP THANH GHI: 1. Lệnh lưu trữ gián tiếp dùng cặp thanh ghi BC: + Cú pháp: STAX B + Mã đối tượng: + Ý nghĩa: nội dung thanh gi được lưu trữ gián tiếp vào ô nhớ có địa chỉ chứa trong cặp thanh ghi BC. + Lệnh này không ảnh hưỏng đến thanh ghi trạng thái. (Tương tự cho các lênh khác cùng nhóm) 2. Lệnh lưu trữ gián tiếp dùng cặp thanh ghi DE: + Cú pháp: STAX D 3. Lệnh nạp gián tiếp dùng cặp thanh ghi BC: + Cú pháp: LDAX B + Mã đối tượng: + Ý nghĩa: nội dung ô nhớ có địa chỉ chứa trong cặp thanh ghi BC được chuyển vào thanh ghi A. (Tương tự cho các lệnh khác) 4. Lệnh lưu trữ gián tiếp dùng cặp thanh ghi DE: + Cú pháp: LDAX D XIII. NHÓM LỆNH TRỰC TIẾP: 1. Lệnh lưu trữ trực tiếp: + Cú pháp: STA ADDR + Mã đối tượng: + Ý nghĩa: nội dung thanh ghi A được lưu trữ vào ô nhớ có địa chỉ ADDR. + Lệnh này chiếm 3 byte, số chu kỳ clock=13. + Lệnh này không ảnh hưởng đến thanh ghi trạng thái. 2. Lệnh nạp trực tiếp: + Cú pháp: LDA ADDR + Mã đối tượng: 0 0 0 0 1 0 1 1 0 0 0 0 0 0 1 0 0 0 0 0 1 0 1 0 0 0 1 1 1 0 1 0 8 bit thấp 8 bit cao 0 0 1 0 1 0 1 0 8 bit thấp 8 bit cao 0 0 0 0 0 1 1 1 0 0 0 0 1 1 1 1 + Ý nghĩa: nội dung ô nhớ có địa chỉ là ADDR được chuyển vào thanh ghi A. + Lệnh này chiếm 3 byte, số chu kỳ xung clock =13. + Lệnh nầy không ảnh hưởng đến thanh ghi trạng thái. 3. Lệnh lưu trữ trực iếp cặp thanh ghi: + Cú pháp: SHLD ADDR + Mã đối tượng: + Ý nghĩa: nội dung cặp thanh ghi HL đựoc lưu vào 2 ô nhớ liên tiếp là ADDR và (ADDR+1). Nội dung thanh ghi L được lưu trữ vào ô nhớ có địa chỉ là ADDR, nội dung của thanh ghi H được lưu trữ vào ô nhớ có địa chỉ là (ADDR+1). + Lệnh nầy chiếm 3 byte, số chu kỳ xung clock = 16. + Lệnh nầy không ảnh hưởng đến thanh ghi trạng thái. 4. Lệnh nạp trực tiếp cặp thanh ghi: + Cú pháp: LHLD ADDR + Mã đối tượng: + Ý nghĩa: nội dung của 2 ô nhớ có địa chỉ liên tiếp là ADDR và (ADDR+1) được lưu trữ vào cặp thanh ghi HL. Nội dung của ô nhớ có địa chỉ ADDR được nạp vào thanh ghi L, nội dung của ô nhớ có địa chỉ (ADDR+1) được nạp vào thanh ghi H. + Lệnh này chiếm 3 byte, số chu kỳ xung clock =13. + Lệnh này không ảnh hưởng đến thanh ghi trạng thái. XIV. NHÓM LỆNH XOAY THANH GHI A: 1. Lệnh dịch thanh ghi A sang trái: + Cú pháp: RLC + Mã đối tượng: + Ý nghĩa: nội dung thanh ghi A dịch từ phải sang trái, bit MSB được chuyển sang bit Cy và bit LSB. + Lệnh này chiếm 1byte, số chu kỳ lock =4. + Lệnh này chỉ ảnh hưởng đến bit trạng thái Cy. 2. Lệnh dịch thanh ghi A sang phải: + Cú pháp: RRC + Mã đối tượng: + Ý nghĩa: nội dung thanh ghi A dịch từ trái sang phải, bit LSB được chuyển sang bit Cy và bit MSB. + Lệnh này chiếm 1byte, số chu kỳ lock =4. + Lệnh này chỉ ảnh hưởng đến bit trạng thái Cy. ( Tương tự cho các lệnh khác). 3. Lệnh dịch thanh ghi A sang trái thông qua bit Cy: + Cú pháp: RAL 4. Lệnh dịch thanh ghi A sang phải thông qua bit Cy: 0 0 1 0 0 0 1 0 8 bit thấp 8 bit cao 1 1 0 0 0 0 1 1 8 bit thấp 8 bit cao 1 1 0 0 0 0 1 0 8 bit thấp 8 bit cao 1 1 0 0 1 1 0 1 8 bit thấp 8 bit cao + Cú pháp: RAR XV. NHÓM LỆNH NHẢY: 1. Lệnh nhảy không điều kiện: + Cú pháp: JMP ADDR + Mã đối tượng: + ý nghĩa: vi xử lí sẽ nhảy đến địa chỉ ADDR để tiếp tục thực hiện chương trình. + Lệnh này chiếm 3 byte, số chu kỳ clock =10. + Lệnh này không ảnh hưởng đến thanh ghi trạng thái. 2. Lệnh nhảy khi bit Z=0: +Cú pháp: JNZ ADDR + Mã đối tượng: + Ý nghĩa: vi xử lí sẽ nhảy đến địa chỉ ADDR để tiếp tục chương trình khi bit Z=0, ngay sau khi thực hiện lệnh ảnh hưởng đến bit z của thanh ghi trạng thái. + Lệnh này chiếm 3 byte, số chu kỳ clock là 7/10. + Lệnh này không ảnh hưởng đến thanh ghi trạng thái. ( Tương tự cho các lệnh khác). 3. Lệnh nhảy khi bit Z=1: + Cú pháp: JZ ADDR 4. Lệnh nhảy khi bit C=0: + Cú pháp: JNC ADDR 5. Lệnh nhảy khi bit C=1: + Cú pháp: JC ADDR 6. Lệnh nhảy khi bit P=0: + Cú pháp: JPO ADDR 7. Lệnh nhảy khi bit P=1: + Cú pháp: JPE ADDR 8. Lệnh nhảy khi bit S=0: + Cú pháp: JP ADDR 9. Lệnh nhảy khi bit S=1: + Cú pháp: JM ADDR XVI. NHÓM LỆNH GỌI: 1. Lệnh gọi không điều kiện: + Cú pháp: CAAL ADDR + Mã đối tượng: + Ý nghĩa: vi xử lý sẽ thực hiện chương trình tại địa chỉ ADDR sau đó sẽ trở về chương trình chính khi gặp lệnh trở về. + Lệnh này chiếm 3 byte, số chu kỳ clock =18. + Lệnh này không ảnh hưởng đến thanh ghi trạng thái. 1 1 0 0 1 1 0 1 8 bit thấp 8 bit cao 2. Lệnh gọi khi Z=0: + Cú pháp: CNZ ADDR + Mã đối tượng: + Ý nghĩa: vi xử lý sẽ thực hiện chương trình tại ADDR khi bit Z=0, ngay sau khi thực hiện lệnh ảnh hưởng đến bit Z của thanh ghi trạng thái. Sau đó sẽ trở về chương trình chính khi gặp lệnh trở về. + Lệnh này chiếm 3 byte, số chu kỳ clock =9/18. + Lệnh này không ảnh hưởng đến thanh ghi trạng thái. ( Tương tự cho các lệnh khác). 3. Lệnh gọi khi bit Z=1: + Cú pháp: CZ ADDR 4. Lệnh gọi khi bit C=0: + Cú pháp: CNC ADDR 5. Lệnh gọi khi bit C=1: + Cú pháp: CC ADDR 6. Lệnh gọi khi bit P=0: + Cú pháp: CPO ADDR 7. Lệnh gọi khi bit P=1: + Cú pháp: CPE ADDR 8. Lệnh gọi khi bit S=0: + Cú pháp: CP ADDR 9. Lệnh gọi khi bit S=1: + Cú pháp: CM ADDR XVII. NHÓM LỆNH TRỞ VỀ TỪ CHƯƠNG TRÌNH CON: 1. Lệnh RET không điều kiện: + Cú pháp: RET + Mã đối tượng: + Ý nghĩa: lệnh này sẻ kết thúc chương trình con, vi xử lý sẽ trở lại chương trình chính tiếp tục phần chương trình còn lại. + Lệnh này chiếm 1 byte, số chu kỳ xung clock=10. + Thanh ghi trạng thái không đổi. 2. Lệnh trở về khi Z=0: + Cú pháp: RNZ + Mã đối tượng: + Ý nghĩa: lệnh này sẽ kết thúc chương trình con khi bit Z=0, vi xử lý sẽ trở lại chương trình chính tiếp tục phần chương trình còn lại, nếu không thỏa điều kiên chương trình con sẽ thực hiện các lệnh tiếp theo. + Lệnh này chiếm 1 byte, số chu kỳ clock=6/12. + Thanh ghi trạng thái không thay đổi. ( Tương tự cho các lệnh khác). 3. Lệnh trở về khi Z=1: + Cú pháp: RZ 4. Lệnh trở về khi C=0: + Cú pháp: RNC 5. Lệnh trở về khi C=1: 1 1 0 0 1 0 0 1 1 1 0 0 0 0 0 0 Bảng tra các thanh ghi: Register ddd or sss B 000 C 001 D 010 E 011 H 100 L 101 M 110 A 111 Bảng 2.1 + Cú pháp: RC 6. Lệnh trở về khi P=0: + Cú pháp: RPO 7. Lệnh trở về khi P=1: + Cú pháp: RPE 8. Lệnh trở về khi S=0: + Cú pháp: RP 9. Lệnh trở về khi S=1: + Cú pháp: RM XVIII. NHÓM LỆNH DI CHUYỂN CẶP THANH GHI 1. Lệnh trao đổi nội dung 2 cặp thanh ghi: + Cú pháp : XCHG + Mã đối tượng: + Ý nghĩa: nội dung cặp thanh ghi HL và DE được trao đổi cho nhau. Thanh ghi H trao đổi với D thanh ghi L trao đổi với E. + Lệnh này chiếm 1 byte, số chu kỳ xung clock = 4. + Thanh ghi trạng thái không thay đổi. ( Tương tự cho các lệnh khác ). 2. Lệnh trao đổi nội dung cặp thanh ghi với ô nhớ: + Cú pháp : XTHG 3. Lệnh di chuyển nội dung cặp thanh ghi: + Cú pháp : SPHL 4. Lệnh nạp cặp thanh ghi PC : + Cú pháp : PCHL XIX. NHÓM LỆNH XUẤT NHẬP 1. Lệnh nhập dữ liệu từ port: + Cú pháp: IN port-addr + Mã đối tượng: + Ý nghĩa: nhập nội dung của có địa chỉ port- addr vào thanh ghi A. Địa chỉ port-addr có độ dài 1 byte. + Lệnh này chiếm 2 byte, số chu kỳ xung clock = 10. + Thanh ghi trang thái không thay đổi. (Tương tự cho các lệnh khác). 2. Lệnh xuất dữ liệu ra port: + Cú pháp: OUT port-addr 3. Lệnh cho phép ngắt: + Cú pháp: EI 4. Lệnh không cho phép ngắt: + Cú pháp: DI 5. Lệnh read interrupt mask: + Cú pháp: RIM 6. Lệnh set interrupt mask: + Cú pháp: SIM XX. NHÓM LỆNH ĐẶC BIỆT: 1. Lệnh nghịch đảo nội dung thanh ghi A: + Cú pháp: CMA 1 1 0 1 1 0 1 1 port-addr 1 1 1 0 1 0 1 1 2. Lệnh đặt bit carry: + Cú pháp: STC 3. Lệnh nghịch đảo bit carry: + Cú pháp: CMC 4. Lệnh điều chỉnh thập phân: + Cú pháp: DAA 5. Lệnh nop: + Cú pháp: NOP 6. Lệnh dừng: + Cú pháp: HLT XXI. VÍ DỤ MINH HỌA TẬP LỆNH: Chương trình nhấp nháy chuỗi "-HÀ-NỘI-" trên 8 led: Org 7108h ;địa chỉ bắt đầu nhập mã chuổi Db, 40h, 76h, 77h, 40h, 37h, 3fh, 30h, 40, ;khai báo mã của chuỗi Org 6200h Vd1: lxi h, 7108h ;nạp địa chỉ quản lý dữ liệu vào thanh ghiHL Mvi c, 08h ;làm biến đếm cho chương trình hiển thị Vd2: mov a, m ;lấy dữ liệu Sta 0a000h ;gởi ra led hiển thị Inr l ;tăng lên 1 để lấy byte tiếp theo Dcr c ;giảm biến đếm Jnz vd2 ;nhảy về vd2 khi chưa gởi đủ 8 byte Mvi a, 01h ;nạp thời hằng delay1 giây Call 0310h ;gọi chương trình con delay Mvi c, 08h ;làm biến điếm cho chương trình xóa Mvi a, 00h ;nạp 00 vào A Vd3 sta 0a000h ;gởi ra led để xóa Dcr c ;giảm biến đếm Jnz vd3 ;quay lại vd3 nếu chưa xóa đủ 8 led Mvi 0, 01h ;nạp thời hằng delay Call 0310h ;gọi chương trình delay Jmp vd1 ;quay lại làm lại chu kỳ kế. CHƯƠNG III: GIAO TIẾP VỚI MÁY TÍNH I. GIAO TIẾP SONG SONG: GIAO TIẾP QUA CỔNG MÁY IN 1.1 Vài nét cơ bản về cổng máy in: Việc nối máy in với máy tính được thực hiên qua ổ cắm 15 chân ở phía sau máy tính. Nhưng đây không phải chỉ là chỗ nối với máy in mà khi sử dụng máy tính vào việc khác, như truyền dữ liệu từ máy tính tới một thiết bị khác, hay điều khiển thiết bị bằng máy tính thì việc ghép nối cũng được ghép nối qua cổng máy in. Qua cổng này dữ liệu được truyền đi song song, nên đôi khi còn được gọi là cổng ghép nối song song và tốc độ truyền cũng đạt đến mức đáng kể. Tất cả các đường dẫn của cổng máy in đều tương thích với TTL. Nghĩa là chúng đều cung cấp mức điện áp nằm giữa 0V đến 5V. do đó ta cần lưu ý là các đường dẫn vào cổng này không được đặt mức điện áp quá lớn. Sự sắp xếp các chân của cổng máy in với tất cả các đường dẫn được mô tả như sau: Chức năng các chân Chân Ký hiệu Out/in Chức năng 1 2 .. 9 10 11 12 13 14 15 16 17 18 ..25 Strobe D0 .. D7 ACK Busy PE SLCT AF ERROR INIT SLCTN GND Out Out In In In In Out In Out Out Byte được in Các đường dữ liệu D0 .. D7. Phần thu báo cho phần phát biết đã thu xong một kí tự Phần tín hiệu do phần thu báo cho phần phát biết là phần thu đang bận Báo hết giấy Báo chọn máy in Máy tính báo ra máy in tự nạp giấy Báo các lỗi của máy in Reset máy in Chọn máy in Nối đất 13 1 25 14 O O O O O O O O O O O O O O O O O O O O O O O O O HÌNH 3.1 1.3 Trao đổi với các đường dẫn tín hiệu: LPT1: Gồm có 3 thanh ghi: thanh ghi dữ liệu, thanh ghi trạng thái và thanh ghi điều khiển. a. Thanh ghi dữ liệu: gồm có 8 bit dữ liệu, có địa chỉ là 378h. D7 D6 D5 D4 D3 D2 D1 D0 b. Thanh ghi trang thái: có địa chỉ là 379h. D7 D6 D5 D4 D3 D2 D1 D0 c. Thanh ghi điều khiển có địa chỉ: 37AH D7 D6 D5 D4 D3 D2 D1 D0 1.4. Hoạt động của việc trao đổi dữ liệu: a. Hoạt động của phần phát: ERROR SLCT PE ACK BUSY Strobe AF INIT SLCTIN ( Ngắt 8259 ) HÌNH 3.2 CHÂN SỐ : 9 8 7 6 5 4 3 2 + đọc Busy cho đến khi Busy\ = 1. + gửi dữ liệu ra bus dữ liệu + cho Strobe = 0. + chuẩn bị dữ liệu tiếp theo + quay về bước 1 b. Hoạt động của phần thu: + đọc Strobe cho đến khi Strobe = 1. + Busy = 0, ACK = 0. + đọc dữ liệu vào. + đưa ACK = 1. + xử lý dữ liệu. + cho Busy = 1 để phát ký tự tiếp theo + quay về bước 1 BUSY = 1 BEGIN GỞI DỮ LIỆU STROBE = 1 ACK = 1 STROBE = 0 HẾT FILE THOÁT RA CHUẨN BỊ DỮ LIỆU TIẾP THEO HÌNH 3.3 LƯU ĐỒ PHÁT GIAO TIẾP QUA SLOT CARD. (có địa chỉ từ 300..31FH). BEGIN STROBE =1 BUSY =1 , ACK =0 ĐỌC DỮ LIỆU XỬ LÝ DỮ LIỆU ACK = 1 BUSY = 1 LƯU ĐỒ THU HÌNH 3.4 Trong máy tính người ta chế tạo sẵn các slot cho phép người sử dụng tính năng của máy vi tính bằng cách gắn thêm các thiết bị vào nó. Mỗi slot đều có các đường dữ liệu (data), địa chỉ (address), các đường +5V, – 5V, + 12V, - 12V và các đường điều khiển như CLK, IRQ, RESET, /IOW, IOR … vì vậy nếu thiết kế mạch giao tiếp qua slot sẽ giảm được rất nhiều linh kiện, giảm được bộ nguồn bên ngoài, dễ điều khiển, giá thành thấp nên đồng thời tốc độ truyền dữ liệu cũng nhanh. Tuy nhiên bên cạnh những ưu điểm nó cũng có những nhược điểm như: do slot card giao tiếp được gắn bên trong máy nên cách giao tiếp này khó nhận được dữ liệu từ bên ngoài. Nó bị hạn chế về khoảng cách làm việc đồng thời mỗi lần sử dụng phải mở ráp máy gây bất tiện cho người sử dụng. Các rãnh cắm trong máy tính PC Ở máy tính PC/XT rãnh cắm trong máy tính chỉ có 1 loại với độ rộng là 8 bit và tuân theo tiêu chuẩn ISA (Industry Standard Architecture). Từ máy tính AT trở đi việc bố trí chân trên rãnh cắm trở lên phức tạp hơn, tùy theo tiêu chuẩn khi lựa chọn máy tính, các loại rãnh cắm theo tiêu chuẩn khác nhau có thể kiểm tra như sau: + Rãnh cắm 16 bit theo tiêu chuẩn ISA (Industry standard Architecture) + Rãnh cắm PS/2 với 16 bit theo tiêu chuẩn MCA (Micro Channel Architecture) + Rãnh cắm PC/2 với 32 bit theo tiêu chuẩn MCA . + Rãnh cắm 32 bit theo tiêu chuẩn EISA (Extended Micro Channel Architecture) + Rãnh cắm 32 bit theo tiêu chuẩn VESA + Rãnh cắm 32 bit theo tiêu chuẩn PCI. Cho đến nay phần lớn các card ghép nối dùng trong kỹ thuật đo lường và điều khiển đều được chế tạo để đặt vào rãnh cắm theo tiêu chuẩn ISA. GIAO TIẾP NỐI TIẾP QUA CỔNG COM RS232 1. VÀI NÉT CƠ BẢN VỀ CỔNG NỐI TIẾP: Cổng nối tiếp RS232 là một loại giao diện phổ biến rộng rãi nhất, ta còn gọi là cổng COM1, COM2 để tự do cho các ứng dụng khác nhau. Giống như cổng máy in, cổng nối tiếp RS232 cũng được sử dụng rất thuận tiện trong việc ghép nối máy tính với các thiết bị ngoại vi. Việc truyền dữ liệu qua cổng RS232 được tiến hành theo cách nối tiếp, nghĩa là các bit dữ liệu được gởi đi nối tiếp với nhau trên một đường dẫn. Trước hết loại truyền này có khả năng dùng cho những khoảng cách lớn hơn, bởi vì khả năng gây nhiễu là nhỏ đáng kể hơn là khi dùng một cổng song song. Việc dùng cổng song song có một nhược điểm đáng kể là cáp truyền nhiều sợi và vì vậy rất đắt tiền, hơn nữa mức tín hiệu nằm trong khoảng 0..5V đã tỏ ra không thích ứng với khoảng cách lớn . Trên hình 3.5 là sự bố trí chân của phích cắm RS232 của máy tính PC: CHÂN (loại 9 chân ) CHÂN ( loại 25 chân ) KÝ HIỆU Ý NGHĨA 1 2 3 4 5 6 7 8 9 8 3 2 20 7 6 4 5 22 DCD RxD TxR DTR GND DSR RTS CTS RI Data carrier detect Nhận dữ liệu Phát dữ liệu Dữ liệu đầu cuối sẵn sàng Nối đất Thiết bị thông tin sẵn sàng Yêu cầu gửi Thiết bị thông tin sẵn sàng truyền Ring in dicator Việc truyền dữ liệu xẩy ra trên 2 đường dẫn qua chân cắm ra TxD, gửi dữ liệu của nó đến thiết bị khác. trong khi đó dữ liệu mà máy tính nhận được dẫn đến chân RxD. các tín hiệu khác đóng vai trò như tín hiệu hỗ trợ khi trao đổi thông tin và vì thế không phải trong mọi ứng dụng đều dùng đến. Mức tín hiệu trên chân ra RxD tùy thuộc vào đường dẫn TxD và thông tin thường nằm trong khoảng – 12V.. + 12V các bit dữ liệu được đảo ngược lại. Mức điện áp ở mức cao nằm trong khoảng – 3V và – 12V và mức thấp nằm trong khoảng từ + 3Vvà +12V . Trạng thái tĩnh trên đường dẫn có mức điện áp – 12V. Bằng tốc độ baud ta thiết lập tốc độ truyền dữ liệu các giá trị thông thường là 300, 600, 1200, 2400, 4800, 9600, và 19200 baud, Ký hiệu baud là số lượng bit truyền trong 1s. Còn một vấn đề nữa là khuôn mẫu (Format) truyền dữ liệu cần phải được thiết lập như nhau cả bên gửi cũng như bên nhận các thông số truyền có thể được thiết lập trên máy tính PC bằng các câu lệnh trên DOS. Ngày nay Windows cũng có các chương trình riêng để sử dụng, 1 2 3 4 5 6 7 8 9 O O O O O O O O O HÌNH 3.5 1 13 14 25 O O O O O O O O O O O O O O O O O O O O O O O O O khi đó các thông số truyền dữ liệu như: tốc độ baud, số bit dữ liệu, số bit dừng, bit chẵn lẻ (parity) có thể được thiết lập một cách rất đơn giản. 2. SỰ TRAO ĐỔI CỦA CÁC ĐƯỜNG TÍN HIỆU: Cũng như ở cổng máy in, các đường dẫn tín hiệu riêng biệt cũng cho phép trao đổi qua lại các địa chỉ trong máy tính PC. trong trường hợp này người ta thường sử dụng những vi mạch có độ tích hợp cao để có thể hợp nhất nhiều chức năng trên 1 chip. Ở máy tính PC thường có một bộ phát/nhận không đồng bộ vạn năng gọi tắt là UART: Universal Asynchronous Receiver/Transmister. Để điều khiển sự trao đổi thông tin giữa máy tính và các thiết bị ngoại vi. phổ biến nhất là vi mạch 8250 của hãng NSC hoặc các thiết bị tiếp theo, chẳng hạn như 16C550. Bộ AURT này có 10 thanh ghi để điều khiển tất cả chức năng của việc nhập vào, xuất ra dữ liệu theo cách nối tiếp liên quan đến nội dung của phần này chỉ đề cập đến hai điều đáng quan tâm đó là: thanh ghi điều khiển modem và thanh ghi trạng thái modem. a. Thanh ghi điều khiển modem: D7 D6 D5 D4 D3 D2 D1 D0 0 0 0 LOOP OUT2 UOT1 RTS DTR D0 =1 đưa /DTR =0 D0 =0 đưa /DTR =1 D1 =1 đưa /RTS =0 D1 =0 đưa /RTS =1 OUT1 và OUT2 điều khiển đầu ra phụ b)Thanh ghi trạng thái modem: (địa chỉ cơ bản +6) RLSD RI DSR CTS RLSD RI DSR CTR Lại cũng giống như ở cổng ghép nối với máy in, các Thanh ghi được trao đổi qua ô nhớ trong vùng vào/ra (input/output). Địa chỉ đầu tiên có thể tới được của cổng nối tiếp gọi là địa chỉ cơ bản (basic Address) các địa chỉ của các thanh ghi tiếp theo được đạt tới bằng việc cộng thêm số thanh ghi đã gặp của bộ UART vào địa chỉ cơ bản. Địa chỉ cơ bản của cổng nối tiếp của máy tính PC được tóm tắt trong bảng sau: CỔNG ĐỊA CHỈ CƠ BẢN COM 1 COM 2 COM 3 COM 4 3F8H 2F8H 3E8H 2E8H 1 nếu RI có biến đổi 1: nếu có sự thay đổ các tín hiệu tương ứng Có các giá trị của các bít out 2 out 1 , DTR, RTS, trong MCR khi bit LOOP = 1 CHƯƠNG IV: GIỚI THIỆU HỆ THỐNG KIT VI XỬ LÝ 8085 I. GIỚI THIỆU CẤU TRÚC PHẦN CỨNG KIT VI XỬ LÝ 8085: 1. Tần số làm việc: + Vi xử lý 8085 của Intel với tần số hoạt động 6MHz. + Các chương trình về thời gian được viết tương ứng tại địa chỉ này. 2. Tổ chức bộ nhớ: a. Bộ nhớ EPROM: Có dung lượng 16kbyte sử dụng 2 EPROM 2764, chương trình hệ thống chứa ở EPROM thứ nhất, EPROM thứ 2 chưa sử dụng được thiết kế ở dạng socket. Socket của EPROM thứ 2 có thể sử dụng được cho EPROM có dung lượng 2 kbyte, 4kbyte, 8kbyte và có thể sử dụng cho bộ nhớ RAM có dung lượng 8kbyte bằng cách chuyển đổi các Jump trên mainboard. + EPROM 1 có địa chỉ từ 0000h – 1FFFh. + EPROM 2 có địa chỉ từ 2000h – 3FFFh. Cách sử dụng các Jump trên main: + Khi sử dụng EPROM có dung lượng 2kbyte (IC 2716): hãy kết nối chân số 2 và chân số 3 của Jump 1. Vùng địa chỉ của EPROM là 2000h – 27FFh. + Khi sử dụng EPROM có dung lượng 4kbyte (IC 2732): hãy kết nối chân số 2 và chân số 1 của Jump 1. Vùng địa chỉ của EPROM là 2000h – 2FFFh. + Khi sử dụng EPROM có dung 8kbyte ( IC 2764): hãy kết nối chân số 2 và chân số 1 của Jump 1, kết nối chân số 2 và chân số 3 của Jump 2. Vùng địa chỉ của EPROM là 2000h – 3FFFh. + Khi sử dụng RAM có dung lượng 8kbyte (IC 6264): hãy kết nối chân số 2 và chân số 1 của Jump 1, kết nối chân số 2 và chân số 1 của Jump 2. Vùng địa chỉ của RAM là 2000h –3FFFh. b. Bộ nhớ RAM: Bộ nhớ RAM có dung lượng 16kbyte sử dụng 2 IC 6264. + RAM 1 có địa chỉ từ 6000h – 7FFFh. + RAM 2 có địa chỉ từ 8000h – 9FFFh. + Các vùng nhớ RAM đã sử dụng có địa chỉ là 87F8h đến 87FFh. Chương trình có thể sữ dụng toàn bộ các vùng nhớ RAM còn lại. 3. Các IC ngoại vi: Trong hệ thống có sử dụng 3 IC 8255A dùng để giao tiếp với thiết bị ngoại vi Bảng đồ ô nhớ của 3 IC 8255: + IC 8255 –3 dùng để quét bàn phím cho hệ thống máy. + Các ngõ ra của IC 8255 –1, 8255-2 được đưa ra bên ngoài bằng connect 64 chân có sơ đồ chân tra ở bảng tra. Mỗi IC 8255 có 3 port, mỗi port có 8 chân điều khiển nên số chân đưa ra bên ngoài để điều khiển là 48. 4. Khối giải mã hiển thị sử dụng IC 8279: Gồm có 8 led với thứ tự led 1 tới led 8 theo hướng từ phải sang trái như hình 4.2. Địa chỉ của các port 8255-1 8255-2 8255-3 Port A 00H 10H 20H Port B 01H 11H 21H Port C 02H 12H 22H Thanh ghi điều khiển 03H 13H 23H a p g f e d b c LED8 LED7 LED6 LED5 LED4 LED3 LED2 LED1 Vùng địa chỉ sử dụng của IC 8279 là A000H-A001H, trong đó: + Địa chỉ A000H là đại chỉ dùng để gửi dữ liệu cần hiển thị. + Địa chỉ A001H là địa chỉ dùng để gởi từ điều khiển ra IC 8279. a. Cấu trúc byte dữ liệu của led: dp g f e d c b a Hệ thống sử dụng led loại Anode chung nên muốn đoạn nào sáng thì bit dữ liệu tương ứng với đoạn đó bằng 1. Đoạn nào tắt thì bit tương ứng với đoạn đó bằng 0. Ví dụ muốn sáng số "9" thì byte dữ liệu gửi ra led là: 0 1 1 0 1 1 1 1 Tương ứng với số HEX là 6FH. Sau đây là mã 7 đoạn của một số chữ số và chữ cái: P g f e d c b a Hex Số 0 0 0 1 1 1 1 1 1 3F Số 1 0 0 0 0 0 1 1 0 06 Số 2 0 1 0 1 1 0 1 1 5B Số 3 0 1 0 0 1 1 1 1 4F Số 4 0 1 1 0 0 1 1 0 66 Số 5 0 1 1 0 1 1 0 1 6D Số 6 0 1 1 1 1 1 0 1 7D Số 7 0 0 0 0 0 1 1 1 07 Số 8 0 1 1 1 1 1 1 1 7F Số 9 0 1 1 0 1 1 1 1 6F Chữ A 0 1 1 1 0 1 1 1 77 Chữ B 0 1 1 1 1 1 0 0 7C Chữ C 0 0 1 1 1 0 0 1 39 Chữ D 0 1 0 1 1 1 1 0 5E Chữ E 0 1 1 1 1 0 0 1 79 Chữ F 0 1 1 1 0 0 0 1 71 Chữ P 0 1 1 1 0 0 1 1 73 Chữ H 0 1 1 1 0 1 1 0 76 Chữ U 0 0 1 1 1 1 1 0 3E Có thể tìm các mã tương ứng còn lại. b. Có 2 cách hiển thị dữ liệu các led: Hình 4.2 + Cách 1: khi gửi dữ liệu mới ra địa chỉ A000H thì dữ liệu này sữ hiển thị ở led 1, dữ liệu trước đó của led sẽ dịch sang trái theo chiều mũi tên trong hình 3. Riêng byte dữ liệu trước của led 8 sẽ dịch mất đi. Mũi tên nằm ngang chỉ chiều nhận dữ liệu từ vi xử lý đưa đến led 1, các mũi tên vòng cung chỉ dịch chuyển dữ liệu. Nếu muốn xoá hết màn hình 8 led thì gởi 8 byte 00 liên tiếp ra A000h. + Cách 2: Kiểu gởi dữ liệu ở cách 1 còn được gọi là kiểu dịch chuyển dữ liệu tuần tự. Bên cạnh đó 8279 còn cho phép gởi dữ liệu trực tiếp đến bất kỳ led nào trong 8 led, tổ chức của led không có gì thay đay đổi địa chỉ gởi dữ liệu vẫn là A000H nhưng mổi led còn có thêm một địa chỉ điều khiển như trong hình 4.4. địa chỉ của led phải gởi ra địa chỉ A001H trước khi gởi dữ liệu ra địa chỉ A000H. 5. Khối giải mã bàn phím dùng 8255: Chương trình con giải mã bàn phím được viết tại địa chỉ 0223H, sử dung các thanh ghi B, D, E, A, khi gọi chương trình con 0223H: + Nếu không ấn phím thì sau khi thực hiện xong chương trình sẽ trở về chương trình chính với nội dung thanh ghi A = FFH. + Nếu có ấn phím thì mã của phím ấ chứa trong A. Chương trình nầy nếu có ấn phím hoặc không có ấn phím điều trở về sau khi thực hiện xong và phải cất dữ liệu trong các thanh ghi khi gọi chương trình con này. Bảng mã các phím số: LED8 LED7 LED6 LED5 LED4 LED3 LED2 LED1 Hình 4.3 LED8 LED7 LED6 LED5 LED4 LED3 LED2 LED1 Hình 4.3 80H 81H 82H 83H 84H 85H 86H 87H Phím Mã 4 00 5 01 6 02 7 03 Phím Mã 0 04 1 05 2 06 3 07 Phím Mã C 0C D 0D E 0E F 0F Phím Mã 8 08 9 09 A 0A B 0B Bảng mã các phím số: Bảng mã các phím chức năng: CHƯƠNG V: GIAO TIẾP NỐI TIẾP DÙNG VI MẠCH 8251 I. TRUYỀN THÔNG TIN NỐI TIẾP Việc truyền thông tin giữa các bộ phận nằm gần nhau trong hệ vi xử lý có thể được thực hiện thông qua bus song song mở rộng hoặc các mạch phối ghép song song. Trong đó các byte hoặc các từ được chuyển từ bộ phận này sang bộ phận khác trên một tập các đường mạch in hoặc dây cáp. Trong trường hợp cần phải truyền thông tin ở các thiết bị cách xa nhau làm sao tiết kiệm được số đường dây dẫn cần thiết cho việc truyền. Từ yêu cầu trên đã ra đời phương pháp truyền thông tin nối tiếp. Ở đầu phát dữ liệu song song đầu tiên được chuyển thành dữ liêu dạng nối tiếp sau đó được truyền đi liên tiếp trên một đường dây. Ở đầu thu, tín hiệu nối tiếp sẽ được biến đổi ngược lại để tái tạo tín hiệu dạng song song thích hợp cho việc xử lý tiếp theo. Trong thực tế có 2 phương pháp truyền thông tin kiểu nối tiếp: truyền đồng bộ và truyền không đồng bộ. Trong phương pháp truyền đồng bộ, dữ liệu được truyền theo từng mảng với tốc độ xác định. Mảng dữ liệu trước khi được truyền đi sẽ được gắn thêm ở đầu và ở cuối mảng các byte hoặc một nhóm bit định dấu đặc biệt. Ở hình 5.1 biểu diễn một bản tin để truyền đồng bộ theo giao thức BISYNC (giao thức truyền thông tin hệ 2 đồng bộ, binary synchronous communication protocal) đây thực chất là giao thức điều khiển theo byte, vì các byte (ký tự) đặc biệt được dùng để đánh dấu các phần khác nhau của bản tin. Trong cách truyền không đồng bộ, dữ liệu được truyền đi theo từng ký tư. Ký tự cần truyền đi được gắn thêm một bit đánh dấu ở đầu để báo bắt đấu ký tự (start) và 1 hoặc 2 bit đánh dấu cuối để báo kết thúc ký tự (stop). Vì cuối ký tự được nhận dạng riêng biệt nên nó có thể được truyền đi theo phương pháp không đồng bộ, được thể hiện trên hình 5.1. SYN SYN SOH STX TEXT ETX hay ETB BCC HEADER SYN : Ký tự đồng bộ SOH : Ký tự bắt đầu phần mào đầu HEADER : Phần mào đầu STX : Ký tự bắt đầu văn bản TEXT :Thân văn băn ETX : Ký tự kết thúc văn bản ETB : Ký tự kết thúc văn bản BCC : Ký tự kiểm tra khối HÌNH 5.1 Tuỳ theo loại mã được chọn dùng trong khi truyền (Baudot, Ascii,… ) độ dài cho mã ký tự có thể là 5 , 6 , 7, 8 bit. Tuỳ theo hệ thống truyền tin, bên cạnh các bit dữ liệu còn có thể tuỳ chọn có hay không có 1 bit parity để kiểm tra lỗi khi truyền có thể tuỳ chọn 1 hoăc 2 bit stop, nhưng bắt buộc phải có một bit start. Như vậy để truyền một ký tự theo phương pháp không đồng bộ, ngoài ký tự mang tin ta buộc phải truyền thêm ít nhất 2 và nhiều nhất là 4 bit phụ để tạo ra khung cho ký tự đó, vì thế phương pháp nầy tuy đơn giản nhưng có hiệu suất không cao. Tốc độ truyền dữ liệu theo phương pháp nối tiếp được đo bằng bit/s. Ngoài ra người ta cũng hay dùng đơn vị baud, đó là giá trị ngịch đảo của thời gian giữa các lần thay đổi mức tín hiệu, với dữ liệu chỉ có hai mức (0 và 1) và mỗi thay đổi mức tín hiệu chỉ mã hóa một bit thì có thể hiểu baud = bit/s, các tốc độ truyền thường gặp trong thực tế là 11, 300, 600, 1200, 2400, 4800, 9600, 19200 baud. Để tạo điều kiện dể dàng cho việc phối ghép đường truyền nối tiếp với hệ vi xử lý và để giảm tối đa các mạch phụ thêm ở bên ngoài người ta đã chế tạo ra các vi mạch tổ hợp cỡ lớn lập trình được có khả năng hoàn thành phần lớn các công việc cần thiết trong khi phối ghép. Đó là các mạch thu phát di bộ vạn năng IN8250/16450 của National và mạch thu phát đồng bộ – dị bộ vạn năng 8251 của Intel. II. VI MẠCH USART 8251: Trong phần này ta sẽ giới thiệu mạch 8251A đó là vi mạch USART có thể dùng cho cả hai kiểu truyền thông tin nối tiếp đồng bộ, dị bộ. Sơ đồ chân và sơ đồ thanh ghi được trình bày ở hình 5.3 1. Sơ đồ chân và sơ đồ khối a. nhóm tín hiệu ghép nối với vi xử lý gồm: - /CS nối với bộ giải mã địa chỉ A1.. An để chọn 2 thanh ghi. (A0 = 1điều khiển trạng thái, A0 = 0 đệm số liệu). - C/D nối với đường dây địa chỉ A0 để một trong 2 cặp thanh ghi trên. - /WR nối với chân /WR của vi xử lý. - /RD nối với chân /RD của vi xử lý. - CLK nối với đường dây CLK của vi xử lý. - Reset nối với đường dây reset của vi xử lý. - D0 … D7 nối với các đường dẫn D0…D7 của VXL. b. Nhóm tín hiệu ghép nối vối Modem - /DTR - /DSR - /RTS - /CTS c. Nhóm tín hiệu gép nối với đường dây truyền – nhận và KGN: - TxEMTY thanh ghi đệm truyền rỗng. Chiều của dòng ký tự Luôn ở mức cao Luôn ở mức thấp Start D0 D1 D2 D3 D4 D5 D6 Parity Stop Stop Mã của ký tự cần truyền HÌNH 5.2 : Khung của một ký tự ể truyền không ồng bộ - TxR cho số liệu truyền. - TxRDy báo số liệu truyền đã sẵn sàng. - RxRDy báo số liệu nhận đã sẵn sàng. - Syn det/Break : chỉ đồng bộ/đứt dòng tin. d. Nhóm tín hiệu ghép nối với máy phát xung nhịp. - TxD : nhịp truyền. - RxC : nhịp nhận.  1 2 3 4 5 6 7 8 9 10 11 12 13 14 28 27 26 25 24 23 22 21 20 19 18 17 16 15 8251A D1 D0 Vcc /RxC /DTR /RTS /DSR Reset CLK TxD TxEMPTY /CTS Syndet/BR TxRDY D2 D3 RxD GND D4 D5 D6 D7 /TxC /WR /CS C/D /RD RxRDY /CS /RD /WR C/D D0 D1 D2 D3 D4 D5 D6 D7 CLK RST RxRDY TxRDY TxEMTy Vcc GND /DSR /DTR /CTS /RTS Syn/BRK TxC RxC Thanh ghi truyền Thanh ghi đệm truyền Thanh ghi nhận Thanh ghi đệm nhận Thanh ghi chế độ Thanh ghi lệnh Thanh ghi trạng thái TxD RxD Hình 5.3 : Sơ ồ chân (a) và các thanh ghi (b) của 8251A (a) (b) /CS chíp chọn vi mạch /RD read – đọc /WR write – viết C/D control/data - điều khiển số liệu CLK – clock – nhịp D0..D7 data O/I – bus dữ liệu vào ra /TxC – transmit clock - nhịp truyền RxC – receiver clock RST – reset /DTR dada terminal ready /DSR – data set ready /RTS request to send /CTS clear to send TxD – transmit data RxD – receiver data TxRDy – transmit ready RxRDy – receiver ready TxEMTY – transmist register empty Syn/BRK- Break detect 2. Các thanh ghi: Ở hình 5.4a và hình 5.4b mô tả bộ thanh ghi của 8251, gồm: thanh ghi trạng thái và thanh ghi điều khiển. Hai thanh ghi trên có cùng một địa chỉ với A0 = 1, một dùng để ghi (/WR) lệnh điều khiển và một để đọc (/RD) trạng thái. Hai thanh ghi đệm số liệu ghi và đọc có cùng một địa chỉ (A0 = 0) và dùng để ghi và đọc số liệu cần truyền và nhận của KGN. Các lệnh cho các thanh ghi trên như bảng sau: /CE C/D /WR /RD LỆNH 0 0 0 0 1 1 1 0 0 x 0 1 0 1 x 1 0 1 0 x Ghi vào thanh ghi điều khiển (chế độ, lệnh). Đọc thanh ghi trạng thái. Ghi số liệu vào thanh ghi đệm truyền. Đọc số liệu từ thanh ghi đệm nhận. Trở kháng cao (không dùng). - Thanh ghi điều khiển - Thanh ghi trạng thái a. Thanh ghi điều khiển: - dùng để ghi: + lời điều khiển chế độ. Hình 5.4a D7 D6 D5 D4 D3 D2 D1 D0 Tốc độ truyền 00 đồng bộ 01 không đồng bộ x1 10 không đồng bộ x 16 11 không đồng bộ x64 Độ dài ký tự 00 5 bit 01 6bit 10 7bit 11 8 bit Điều khiển khung. 00 không giá trị 01 một bit dừng 10 1.5 bit dừng 11 2 bit dừng Bit chẵn lẻ X0 không kiểm tra chẳn lẻ 01 kiểm tra lẻ 10 kiểm tra chẵn b. Lời lệnh: D7 D6 D5 D4 D3 D2 Cho phép phát 1= cho phép Chế độ bất đồng bộ 1= tìm ký tự đồng bộ Ngắt mềm 1= xoá các thanh ghi Yêu cầu phát 1= đưa tín hiệu Xoá cờ báo lỗi 1= xoá cờ Gửi tín hiệu cắt 1= đưa TxD = 0 Cho phép thu 1= cho phép RxRDy Số liệu đầu cuối Sẵn sàng, DTR\ =1 EH IR RTS ER SBRK RxEN DTR TxEN HÌNH 5.4b c. thanh ghi trạng thái. Dùng để đọc lời trạng thái: Chỉ modem đã Sẵn sàng để truyền số liẹu Chỉ chữ đồng bộ đã được 8251 nhận Chỉ thanh ghi biến đổi song song - nối tiếp rỗng Chỉ 8251 sẵn sàng nhận 1 chữ hay lệnh để truyền Bit báo sai chẳn lẻ Pe= 1 khi có sai xóa bằng ER của lệnh Chỉ sẵn sàng nhận số liệu để truyền cho VXL Bit chỉ lỗi tràn Khi VXL chưa đọc lời trước, lời sau đã tới thì OE =1 xoá bằng ER của lệnh Bit chỉ sai khung (không đồng bộ) khi số bit dừng bị sai FE= 1 xoá bằng ER =1 Hình 5.4c D7 D6 D5 D4 D3 D2 D1 D0 DSR SYNDET FE OE PE TxEM RxRDy TxRDy * Với lời điều khiển chế độ: hình 5.4a - Chế độ đồng bộ: (trong, ngoài hai hay một ký tự đồng bộ SYNC) bởi nội dung ghi vào D7, D6. - Tốc độ truyền với giá trị: + D1D0 = 00: Dùng cho chế độ đồng bộ, tốc độ nơi thu bằng tốc độ nơi phát, không có sự thay đổi tần số xung nhịp. + D1D0=01 : dùng cho chế độ không đồng bộ, tốc độ giữa nơi thu và nơi phát không đổi. + D1D0=01: tốc độ thu = tốc độ truyền X1, tức tốc độ thu = tốc độ truyền. +D1D0=10: tốc độ thu =16x tốc độ truyền. + D1D0=11: tốc độ thu =64x tốc độ truyền. - Độ dài ký tự, tức độ dài một đơn vị tin SDU với các giá trị D3d2 = 00 (5bit), 01(6bit), 10(7bit) và 11(8bit) - Kiển tra chẵn lẻ D5D4 =00 (không kiểm tra), 01 (kiểm tra lẻ), 11 (kiểm tra chẵn) - Điều khiển khung, xác định số bit dừng. Với D7D6 = 01 – một bit dừng D7D6 = 10 – một bit rưỡi dừng D7D6 = 11 – hai bit dừng  Với lời lệnh (hình5.4b) ta có thể ghi lệnh để: - Điều khiển modem: DTR(D1=1), RTS(D5=1) - Xoá mềm( bằng chương trình có IR (D6=1) để xoá về 0 các thanh ghi nội - Xóa cờ báo lỗi ER (D4=1) - Ghi cho phép truyền TxEN (D0=1) cho phép nhận RxE(D2=1) - Gửi tín hiệu cắt ( các bit bằng 0-Break) để cắt dòng tin liên tục đang truyền. - Tìm ký tự đồng bộ EH(D7=1) trong chế độ đồng bộ  Thanh ghi trạng thái (hình 5.4c): dùng để đọc. - Sẵn sàng truyền TxRDY (D0=1), sẵn sàng nhận RXRDY( D1=1) - Thanh ghi đệm số liệu rỗng TxE (D2=1) - Tuy chỉ có một địa chỉ (CS\=0, A1=1) nhưng ta có thể ghi được 2 lời điều khiển chế độ và lời lệnh ở 2 thanh ghi điều khiển khác nhau vì còn có chung một flip flop nội điều khiển lần lượt vào hai thanh ghi trên III. ỨNG DỤNG 8251A ĐỂ TRUYỀN THÔNG TIN NỐI TIẾP: 1. Truyền thông tin nối tiếp giữa 2 kit VXL: a. Khởi phát 8251A: Muốn 8251 hoạt động đúng chế độ (không đồng bộ), tốc độ (300, 600, 1200, 2400, 4800, 9600bps hoặc lớn hơn), số bit tin (5, 6, 7, 8) có kiểm tra chẵn hoặc lẻ và xác đinh số bit dừng (1; 1,5; 2 bit) ta phải ghi lời điều khiển chế độ vào thanh ghi điều khiển cuả 8251. Ví dụ: Một 8251 có điạ chỉ gốc CS\ với 0FFF0h, cần trao đổi thông tin 8 bit, tốc độ x16 không có kiểm tra Parity chẵn lẻ, 2bit stop. Lời điều khiển là: 1 1 0 0 1 1 1 0 TxD RxD DTR\ 8251 DSR\ RTS\ CTS\ TxD RxD DTR\ 8251 DSR\ RTS\ CTS\ VXL2 VXL1 HÌNH 5.5 Lưu đồ khởi tạo 8251A 00h thanh ghi điều khiển Begin 03h AH AH - 1 AH = 0 ? Delay Nạp từ chế độ cào thanh ghi chế độ Delay End sai Đúng HÌNH 5.5 chương trình khởi phát: MOV DX, 0FFF2h MOV AL,00h OUT DX,AL MOV CX 2h D0 : LOOP D0 OUT DX, AL D1: MOV CX,2h LOOP D1 OUT DX, AL MOV CX,2h D2: LOOP D2 MOV AL, 40h OUT DX, AL MOV CX, 2h D3: LOOP D3 MOV AL, 11001110B OUT DX, AL MOV CX, 2h D4: LOOP D4 END 2. Truyền thông tin nối tiếp giữa kit VXL và máy tính: 1 5 6 9 O O O O O O O O O A 1 – A 11 D 0 –D 7 Reset CLK A 0 RD \ WR \ INTR INTA \ CS \ GND D 0 – D7 TxD Rest RxD CLK DTR C/D\ RD \ DSR\ WR\ RTS \ TxD CTS\ RxRDy Giải mã điạ chỉ Xử lý ngắt (8259A hai mức) 8251 VXL Cổng COM của máy tính HÌNH 5.6 CHƯƠNG VI: GIAO TIẾP SONG SONG DÙNG VI MẠCH 8255 I. GIỚI THIỆU VỀ VI MẠCH 8255A: Để vi xử lý giao tiếp với những thiết bị bên ngoài, người ta thường dùng vi mạch giao tiếp 8255A, vi mạch này có khả năng giao tiếp rất rộng, vừa có thể xuất dữ liệu, vừa có thể nhận dữ liệu tùy theo người lập trình điều khiển bằng cách thay đổi thông số của thanh ghi điều khiển. II. SƠ ĐỒ CHÂN, SƠ ĐỒ LOGIC, CHỨC NĂNG CÁC CHÂN CỦA VI MẠCH 8255A. Sơ đồ chân và sơ đồ logic của vi mạch 8255A được thể hiện qua hình vẽ: Hình 6.1 : Sơ đồ chân và sơ đồ logic của vi mạch 8255A Trong đó: Chân 1  4, 37  40 (PA0 – PA7): là các đường xuất nhập có tên là cổng A. Chân 18  25 (PB0 – PB7): là các đường nhập xuất có tên cổng B. Chân 10  13, 14  17 (PB0 – PB7): là các đường nhập xuất có tên cổng C. Chân 27  34 (D0 – D7): là các đường dữ liệu (data) hoạt động hai chiều, dẫn tín hiệu điều khiển từ vi xử lý ra các thiết bị bên ngoài đồng thời nhận các dữ liệu từ các thiết bị điều khiển bên ngoài vào vi xử lý. Chân 35 (Reset input): ngõ vào xóa, chân reset phải được nối với tín hiệu reset out của vi xử lý để không làm ảnh hướng đến mạch điều khiển. Khi reset, các cổng của 8255A là các ngõ vào, đồng thời tất cả các dữ liệu trên thanh ghi bên trong 8255A đều bị xóa, 8255A trở về trạng thái ban đầu săn sàng làm việc. Chân 6 (CS\): tín hiệu ngõ vào chip select (CS\) được điều khiển bởi vi xử lý, dùng để lựa chọn 8255A làm việc khi vi xử lý giao tiếp với nhiều thiết bị. Chân 5 (RD\): ngõ vào đọc dữ liệu (Read Input). Chân 36 (WR\) : ngõ vào ghi dữ liệu (Write Input). Chân 8,9 (A1, A0): ngõ vào địa chỉ (Address Input), dùng nhận địa chỉ vào để PA3 PA2 PA1 PA0 RD\ CS\ GND A1 A0 PC7 PC6 PC5 PC4 PC0 PC1 PC2 PC3 PB0 PB1 PB2 PA4 PA5 PA6 PA7 WR\ RESET D0 D1 D2 D3 D4 D5 D6 D7 Vcc PB7 PB6 PB5 PB4 PB3 1 20 21 40 D0 – D7 PA0 – PA7 PB0 – PB7 PC0 – PC7 RD\ WR\ RESET A0 A1 CS\ 8255A 8255A lựa chọn thanh ghi và các cổng. Bảng địa chỉ lựa chọn thanh ghi và các cổng: A1 A0 Cổng và thanh ghi 0 0 Cổng A 0 1 Cổng B 1 0 Cổng C 1 1 Thanh ghi điều khiển Chân 26 (Vcc) : nguồn 5 VDC. Chân 7 (GND) : GND 0 VDC. III. CẤU TRÚC BÊN TRONG VÀ HOẠT ĐỘNG CỦA VI MẠCH 8255A. 1. Sơ đồ khối cấu trúc bên trong của vi mạch 8255A. Hình 6.2: Sơ đồ khối cấu trúc bên trong của 8255A 2. Hoạt động của vi mạch 8255A: Từ sơ đồ khối cấu trúc bên trong của vi mạch 8255A ta thấy các cổng của 8255A được chia thành 2 nhóm: Nhóm A gồm cổng A và 4 bit cao của cổng C. Nhóm B gồm cổng B và 4 bit thấp của cổng C. Cấu hình làm việc của 2 nhóm sẽ do nội dung của thanh ghi điều khiển quyết định. Vi mạch 8255 giao tiếp với vi xử lý thông qua các đường sau : - Đường dữ liệu: gồm 8 đường dữ liệu (D0 - D7). Mã lệnh, các dữ liệu đều được truyền đi trên đường này. Port A Port C (4 bit cao) Nhóm A Port C (4 bit thấp) Port B Nhóm B Điều khiển nhóm A Điều khiển nhóm B Đệm bus dữ liệu Logic iều khiển ghi/ọc RD\ WR\ CS\ A0 A1 D7 – D0 PA7 – PA0 PC7 – PC4 PC3 – PC0 PB7 – PC0 - Đường địa chỉ: gồm 2 đường (A0 – A1) dùng để lựa chọn cổng hoặc thanh ghi điều khiển như đã trình bày ở phần trước. - Đường điều khiển: gồm các đường RD\, WR\, CS\, Reset dùng để điều khiển việc hoạt động của 8255A. Để sử dụng các cổng làm công cụ giao tiếp, người sử dụng phải gửi từ điều khiển ra thanh ghi điều khiển để 8255A định cấu hình làm việc cho các cổng đúng như yêu cầu của người lập trình. 3. Từ điều khiển: Từ điều khiển là dữ liệu được gởi tới thanh ghi điều khiển. Giá trị của từ điều khiển sẽ xác định cấu hình làm việc cho các cổng của 8255A, đó là việc lựa chọn chức năng nhập hay xuất của các cổng. a. Cấu trúc của từ điều khiển: Do các cổng của 8255A được chia làm hai nhóm nên từ điều khiển cũng được chia làm hai nhóm điều khiển tương ứng. Các bit D3, D4, D5, D6 dùng để xác định cấu hình cho nhóm A: - Bit D3 dùng để thiết lập 4 bit cao của cổng C. D3 = 0 cổng C là cổng xuất dữ liệu. D3 = 1 cổng C là cổng nhập dữ liệu. - Bit D4 dùng để thiết lập cổng A. D4 = 0 cổng A là cổng xuất dữ liệu. D4 = 1 cổng A là cổng nhập dữ liệu. - Bit D5 và D6 dùng thiếp lập mode điều khiển của nhóm A. D6D5 = 00 : nhóm A hoạt động ở mode 0. D6D5 = 01 : nhóm A hoạt động ở mode 1. D6D5 = 1x : nhóm A hoạt động ở mode 2. Các bit D0, D1, D2 dùng để xác định cấu hình cho nhóm B. - Bit D0 dùng để thiết lập 4 bit thấp của cổng C. D0 = 0 cổng C là cổng xuất dữ liệu. D0 = 1 cổng C là cổng nhập dữ liệu. - Bit D1 dùng để thiết lập cổng B. D1 = 0 cổng B là cổng xuất dữ liệu. D1 = 1 cổng B là cổng nhập dữ liệu. - Bit D2 dùng thiếp lập mode điều khiển của nhóm B. D2 = 0 : nhóm B hoạt động ở mode 0. D2 = 1 : nhóm B hoạt động ở mode 1. D7 D6 D5 D4 D3 D2 D1 D0 Nhóm B Cổng C (4 bit thấp) 1 = Input 0 = Output Cổng B 1 = Input 0 = Output Mode select Hình 6.3 : Cấu trúc từ điều khiển của vi mạch 8255A b. Cơ chế hoạt động các cổng của 8255A ở các trạng thái. * Nhóm A và Nhóm B cấu hình ở mode 0. Khi được định ơ cấu hình này, các cổng của hai nhóm hoạt động xuất hoặc nhập dữ liệu độc lập với nhau. Từ điều khiển: 1 0 0 D4 D3 0 D1 D0 Với D0, D1. D3, D4 tùy chọn theo yêu cầu của người sử dụng. * Nhóm A được cấu hình ở mode 1. Ở mode 1, các cổng làm việc có chốt (Strobed I/O), thiết bị giao tiếp muốn 8255A nhận dữ liệu thì thiết bị đó phải tạo ra một tín hiệu yêu cầu 8255A nhận dữ liệu và ngược lại, 8255A muốn gởi dữ liệu cho một thiết bị khác thì nó phải gởi 1 tín hiệu yêu cầu thiết bị đó nhận dữ liệu, tín hiệu đó gọi là tín hiệu chốt. + Khi cổng A được cấu hình là cổng nhập dữ liệu, chức năng các đường tín hiệu được trình bày như hình vẽ: Từ điều khiển : 1 0 1 1 D3 x x x Hình 6.4 : Chức năng các đường tín hiệu khi cổng A là cổng nhập dữ liệu Các đường tín hiệu của cổng C trở thành các đường điều khiển của cổng A. Trong đó : Bit INTEA (Interrupt Enable) được thiết lập mức logic dưới sự điều khiển của phần mềm dùng cấu trúc Set/Reset của 8255A. Bit PC4 trở thành bit STBA (Strobed Input, tác động mức thấp), được dùng để chốt các dữ liệu ở các ngõ vào PA0 – PA7 vào mạch chốt bên trong. Bit PC5 trở thành bit IBFA (Input Buffer Full, tác động mức cao), dùng để báo cho bên ngoài biết dữ liệu đã được chốt bên trong. Bit PC3 trở thành bit INTRA (Interrupt Request, tác động mức cao), bit này có mức logic 1 khi bit STRA = 1, bit IBFA = 1 và bit INTEA = 1. Thông thường bit này dùng để tác động vào ngõ vào ngắt của vi xử lý để báo cho vi xử lý biết : dữ liệu mới đã xuất hiện ở ngõ vào. Các bit PC6, PC7 của cổng C là các bit xuất/ nhập bình thường tùy thuộc vào từ điều khiển trong thanh ghi điều khiển. Còn cổng B được điều khiển bằng các bit D0 – D2 trong RD\ PC4 PC5 PC3 PC6,7 PA0–PA7 INTE A STBA\ IBFA INTRA I/O thanh ghi điều khiển (nếu cổng B hoạt động ở mode 1 thì các bit PC0 – PC2 là các bit điều khiển). + Cổng A được cấu hình là cổng xuất dữ liệu. Chức năng các đường tín hiệu được trình bày ở hình vẽ: Từ điều khiển : 1 0 1 0 D3 X x x Hình 6.5 : Chức năng các đường tín hiệu khi cổng A là cổng xuất dữ liệu Bit PC7 trở thành bit OBFA (Output Buffer Full, tác động mức thấp), khi có dữ liệu từ vi xử lý gởi ra cổng A, tín hiểu OBF sẽ yêu cầu thiết bị bên ngoài nhận dữ liệu. Bit PC6 trở thành bit ACKA (Acknowledge Input, tác động mức thấp), thiết bị nhận dữ liệu dùng tín hiệu này để báo cho 8255A biết dữ liệu đã được nhận và sẵn sàng nhận dữ liệu mới. Bit PC3 trở thành bit INTRA (Interrupt Request, tác động mức cao), bit này có mức logic bằng 1 khi bit OBFA = 1, ACKA = 1 và bit INTEA = 1. Tín hiệu INTRA tác động đến ngõ vào ngắt của vi xử lý để báo cho vi xử lý biết thiết bị bên ngoài đã nhận dữ liệu từ cổng A. Các bit PC4, PC5 vẫn là bit nhập/ xuất dữ liệu bình thường tùy thuộc vào từ điều khiển. Các bit D0 – D2 trong thanh ghi điều khiển dùng để thiết lập cấu hình cho cổng B. * Nhóm B được cấu hình ở mode 1. + Cổng B được cấu hình là cổng nhập dữ liệu. Chức năng các đường tín hiệu được trình bày như hình vẽ: WR\ PC7 PC6 PC3 PC4,5 PA0–PA7 INTE A OBFA\ ACKA\ INTRA I/O WR\ PC1 PC2 PC0 PB0–PB7 INTE B OBFB\ ACKB\ INTRB Từ điều khiển : 1 x x x X 1 1 x Hình 6.6 : Chức năng các đường tín hiệu khi cổng B là cổng nhập dữ liệu Chức năng của các bit điều khiển giống như khi nhóm A hoạt động ở mode 1 và cổng A được cấu hình là cổng nhập dữ liệu. + Cổng B được cấu hình là cổng xuất dữ liệu. Chức năng các đường tín hiệu được trình bày như hình vẽ : Từ điều khiển: 1 x X x x 1 0 x Hình 6.7 : Chức năng các đường tín hiệu khi cổng B là cổng xuất dữ liệu Chức năng của các từ điều khiển giống như khi nhóm A hoạt động ở mode 1 và cổng A được cấu hình là cổng xuất dữ liệu. * Nhóm A được cấu hình ở mode 2. Mode 2 là kiểu hoạt động strobed bi-directional IO : có hai chức năng nhập xuất dữ liệu. Từ điều khiển khi nhóm A được cấu hình ở mode 2 và chức năng của các đường tín hiệu được trình bày ở hình vẽ: RD\ PC2 PC1 PC0 PB0–PB7 INTE B STBB\ IBFB INTRB Từ điều khiển : 1 0 1 1 D3 x x x Hình 6.8: Chức năng các đường tín hiệu khi nhóm A hoạt động ở mode 2 Các đường tín hiệu của cổng C trở thành các đường điều khiển của cổng A. Bit PC7 trở thành bit OBFA, PC6 trở thành bit ACKA, PC4 trở thành bit STBA, PC5 trở thành bit IBFA và bit PC3 trở thành bit INTRA, chức năng của các bit điều khiển giống như ở mode 1, chỉ khác tín hiệu INTRA = 1 khi OBFA = 1 và INTE1 = 1 hoặc IBFA = 1 và INTE2 = 1. Các bit PC0 – PC2 là các bit nhập xuất dữ liệu bình thường tùy thuộc vào từ điều khiển trong thanh ghi điều khiển. Một chú ý cần thiết là khi nhóm A được cấu hình ở mode 2 thì nhóm B chỉ được cấu hình ở mode 0. IV. GIAO TIẾP GIỮA VI XỬ LÝ VỚI 8255A: Vi mạch 8255A có thể giao tiếp với vi xử lý theo 2 kiểu: kiểu nhập/xuất (kiểu I/O) và kiểu bộ nhớ. Khi vi xử lý giao tiếp với 8255A theo kiểu I/O nó chỉ dùng được 8 đường địa chỉ từ A0 – A7 mà thôi còn khi giao tiếp kiểu bộ nhớ, nó dùng được cả 16 đường địa chỉ, vì vậy dung lượng giao tiếp kiểu I/O thấp hơn dung lượng giao tiếp kiểu bộ nhớ. 1. Giao tiếp kiểu I/O. Khi thiết kế vi xử lý giao tiếp với 8255A theo kiểu I/O thì dữ liệu sẽ được truy xuất bằng 2 lệnh : IN addr-port và OUT addr-port. Dữ liệu giao tiếp luôn chứa trong thanh ghi A. Địa chỉ cổng (addr-port) có độ dài là 8 bit. Cũng giống như bộ nhớ, vi xử lý có thể giao tiếp với nhiều vi mạch 8255, với 8 đường địa chỉ thì có tất cả 256 địa chỉ, mà mỗi vi mạch chiếm 4 địa chỉ (3 cổng và thanh ghi điều khiển) nên số vi mạch 8255 tối đa có thể giao tiếp của vi xử lý là 256/4 = 64 vi mạch. Khi kết nối giữa vi xử lý với vi mạch 8255A thì đường địa chỉ A0 và A1 dùng để lựa chọn các cổng và thanh ghi điều khiển, còn các đường địa chỉ còn lại từ A2 – A7 dùng để lựa chọn vi mạch hoạt động, thông thường các đường địa chỉ này được đưa vào vi mạch giải mã rồi các ngõ ra của vi mạch giải mã sẽ đưa đến CS\ của các vi mạch 8255A. Một ví dụ khi thiết kế vi xử lý giao tiếp với 4 vi mạch 8255A: WR\ PA0–PA7 OBFA\ ACKA\ PC3 PC7 PC6 PC4 PC5 STBA\ IBFA RD\ INTE 1 INTE 2 PC2,1,0 I/O INTE A Sơ đồ kết nối như hình vẽ : (vi mạch 74139). Hình 6.9: Sơ đồ kết nối vi xử lý với vi mạch 8255A Trong đó, đường A0 và A1 được nối với 8255A như đã trình bày ở trên, đường A2, A3 được đưa vào vi mạch giải mã 2 đường thành 4 đường để lựa chọn vi mạch 8255A. Từ đó, ta có bảng địa chỉ của các vi mạch 8255A như sau : IC A7 A6 A5 A4 A3 A2 A1 A0 Hex 8255A-1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 00 03 8255A-2 0 0 0 0 0 0 0 0 0 0 1 1 0 1 0 1 04 07 8255A-3 0 0 0 0 0 0 0 0 1 1 0 0 0 1 0 1 08 0B 8255A-4 0 0 0 0 0 0 0 0 1 1 1 1 0 1 0 1 0C 0F 2. Giao tiếp kiểu bộ nhớ. Khi thiết kế 8255A giao tiếp với vi xử lý theo kiểu bộ nhớ thì chức năng của 8255A không thay đổi, chỉ thay đổi kiểu truy xuất. Với kiểu I/O thì địa chỉ của các cổng và thanh ghi điều khiển là 8 bit thì ở kiểu bộ nhớ, địa chỉ của các cổng và thanh ghi điều khiển là 16 bit, khi đó cách kết nối cũng tương tự như kết nối vi xử lý với bộ nhớ thông thường, và mỗi vi mạch 8255A cũng được coi như là bộ nhớ với 4 ô nhớ: 3 cổng và thanh ghi điều khiển, truy xuất dữ liệu bằng cách dùng các lệnh truy xuất dữ liệu của bộ nhớ. Cách kết nối tương tự như khi vi xử lý kết nối với bộ nhớ nên ở đây không cần trình bày lại. DECODER 2 TO 4 LINE đến CS\ của 8255A -1 đến CS\ của 8255A -2 đến CS\ của 8255A -3 đến CS\ của 8255A -4 A2 A3 BEGIN KHỞI PHÁT: GHI TỪ CHẾ ĐỘ GHI LỆNH : DTR, A{RxEN,RTS ĐỌC TRẠNG THÁI: DSR, RxRDy Kiểm tra sẵn sàng :DSR= RxRDY=1 ĐỌC SỐ LIỆU TỪ THANH GHI ĐỆM SỐ LIỆU END HÌNH 7.2 BEGIN KHỞI PHÁT: GHI TỪ CHẾ ĐỘ GHI LỆNH : DTR, TxEN ĐỌC TRẠNG THÁI: DSR, TxRDy GHI SỐ LIỆU RA THANH GHI ĐỆM SỐ LIỆU GHI LỆNH PHÁT: RTS END HÌNH 7.1 Kiểm tra sẵn sàng: DSR = TxRDY =1 CHƯƠNG VII: PHẦN CỨNG VÀ PHẦN MỀM GIAO TIẾP I. LƯU ĐỒ VÀ CHƯƠNG TRÌNH TRUYỀN DỮ LIỆU 1. LƯU ĐỒ TRUYỀN DỮ LIỆU: 2. LƯU ĐỒ NHẬN DỮ LIỆU: 3. CHƯƠNG TRÌNH TRUYỀN DỮ LIỆU ;xxxxxxxxxxxxxxxxxxxxx ;chuong trinh con delay org 6200h delay: mvi b,3 x0: dcr b jnz X0 ret ;xxxxxxxxxxxxxxxxxxxxx ;chuong trinh truyen du lieu org 4100h mvi a,00h ;xoa reg lenh out 01h call delay out 01h call delay out 01h call delay mvi a,40h ;xoa cac thanh ghi noi out 01h call delay mvi a,0ceh ;goi tu dk che do out 01h call delay lxi d,6500h mvi a,03h ;goi tu lenh out 01h call delay x1: in 01 ;doc tg trang thai ani 10000001b ;giu MSB va LSB cpi 81h jnz x1 ldax d mov l,a out 00h ;doc byte dia chi de truyen call delay mvi a,21h ;goi tu lenh de truyen di out 01 call delay inr e mvi a,03h out 01h call delay x2: in 01h ani 81h cpi 81h jnz x2 ldax d mov h,a out 00h call delay mvi a,21h out 01h call delay inr e mvi a,03h out 01h call delay x13: in 01h ani 81h cpi 81h jnz x13 ldax d mov c,a out 00 call delay mvi a,21h out 01h call delay x4: mvi a,03h out 01h call delay x3: in 01h ani 81h cpi 81h jnz x3 mov a,m ;truyen du lieu out 00h call delay mvi a,21h out 01h call delay inr l dcr c jnz x4 ;hien chu E de biet cham dut lxi h,0a000h mvi m,79h hlt 4. CHƯƠNG TRÌNH NHẬN DỮ LIỆU: ;x-chuong trinh nhan du lieu-x org 4300h mvi a,00h ; xoa cac thanh ghi out 01h call delay out 01h call delay out 01h call delay mvi a,40h ;xoa cac thanh ghi noi out 01h call delay mvi a,0ceh ;nap tu che do out 01h call delay mvi a,26h ;nap tu lenh out 01h call delay y5: in 01h ani 82h cpi 82h jnz y5 in 00h ;cat byte dia chi thap mov e,a mov l,a y6: in 01h ani 82h cpi 82h jnz y6 in 00h ;cat byte dia chi cao mov d,a mov h,a y7: in 01h ani 82h cpi 82h jnz y7 in 00h mov c,a y8: in 01h ani 81h cpi 81h jnz y8 in 00h ;nap du lieu vao o nho stax d inr e dcr c jnz y8 pchl end II. THIẾT KẾ VÀ THI CÔNG PHẦN GIAO TIẾP: 1. GIỚI THIỆU VI MẠCH MAX 232: Vi mạch MAX 232 chuyển đổi mức TTL ở ngõ vào thành mức +10V hoặc –10V ở phía truyền và các mức +3V… +15V hoặc –3V … -15V thành mức TTL ở phía nhận. Trên hình 7.3 mô tả cách sắp xếp chân và sơ đồ cấu trúc của vi mạch MAX 232. Đường dẫn TxD dẫn trực tiếp đến chân 11 của vi mạch MAX 232 còn bộ đệm nối ra ở chân 14 được nối trực tiếp tới chân số 2 của cổng nối tiếp. Việc sắp xếp chân ở ổ cắm nối tiếp được lựa chọn sao cho có thể dùng một cáp nối trực tiếp cổng nối tiếp của hệ phát triển, với cổng nối tiếp của máy tính thường là COM 2. Với đường dẫn RxD mọi việc cũng diễn ra tương tự chân 13 của vi mạch được nối đến chân 3 của cổng nối tiếp. 2. SƠ ĐỒ MẠCH KẾT NỐI: Vì sử dụng kit 8085 đã có nên kết nối các đường data của 8255 của kit với 8251 của board giao tiếp. Sơ đồ kết nối như sau: O 1 16 2 15 3 MAX 14 232 4 13 5 12 6 11 7 10 8 9 C1+ V+ C1- C2+ C2- V- T2OUT R2IN Vcc GND T1OUT R1IN R1OUT T1IN T2IN R2OUT HÌNH 7.3 HÌNH 7.4 3. SƠ DỒ MẠCH IN: Gồm hai mặt :mặt trên và mặt dưới. Board mạch cụ thể như sau: MẶT DƯỚI MẶT TRÊN KếT LUậN Qua thời gian thực hiện, dưới sự hướng dẫn tận tình của Thầy Nguyễn Đình Phú cùng sự giúp đỡ rất nhiều của quý thầy cô trong khoa, em đã cố gắng hoàn thành luận văn đúng theo yêu cầu và thời gian quy định. Trong luận văn chúng em đã thực hiện được những công việc sau:  Khảo sát phần lý thuyết: - Giới thiệu vi xử lý. - Giới thiệu cách giao tiếp. - khảo sát kit vi xử lý 8085.  Thi công mạch điện cho phần giao tiếp. Mặc dù đã rất cố gắng, nhưng do kiến thức và thời gian có hạn nên có những phần chúng em chưa làm được như: phần giao diện màn hình. Và em sẽ không tránh khỏi những điều thiếu sót, nhầm lẫn khác, kính mong quý thầy cô thông cảm bỏ qua. Người thực hiện mong mỏi các bạn sinh viên khoa điện ở những khóa sau bổ xung cho luận văn này hoàn chỉnh hơn. Sinh viên thực hiện Nguyễn Trung Dũng HƯỚNG PHÁT TRIỂN ĐỀ TÀI Ngày nay với sự phát triển nhanh chóng của khoa học kỹ thật và đất nước ta đang chuyển mình sang nền sản xuất công nghiệp. Do đó, để đáp ứng với nhu cầu thực tế thì chúng ta cần phải nghiên cứu thêm các loại giao diện nối tiếp khác để tăng thêm được khoảng cách và tốc độ truyền. Ngoài ra, còn có thể dựa trên tập luận án này để viết thêm nhiều chương trình khác có thể ứng dụng trong thực tế và cải tiến lại chương trình này để tiện lợi cho người sử dụng … Sinh viên thực hiện Nguyễn Trung Dũng TÀI LIỆU THAM KHẢO 1. ĐO LƯỜNG VÀ ĐIỀU KHIỂN BẰNG MÁY VI TÍNH Ngô Diện Tập _ NXB KHKT Hà Nội _ 1996 1. ĐIỀU KHIỂN VÀ GHÉP NỐI CÁC THIẾT BỊ NGOẠI VI Trần Bá Thái _ NXB KHKT Hà Nội _ 1984 2. KỸ THUẬT GHÉP NỐI MÁY VI TÍNH Nguyễn Mạnh Giang _ NXB GD Hà Nội _1997 3. TRUYỀN DỮ LIỆU Tống Văn On _ ĐH KỸ THUẬT TPHCM _ 1999 4. VI XỬ LÝ TRONG ĐO LƯỜNG VÀ ĐIỀU KHIỂN Ngô Diện Tập _ NXB KHKT Hà Nội _ 1996 5. KỸ THUẬT VI XỬ LÝ Văn Thế Minh _ NXB GD _ 1997 6. ASSEMBLY LANGUAGE TOOLS and TECHNIQUES FOR THE IBM MICROCOMPUTERS Julio Sanches _ Prentice Hall _ 1990 7. MICROCOMPUTER INTERFACING Bruce A.Artwick _ Prentice Hall _ 1980 PHỤ LỤC CHƯƠNG TRÌNH TRUYỀN DỮ LIỆU CỦA MÁY TÍNH ; TERMINAL.ASM ; STACK stack segment stack db 300 dup('?') stack ends ; DATA data segment prompt db 'File name:$' filename db 30 dup(0) buffer db 512 dup(0) buffrr db 512 dup(0) handle dw ? openerr db 0dh,0ah,'OPEN ERROR - COPDE' errcode db 30h,'$' ;messages MENU_MS db ' **TERMINAL PROGRAM**',0dh,0ah db ' to redisplay this MENU',0dh,0ah db ' to set communications protocol',0dh,0ah db ' to display protocol installed',0dh,0ah db ' to open file.hex and trasnmit',0dh,0ah db ' to exit the TERMINAL program',0dh,0ah db 'All character typed are transmitter',0dh,0ah db 'All character receiver are d

Các file đính kèm theo tài liệu này:

  • pdfĐồ án tốt nghiệp - Phân tích thiết kế hệ thống - GIAO TIẾP MÁY TÍNH VỚI KIT VI XỬ LY 8085.pdf