1. Lưu đồ giải thuật
BEGINP3.0 = 1 ? P3.0 = 1 ? S Đ P3.1 = 1 ? s Đ 2. Giải thích:
Khi reset CPU hay khi mới cấp điện thì chương trình chính bắt đầu. Đầu tiên chương trình sẽ khởi tạo các giá trị ban đầu cho các timer, các ngắt bên ngồi và xóa các port P0, P1, P2 về mức logic 0. Định nghĩa timer 0 hoạt động ở mode 1 tức mode đếm 16 bit. Định nghĩa ngắt ngoài 0, ngắt ngồi 1, ưu
LCALL RESET—MT8880LCALL DTMF LCALL DTMF ĐỊNH NGHĨA XĨA CÁC DỮ LIỆU ĐẶT NGẮT CẠNH ÂM ƯU TIÊN NGẮT 0 CHO PHÉP NGẮT 1 HOẠT ĐỘNG LCALL CHAY LCALL TROM
tiên ngắt 0 và đều là tác động cạnh âm. Sau khi khởi tạo các giá trị ban đầu thì chương trình chính cho phép ngắt 1 hoạt động để đợi tín hiệu chng, sau đó kiểm tra ở chân P3.0 có tín hiệu cháy hay khơng, nếu khơng có thì kiểm tra ở chân P3.1 có tín hiệu trộm hay khơng. Nếu khơng có tín hiệu trộm thì sẽ nhảy về kiểm tra lại tín hiệu cháy. Q trình như vậy sẽ đi vào vịng lặp vơ tận để kiểm tra các tín hiệu cháyvà trộm. Lúc này ngắt 1 đang chờ sự tác động chng. Nếu có tín hiệu chng tác động đến ngắt ngồi 1 thì sẽ gọi chương trình phục vụ ngắt ngồi 1. Sau khi chương trình ngắt ngồi 1 được thực hiện xong, nếu ta ấn 1 phím bất kì, chân IRQ/CP của MT8880 sẽ tác động đến ngắt ngoài 0 để gọi chương trình phục vụ ngắt ngồi 0. Do 2 tác động chng và tác động ấn phím là bất thường khơng theo qui luật, do đó phải sử dụng chương trình phục vụ ngắt tức khi có tác động mới xử lí. Nếu khơng chương trình sẽ ở vịng lặp lại chương trình chính để đợi.