hệ thống điều khiển thiết bị từ xa và tự động quay số báo động thông qua mạng điện thoại, chương 10 potx

8 341 0
hệ thống điều khiển thiết bị từ xa và tự động quay số báo động thông qua mạng điện thoại, chương 10 potx

Đang tải... (xem toàn văn)

Thông tin tài liệu

Chương 10: CHÖÔNG TRÌNH PHUÏC VUÏ NGAÉT 0 EXTOISR 1. Lửu ủo giaỷi thuaọt : LCALL MO BEGIN Caỏm ngaột O R 5 = 30 MOV A P1 ANL A, #OFH 60H=1 LCALL TAT A = 65 H=1 =1 64 H=1 66H=1 A = 64H=1 66H 65H=1 A = 9 A = A = LCALL RESET - MT8880 61 62 63 A A A 60H =1 LCALL INTRO A 61H=0 62H=0 63H=0 61H=1 LCALL NSẹT4 62H=0 63H=0 63H=1 63H=0 67H=1 A 63H 67H = 0 64H = 0 LCALL VOICE LCALL KHAN 64 H=1 66H=0 62H=1 S S ẹ S S S ẹ S S S ẹ S S S ẹ S S S S S S S S 68 68H = 0 67H = 1 68 69H = 0 68H = 1 68 6AH = 0 69H = 1 S ẹ ẹ ẹ ẹ ẹ ẹ ẹ ẹ ẹ ẹ ẹ ẹ ẹ ẹ ẹ ẹ S ẹ ẹ ẹ 2. Giải thích: Do khi nhấn phím là bất thường, không theo qui luật nào cả. Do vậy, chương trình sử dụng ngắt để nhận biết tác động này. Khi có nhấn phím thì chương trình chính sẽ nhảy qua chương trình phục vụ ngắt O. Khởi đầu của chương trình ngắt được đònh đòa chỉ 0013H. Đầu tiên mỗi lần nhấn ta phải nạp lại thời hằng R5= 30 giây, thời hằng này là thời gian đợi phím nhấn. Nếu sau 30 giây mà không có phím nào được nhấn thì chương trình chính sẽ tắt kết nối thuê bao. Sau đó nạp PORT P1 vào thanh ghi A, do mã phím nhấn chỉ dùng 4 bit thấp nên phải ANL dữ liệu trong thanh ghi A với 00001111. Các ô nhớ trong RAM nội được qui đònh như sau: Đòa chỉ ô nhớ: Tên gọi: 60H ô nhớ 0 61H ô nhớ1 62H ô nhớ 2 63H ô nhớ 3 64H ô nhớ 4 65H ô nhớ 5 66H ô nhớ 6 67H ô nhớ 7 68H ô nhớ 8 69H ô nhớ 9 6AH ô nhớ 10 Các ô nhớ này được xóa ở chương trình chính nên có mức logic 0. Nhiệm vụ của các ô nhớ: Ô nhớ: Nhiệm vụ: Ô nhớ 0 Nếu ô nhớ 1 được bật lên mã password đã nhấn rồi. Nếu ô nhớ 1 bò xóa thì mã password của mạch chưa đúng. Ô nhớ 3 Nếu ô nhớ 3 được bật lên 1 thì mã password thứ 1 đã được nhấn. Nếu ô nhớ 3 bò xóa thì thì mã password thứ 1 của mạch chưa đúng. Ô nhớ 2 Nếu ô nhớ 2 được bật lên 1 thì mã password thứ 2 đã được nhấn. Nếu ô nhớ 2 bò xóa thì mã password thứ 2 của mạch chưa đúng Ô nhớ 1 Nếu ô nhớ 1 được bật lên 1 thì mã password thứ 3 đã được nhấn. Nếu ô nhớ 1 bò xóa thì mã password thứ 3 của mạch chưa đúng Ô nhớ 4 Nếu ô nhớ 4 được bật lên 1 thì số thứ nhất của lệnh điều khiển đã nhấn. Nếu ô nhớ 4 bò xóa thì số thứ nhất của lệnh điều khiển chưa nhấn. Ô nhớ 6 Nếu ô nhớ 6 được bật lên 1 thì số thứ nhất của lệnh điều khiển tắt thiết bò đã được nhấn. Nếu ô nhớ 6 bò xóa thì số thứ nhất của lệnh điều khiển tắt thiết bò đã được nhấn. Ô nhớ 5 Nếu ô nhớ 5 được bật lên 1 thì cho phép nạp số điện thoại vào RAM. Nếu ô nhớ 5 bò xóa thì không cho phép nạp số điện thoại vào RAM. Ô nhớ 10 Nếu ô nhớ 10 được bật lên 1 thì cho phép nạp số điện thoại thứ nhất vào RAM Nếu ô nhớ 10 bò xóa 1 thì không cho phép nạp số điện thoại thứ nhất vào RAM. Ô nhớ 9 Nếu ô nhớ 9 được bật lên 1 thì cho phép nạp số điện thoại thứ 2. Nếu ô nhớ 9 bò xóa thì không cho phép nạp số điện thoại thứ 2. Ô nhớ 8 Nếu ô nhớ 8 được bật lên 1 thì cho phép nạp số điện thoạithứ 3. Nếu ô nhớ 8 bò xóa thì không cho phép nạp số điện thoại thứ 3. Ô nhớ 7 Nếu ô nhớ 7 được bật lên 1 thì cho phép nạp số điện thoại thứ 4. Nếu ô nhớ 7 bò xóa thì không cho phép nạp số điện thoạithứ 4. Sau khi phân nhiệm vụ từng ô nhớ thì hoạt động của chương trình ngắt 0 như sau: Đầu tiên, ô nhớ 0 (60H) bò xóa bởi chương trình chính tức là người điều khiển chưa nhấn mã số của mạch. Điều kiện 60H = 1 là sai. Chương trình hỏi tiếp 63H = 1 chưa. Nếu sai tức là ô nhớ 3 chưa được bật, mã số password thứ nhất chưa được nhấn. Ta nhấn mã password thứ nhất là 2. Khi nhấn phím số 3 thì điều kiện A = 2 là đúng. Lúc này, lệnh đặt 63H = 1 được thực hiện. Nếu điều kiện A = 2 là sai thì thoát khỏi chương trình ngắt. Điều kiện 63H=1 nếu đúng tức là ta đã nhấn phím số 2. Chương trình sẽ hỏi A=3 chưa. Nếu ta nhấn phím số 3 thì điều kiện A=3 là đúng nên ô nhớ 62H=1. Nếu nhấn không đúng số 3 tức A # 3 thì điều kiện A=3 là sai, lúc này lệnh xóa 63H=0 được thực hiện. Như vậy ta phải nhấn lại từ đầu mã password. Sau khi nhấn đúng mã password thứ 2 thì lệnh 62H=1 được thực hiện. Sau đó, chương trình hỏi tiếp A=9 chưa. Nếu A=9 thì mã số password thứ 3 đã được nhấn. Lúc này lệnh đặt 61H=1 được thực hiện. Nếu A # 9 thì mã số password thứ 3 đã nhấn sai. Lúc này lệnh xóa 62H=0, 63H=0 được thực hiện, sau đó thoát khỏi chương trình ngắt. Như vậy ta phải nhấn lại từ đầu mã passwords. Sau khi nhấn đúng mã password thứ 3 thì chương trình sẽ hỏi tiếp A = 7 chưa. Nếu A=7 thì mã password thứ 4 đã được nhấn đúng nên ô nhớ 0 được bật lên 1 (60H=1), chương trình biết rằng mã passwords đã đúng nên gọi chương trình INTRO. Chương trình INTRO báo bằng tiếng nói với nội dung: “ Đây là hệ thống điều khiển thiết bò điện từ xa thông qua đường điện thoại. Xin bạn hãy bấm mã điều khiển ”. Khi thực hiện xong chương trình INTRO ta mới tiếp tục nhấn lệnh điều khiển. Nếu điều kiện A=7 là sai tức là mã password thứ 4 nhấn sai thì lệng xóa 61H=0, 62H=0, 63H=0 được thực hiện. Sau đó thì thoát khỏi chương trình ngắt 0. Như vậy ta phải nhấn lại mã password từ đầu. Trở lại điều kiện 60H=1 là đúng tức mã password đã bấm đúng, điều kiện 64H=1 khi đó vẫn còn sai, nghóa là số thứ nhất của lệnh tắt hay tắt chưa được nhấn. Số này quyết đònh sự tắt hay tắt thiết bò. Nếu tiếp tục nhấn số 5 thì điều kiện A=5 là đúng, đây là lệnh tắt thiết bò, lúc này sẽ đặt 64H=1, 66H=1. Nếu điều kiện A=5 là sai thì kiểm tra điều kiện A=9. Nếu điều kiện A=9 đúng, thì đây là lệnh tắt thiết bò, lúc này sẽ đặt 64H=1, xóa 66H=0. Nếu điều kiện A=9 là sai thì chương trình sẽ hỏi tiếp A=6 chưa. Nếu A=6 thì sẽ gọi chương trình kiểm tra trạng thái tất cả thiết bò ( LCALL VOICE). Chương trình kiểm tra này sẽ báo cho người điều khiển biết trạng thái tất cả các thiết bò lúc đó. Nếu điều kiện A= 6 sai thì chương trình sẽ hỏi tiếp A=8 chưa. Nếu đúng A=8 thì lệnh này sẽ cho tắt tất cả các thiết bò. Nếu A=8 sai thì chương trình sẽ quay về chương trình phục vụ ngắt 1. Ta trở lại điều kiện 60H=1 tức là mã passwords đã được nhấn đúng, lúc này 64H=0 và 65H=0 do được xóa bởi chương trìng chính. Sau đó chương trình hỏi A=2 chưa. Nếu A=2 thì sẽ đặt 65H=1 tức lúc này cho phép nạp số điện thoại từ bàn phím. Sau khi 65H=1 thì lúc này 67H=0, 68H=0, 69H=0, 6A=0 do được xóa bởi chương trình chính lúc đầu. Sau đó, tiếp tục chương trình hỏi A=1 chưa, nếu đúng A=1 thì đặt 64H=1 tức cho phép nạp số điện thoại thứ nhất. Sau khi nạp xong số điện thoại thứ nhất thì đặt 69H=1 để nạp tiếp số điện thoại thứ 2 và xóa 6AH = 0 tức là số điện thoại thứ nhất đã được nạp. Nếu A # 1 thì chương trình sẽ quay về chương trình phục vụ ngắt 1. Sau khi nạp xong số điện thoại thứ nhất tức 69H=1. Lúc này chương trình cho phép nạp số điện thoại thứ 2. Sau khi nạp xong thì đặt 68H=1 để nạp tiếp số điện thoại thứ 3 và xóa 69H=0 để kết thúc việc nạp số điện thoại thứ 2. Sau khi nạp xong số điện thoại thứ 3 chương trình sẽ xóa 68H = 0 để kết thúc việc nạp số điện thoại thứ 3 và đặt 67H=1 để nạp tiếp số điện thoại thứ 4. Sau khi nạp xong số điện thoại thứ 4 thì chương trình sẽ xóa 67H=0, 64H=0 để báo cho chương trình biết là kết thúc việc nạp số điện thoại. . (60H=1), chương trình biết rằng mã passwords đã đúng nên gọi chương trình INTRO. Chương trình INTRO báo bằng tiếng nói với nội dung: “ Đây là hệ thống điều khiển thiết bò điện từ xa thông qua. điện thoại vào RAM. Ô nhớ 10 Nếu ô nhớ 10 được bật lên 1 thì cho phép nạp số điện thoại thứ nhất vào RAM Nếu ô nhớ 10 bò xóa 1 thì không cho phép nạp số điện thoại thứ nhất vào RAM. Ô nhớ. thì số thứ nhất của lệnh điều khiển đã nhấn. Nếu ô nhớ 4 bò xóa thì số thứ nhất của lệnh điều khiển chưa nhấn. Ô nhớ 6 Nếu ô nhớ 6 được bật lên 1 thì số thứ nhất của lệnh điều khiển tắt thiết

Ngày đăng: 05/07/2014, 12:21

Từ khóa liên quan

Tài liệu cùng người dùng

  • Đang cập nhật ...

Tài liệu liên quan