P 1 R7 P2.4=1 P0.0=0 P2.4=0 R7P1 7 0H=1 P 1 R7 P2.4=1 P0.0=1 P2.4=0 L CALL MO1 P 1 R7 P2.4=1 P0.1=0 P2.4=0 R7P1 7 1H=1 P 1 R7 P2.4=1 P0.1=1 P2.4=0 L CALL MO2 P 1 R7 P2.4=1 P0.2=0 P2.4=0 R7P1 7 2H=1 P 1 R7 P2.4=1 P0.2=1 P2.4=0 L CALL MO3 P 1 R7 P2.4=1 P0.3=0 P2.4=0 R7P1 7 3H=1 P 1 R7 P2.4=1 P0.3=1 P2.4=0 L CALL MO4 Chng 11: CHệễNG TRèNH CON Mễ THIET Bề 1. Lửu ủo giaỷi thuaọt. BEGIN A = 1 ẹ P2.0=1 ẹ S S ẹ ẹ A = 2 P2.1=1 S S A=3 ẹ P2.2=1 ẹ S S Ñ Ñ A=4 P2.3=1 S S RET 2. Giải thích: S au khi bấm đúng mã thứ nhất để mở thiết bò thì chương trình sẽ hỏi tiếp A=1 chưa. nếu đúng A=1 thì chương trình hỏi tiếp P2.0=1 chưa (P2.0 là trạng thái của công tắc bên ngoài). Nếu P2.0=1 là đúng thì ta phải xóa P0.0=0 để mở thiết bò 1 ( vì tín hiệu P0.0 và P2.0 được đưa qua cổng EXOR cho nên muốn đưa ra mứ c logic 1 thì mức logic của 2 trạng thái này sẽ khác nhau ). Sau đó đặt ô nhớ 70H=1 để báo là thiết bò 1 đã được mở. Sau đó gọi chương trình tiếng nói báo là “ Thiết bò 1 đã được mở”. Nếu P2.0=0 thì muốn mở thiết bò ta phải đặt P0.0=1 và đặt 70H=1 để báo thiết bò 1 đã được mở. Sau đó gọi chương trình báo mở thiết bò 1. Nếu điều kiện A=1 sai thì chương trình sẽ hỏi tiếp A=2 chưa. Nếu A=2 đúng, chương trình hỏi tiếp P2.1=1 chưa. Nếu P2.1=1 thì xóa P0.0=0 để mở thiết bò 2 và đồng thời đặt 71H=1 để báo là thiết bò 2 đã được mở. Sau đó gọi chương trình báo mở thiết bò 2. Nếu điều kiện P2.1=1 sai tức P2.1=0, muốn mở thiết bò 2 thì đặt P0.1=1 và đặt 71H=1 để báo là thiết bò 2 đã được mở và gọi chương trình báo mở thiết bò 2. Nếu điều kiện A=2 sai thì chương trình sẽ hỏi tiếp A=3 chưa. Nếu A=3 đúng, chương trình hỏi tiếp P2.2=1 chưa. Nếu P2.2=1 thì xóa P0.2=0 để mở thiết bò 3 và đồng thời đặt 72H=1 để báo là thiết bò 3 đã được mở. Sau đó gọi chương trình báo mở thiết bò 3. Nếu điều kiện P2.2=1 sai tức P2.2=0, muốn mở thiết bò 3 thì đặt P0.2=1 và đặt 72H=1 để báo là thiết bò 3 đã được mở và gọi chương trình báo mở thiết bò 3. Nếu điều kiện A=3 sai thì chương trình sẽ hỏi tiếp A=4 chưa. Nếu A=4 đúng, chương trình hỏi tiếp P2.3=1 chưa. Nếu P2.3=1 thì xóa P0.3=0 để mở thiết bò 4 và đồng thời đặt 73H=1 để báo là thiết bò 4 đã được mở. Sau đó gọi chương trình báo mở thiết bò 4. Nếu P2.3=0 thì đặt P0.3=1 để mở thiết bò 4 và đặt 73H=1 để báo là thiết bò 4 đã được mở và gọi chương trình báo mở thiết bò 4. Nếu điều kiện A=4 sai thì thoát. P 1 R7 P2.4=1 P0.0=1 P2.4=0 R7P1 7 0H=0 P 1 R7 P2.4=1 P0.0=0 P2.4=0 L CALL TAT1 P 1 R7 P2.4=1 P0.1=1 P2.4=0 R7P1 7 1H=0 P 1 R7 P2.4=1 P0.1=0 P2.4=0 L CALL TAT2 P 1 R7 P2.4=1 P0.2=1 P2.4=0 R7P1 7 2H=0 P 1 R7 P2.4=1 P0.2=0 P2.4=0 L CALL TAT3 P 1 R7 P2.4=1 P0.3=1 P2.4=0 R7P1 7 3H=0 P 1 R7 P2.4=1 P0.3=0 P2.4=0 L CALL TAT4 V. CHệễNG TRèNH CON TAẫT THIET Bề 1 Lửu ủo giaỷi thuaọt: BEGIN A = 1 ẹ P2.0=1 ẹ S S ẹ ẹ A = 2 P2.1=1 S S A=3 ẹ P2.2=1 ẹ S S Đ Đ A=4 P2.3=1 S S RET 2. Giải thích: Sau khi bấm đúng mã thứ nhất để tắt thiết bò thì chương trình sẽ hỏi tiếp A=1 chưa. Nếu đúng A=1 tức là tắt thiết bò 1, sau đó chương trình hỏi tiếp P2.0=1 chưa (P2.0 là trạng thái của công tắc bên ngoài). Nếu P2.0=1 là đúng thì ta phải đặt P0.0=1 để tắt thiết bò 1 ( vì tín hiệu P0.0 và P2.0 được đưa qua cổng EXOR cho nên muốn đưa ra mứ c logic 1 thì mức logic của 2 trạng thái này sẽ khác nhau ). Sau đó xóa ô nhớ 70H=0 để báo là thiết bò 1 đã được tắt. Sau đó gọi chương trình tiếng nói báo là “ Thiết bò 1 đã được tắt”. Nếu P2.0=0 thì muốn tắt thiết bò ta phải xóa P0.0=0 và xóa 70H=0 để báo thiết bò 1 đã được tắt. Sau đó gọi chương trình báo tắt thiết bò 1. Nếu điều kiện A=1 sai thì chương trình sẽ hỏi tiếp A=2 chưa. Nếu A=2 đúng, chương trình hỏi tiếp P2.1=1 chưa. Nếu P2.1=1 thì đặt P0.0=1 để tắt thiết bò 2 và đồng thời xóa 71H=0 để báo là thiết bò 2 đã được tắt. Sau đó gọi chương trình báo tắt thiết bò 2. Nếu điều kiện P2.1=1 sai tức P2.1=0, muốn tắt thiết bò 2 thì xóa P0.1=0 và xóa 71H=0 để báo là thiết bò 2 đã được tắt và gọi chương trình báo tắt thiết bò 2. Nếu điều kiện A=2 sai thì chương trình sẽ hỏi tiếp A=3 chưa. Nếu A=3 đúng, chương trình hỏi tiếp P2.2=1 chưa. Nếu P2.2=1 thì đặt P0.2=1 để tắt thiết bò 3 và đồng thời xóa 72H=0 để báo là thiết bò 3 đã được tắt. Sau đó gọi chương trình báo tắt thiết bò 3. Nếu điều kiện P2.2=1 sai tức P2.2=0, muốn tắt thiết bò 3 thì xóa P0.2=0 và xóa 72H=0 để báo là thiết bò 3 đã được tắt và gọi chương trình báo tắt thiết bò 3. Nếu điều kiện A=3 sai thì chương trình sẽ hỏi tiếp A=4 chưa. Nếu A=4 đúng, chương trình hỏi tiếp P2.3=1 chưa. Nếu P2.3=1 thì đặt P0.3=1 để tắt thiết bò 4 và đồng thời xóa 73H=0 để báo là thiết bò 4 đã được tắt. Sau đó gọi chương trình báo tắt thiết bò 4. Nếu P2.3=0 thì xóa P0.3=0 để tắt thiết bò 4 và xóa 73H=0 để báo là thiết bò 4 đã được tắt và gọi chương trình báo tắt thiết bò 4. Nếu điều kiện A=4 sai thì thoát. . đó gọi chương trình báo mở thiết bò 2. Nếu điều kiện P2.1=1 sai tức P2.1=0, muốn mở thiết bò 2 thì đặt P0.1=1 và đặt 71H=1 để báo là thiết bò 2 đã được mở và gọi chương trình báo mở thiết bò. đó gọi chương trình báo mở thiết bò 3. Nếu điều kiện P2.2=1 sai tức P2.2=0, muốn mở thiết bò 3 thì đặt P0.2=1 và đặt 72H=1 để báo là thiết bò 3 đã được mở và gọi chương trình báo mở thiết bò. mở. Sau đó gọi chương trình báo mở thiết bò 4. Nếu P2.3=0 thì đặt P0.3=1 để mở thiết bò 4 và đặt 73H=1 để báo là thiết bò 4 đã được mở và gọi chương trình báo mở thiết bò 4. Nếu điều kiện A=4