Tải bản đầy đủ (.pdf) (9 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 15 pot

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.11 KB, 9 trang )

MOV R0

RAM
MOV P1

@R0
LCALL DELAY_1S
INC R0
LCALL RESET_MT8880
LCALL DTMF
Chương 15: CHƯƠNG TRÌNH CON PHÁT SỐ ĐIỆN
THOẠI THỨ 1-2-3-4
1. Lưu đồ giải thuật.
BEGIN
Đ
@R0 = * ?
S
RET
2. Giải thích:
Đầu chương trình sẽ nhảy đến đòa chỉ RAM để lấy dữ liệu
tại đòa chỉ này (số điện thoại). Sau đó gọi chương trình RESET-
MT8880 để khởi động lại cho MT8880 và gọi chương trình
DTMF để chọn chế độ phát. Sau đó nạp giá trò số điện thoại vào
thanh ghi phát dữ liệu của MT8880 và kiểm tra số điện thoại
nạp vào và nếu giá trò số điện thoại là phím * thì kết thúc việc
phát số điện thoại thứ nhất.Tương tự như vậy cho các số điện
thoại thứ 2-3-4.
LCALL RESET-MT8880
LCALL DTMF
ĐÓNG TẢI GIẢ
LCALL DELAY_10S


LCALL PSĐT
LCALL DELAY_1S
LCALL BAODONG
Ô NHỚ = 1
XVII. CHƯƠNG TRÌNH CON QUAY SỐ ĐIỆN THOẠI
THỨ 1-2-3-4:
1. Lưu đồ thuật giải :
BEGIN
THNM ?
MỞ TẢI GIẢ
RET
2. Giải thích:
Trước tiên sẽ gọi chương trình RESET-MT8880 để khởi
động lại MT8880, sau đó gọi chương trìng con DTMF để chọn
chế độ phát. Sau đó xuất tín hiệu đóng tải giả, tiếp theo đợi 10S
để chờ tín hiệu mời quay số. Sau đó sẽ gọi chương trình phát số
điện thoại. Sau khi phát số điện thoại xong kiểm tra tín hiệu
nhấc máy trong vòng 30 giây. Nếu không có tín hiệu nhấc máy
thì tắt tải giả kết thúc cuộc gọi. Nếu có tín hiệu nhấc máy thì
phát thông báo và đồng thời đặt ô nhớ =1 để cho biết là cuộc
gọi thành công. Sau đó tắt tải giả kết thúc cuộc gọi.
LCALL
QSBĐ
LCALL
QSBĐ2
XVII. CHƯƠNG TRÌNH CON QUAY SỐ BÁO ĐỘNG :
1. Lưu đồ giải thuật:

BEGIN
Đ

77H = 1 ?
S
S
76H =1 ?
Đ
S
77H =1 ?
Đ
RET
2. Giải thích :
Đầu tiên chương trình sẽ quay số điện thoại báo động thứ
1. Nếu quay số điện thoại thứ 1 thành công thì quay tiếp số điện
thoại thứ 2. Nếu cuộc gọi thứ 2 thành công thì thoát. Nếu cuộc
gọi thứ 1 thành công thì sẽ đặt ô nhớ 76H =1 để báo cho biết là
cuộc gọi thứ 1 thành công. Sau đó nhảy tới quay số cho cuộc gọi
thứ 2. Nếu cuộc gơi thứ 2 không thành công thì sẽ trở lại xem
cuộc gọi thứ nhất thành công chưa. Nếu cuộc gọi thứ 1 thành
công thì sẽ quay số thực hiện cuộc gọi thứ 2 tiếp. Cứ tiếp tục
làm như thế cho đến khi nào cuộc gọi thứ 2 thành công thì thôi.
Nếu cuộc gọi thứ 1 không thành công thì sẽ nhảy tới quay
số cho cuộc gọi thứ 2. Nếu cuộc gọi thứ 2 thành công thì đặt ô
nhớ 77H = 1 để báo cho biết là cuộc gọi thứ 2 đã thành công.
Sau đó nhảy về gọi tiếp cuộc gọi thứ 1, nếu cuộc gọi thứ 1
không thành công nữa thì sẽ nhảy sang cuộc gọi thứ 2 mà lúc
này cuộc gọi thứ 2 đã thành công rồi cho nên sẽ quay về thực
hiện cuộc gọi thứ 1. Cứ tiếp tục như vậy cho đến khi nào cả 2
cuộc gọi thành công thì thôi.
VIII. CHƯƠNG TRÌNH CON DELAY:
1. Lưu đồ giải thuật:
Đ

R1 = R1-1
S
BEGIN
R1 = 20
TR0 = 0
TF0 = 0
TH0 = high (+50000)
TL0 = low (-50000)
TR0 =1
TF0 =1
2. Giải thích:
Đây là chương trình phục vụ cho các chương trình khác khi
được gọi đến. Khi đó chương trình có nhiệm vụ làm trễ đi một
khoảng thời gian nhất đònh được cài đặt trước.
Đầu tiên chương trình nạp cho thanh ghi R1 = 20, tắt timer 0
bằng cách xóa TR0, xóa cờ báo tràn TF0. Sau đó TH0 được nạp
byte của (-50000) và byte thấp của (-50000) được nạp vào TL0.
Con số (-50000) là con số của hệ số 10, dấu trừ tượng trưng cho
các bit cao là bit 0.
Sau khi nạp thời hằng cho hai thanh ghi chương trình sẽ bật
timer 0. Timer 0 được đếm ở chế độ mode 1, đếm 16 bit, timer 0
tự động đếm lên cho đến FFFFH, rồi xuống 0000H. Lúc đó cờ
tràn TF0 được bật lên 1. Chương trình lại tiếp tục giảm R
1
, và
khi R
1
chưa bằng 0 thì chương trình lặp lại quá trình đếm của
timer 0.
Khi R1 = 0 thì chương trình sẽ thoát về từ gọi chương trình

con.
Cách tính thời gian chương trình delay:
Với chu kỳ của xung timer là 1us thì T
delay
được tính như sau:
T
delay
= 20 x 50000 = 1000000

s = 1 s

×