Tải bản đầy đủ (.pdf) (8 trang)

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

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (115.37 KB, 8 trang )

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.

×