Tín hiệu 1KHz và 500Hz phát ra trên chân 1 (p1.0), thời gian phát tín hiệu 1KHz là 100ms và thời gian phát tín hiệu 500Hz là 200ms.
Khóa điện trên chân 8 (p1.7) dùng tắt mở tín hiệu cảnh báo.
FLAG BIT 00h ; Định nghĩ Flag dùng làm bit cờ, hiện có trị là 0.
ORG 0000H
START: JB P1.7,START ; Chờ đặt nút K1 đặt xuống mức 0.
JNB FLAG,NEXT ; Nếu bit cờ Flag là 0 thì nhẩy đến tên nhãn NEXT.
MOV R2,#200 ; Nạp số thập phân 200 vào thanh ghi r2.
DV: CPL P1.0 ; Lấy bù chân p1.0, lệnh bù bit có chức năng tự đảo.
LCALL DELY500 ; Cho gọi chương trình làm trễ 500us.
LCALL DELY500 ; gọi lần nữa chương trình dely500.
DJNZ R2,DV ; Cho đếm lùi và thực hiện lệnh bù cpl p1.0 đến 200 lần.
CPL FLAG ; Đảo bit trong cờ Flag.
NEXT: MOV R2,#200 ; Nạp lại số thập phân 200 vào thanh ghi r2.
DV1: CPL P1.0 ; Lấy bù chân p1.0, có chức năng tự đảo.
LCALL DELY500 ; Cho gọi chương trình làm trễ 500us.
DJNZ R2,DV1 ; Cho đếm lùi và thực hiện bù cpl p1.0 đến 200 lần.
CPL FLAG ; Lại cho đảo bit trong cờ Flag.
SJMP START ; Lập lại lệnh từ tên nhãn START.
DELY500: MOV R7,#250 ; Viết chương trình con làm trễ 500us. Nạp số 250 và thanh ghi r7.
LOOP: NOP ; Lệnh trống, dùng nó làm tăng thời gian trễ lên gấp đôi.
DJNZ R7,LOOP ; Đếm lùi r7 để làm trễ.
RET ; Cho quay lại thực hiện dòng lệnh sau lệnh call.
END ; Dừng biên dịch
Phân tích cách viết các câu lệnh:
Trong bài nầy, Bạn thấy dùng khai báo bit để định nghĩa tên tự đặt của Bạn, như:
flag BIT 0 ; Chữ flag do Bạn tự đặt là một BIT, hiện có giá trị là bit 0.
Bạn dùng lệnh nhẩy theo bit để kiểm tra khóa điện K1.
start: jb p1.7, start ; Lệnh này sẽ chờ chân p1.7 xuống bit 0, nếu không nó sẽ luôn dừng lại ở đây.
cpl p1.0 ; Lệnh lấy bù trên chân p1.0, nghĩa là nó đang ở mức 0 thì cho chuyển lên 1 và ngước lại.
Phân tích các câu lệnh trên Bạn thấy:
Loa sẽ hú với tín hiệu 1000us (do 2 lần gọi dely500) và kéo dài 200 lần rồi chuyển qua hú với tín hiệu 500us (do chỉ gọi dely500 có 1 lần) cũng thức hiện 200 lần. Với cách tạo ra tín hiệu hú 2 nhịp này, Bạn sẽ nghe tiếng hú từ Loa phát ra, tín hiệu nghe như tiếng còi hụ cảnh báo..