Lưu trữ và Logic dựa trên ngăn xếp

Một phần của tài liệu Hướng dẫn lập trình PIC với arduino (Trang 125 - 129)

Phiên bản 1.0 của phần mềm plcLib bổ sung khả năng tạo và sử dụng ngăn xếp dựa trên phần mềm để lưu trữ tạm thời và truy xuất các giá trị bit đơn. Khả năng này có thể được kết hợp với các lệnh logic khối, để đơn giản hóa giải pháp của các mạng phức tạp dựa trên đại số Boolean - nhưng không cần tạo các biến người dùng riêng lẻ để lưu trữ tạm thời, như đã thảo luận trước đây.

Ngăn xếp là một vùng bộ nhớ đặc biệt có thể được sử dụng để lưu trữ và truy xuất dữ liệu tạm thời thông tin được lưu trữ bằng cách đẩy vào ngăn xếp và sau đó được truy xuất bằng cách bật ra từ ngăn xếp. Thông tin được lưu trữ gần đây nhất luôn là thông tin được xóa đầu tiên, do đó, ngăn xếp hoạt động như một kho lưu trữ cuối cùng vào trước.

Hình 55. Sử dụng ngăn xếp làm nơi lưu trữ dữ liệu cuối cùng vào trước xuất trước.

Một phép tương tự hữu ích để hỗ trợ về lưu trữ và truy xuất dữ liệu dựa trên ngăn xếp là một chồng các tấm, trong đó mỗi tấm đại diện cho một phần thông tin. Việc lưu trữ dữ liệu tương đương với việc thêm một tấm mới vào đầu chồng, điều này làm cho 'chồng' các tấm tăng cao hơn. Ngược lại, thông tin được truy xuất bằng cách loại bỏ một tấm. Đĩa được thêm gần đây nhất sẽ luôn ở trên cùng và đĩa cũ nhất ở dưới cùng.

Bước đầu tiên khi viết một bản phác thảo dựa trên ngăn xếp là sử dụng lệnh Stack để tạo một đối tượng ngăn xếp. (Ví dụ: lệnh Stack stack1; tạo một ngăn xếp được gọi là stack1, có khả năng chứa tối đa 32 số bit đơn.) Các giá trị có thể được thêm vào hoặc xóa khỏi ngăn xếp bằng cách sử dụng phương thức push () hoặc pop () của phương thức trước đó đối tượng ngăn xếp đã tạo. Bản phác thảo sau minh họa việc sử dụng ngăn xếp để lưu trữ và sau đó lấy ra một loạt các giá trị bit đơn.

Listing 44. Đẩy và bật các giá trị từ một ngăn xếp phần mềm một bit (Source: File > Examples > plcLib > Stack > PushPop)

Khả năng lưu trữ kết quả tính toán tạm thời trên ngăn xếp có thể được sử dụng để đơn giản hóa giải pháp của các mạng logic phức tạp. Có sẵn các tùy chọn để kết hợp các nhánh song song hoặc chuỗi bằng cách sử dụng các phép toán logic AND và OR, như được thảo luận trong phần tiếp theo.

22.1 Hoạt động lôgic khối

Một mạng logic bao gồm hai nhánh song song có thể được giải quyết bằng cách tính toán nhánh trên trước tiên, sau đó lưu kết quả trung gian này vào ngăn xếp. Nhánh thứ hai sau đó có thể được giải quyết và kết hợp với kết quả trước đó, sử dụng phương thức orBlock () của đối tượng ngăn xếp (cũng loại bỏ kết quả trước đó khỏi ngăn xếp).

Hình 56. Phép toán Block-OR có thể được sử dụng để kết hợp một nhánh song song với

một kết quả tính toán đã được lưu trữ trước đó trên ngăn xếp. Bản phác thảo sau đây thể hiện cách tiếp cận.

Listing 45. Performing a logical OR of two parallel switch branches using Block OR

Một kỹ thuật tương tự có thể được áp dụng với các kết nối nối tiếp của các nhóm chuyển mạch, có thể được kết hợp bằng cách sử dụng Khối AND.

Hình 57. Một khối AND có thể được sử dụng để giải quyết một mạng phức tạp bao gồm

các phần tử nối tiếp.

Ví dụ sau đây đầu tiên tính toán kết quả của nhóm chuyển đổi ở bên trái, được lưu trữ dưới dạng kết quả trung gian trên ngăn xếp. Khối bên phải sau đó được giải quyết và kết hợp với kết quả trước đó bằng cách sử dụng phương thức andBlock () của đối tượng ngăn xếp.

Danh sách 46. Logic AND của hai nhóm chuyển đổi chuỗi sử dụng lệnh Block AND (Nguồn: File> Examples> plcLib> Stack> AndBlock)

Phần tiếp theo thảo luận về các phương pháp tạo phân bổ đầu vào / đầu ra tùy chỉnh, nếu cấu hình tiêu chuẩn không phù hợp.

Một phần của tài liệu Hướng dẫn lập trình PIC với arduino (Trang 125 - 129)

Tải bản đầy đủ (DOCX)

(137 trang)
w