Đề bài là dùng 2 interrupt để tạo ra 2 sóng, nếu interrupt với negative slope thì tạo ra sóng 500Hz, còn interrupt với positive slope thì tạo ra sóng 250Hz. Xài uC 80535. Em không hiểu khúc lệnh MUL AB ở dưới lại tạo ra dc delay 10us. Mấy anh giải thích giúp em với
ZWEITON:
ORG 5B ;250 Hz -> T/2 = 2000µs
LJMP IRPOS
ORG 4B ;500Hz -> T/2 = 1000µs
LJMP IRNEG
ORG 1000h
START : SETB EAL
SETB EX2
SETB EX4
LOOP: LJMP LOOP
IRNEG: MOV R0, #100 ;T/2=10µs*100=1000µs
LCALL TON
RETI
IRPOS: MOV R0, #200 ;T/2=10µs*200=2000µs
LCALL TON
RETI
TON: MOV R3, #20
LOOP3: MOV R2, #250
LOOP2: CPL P4.3
MOV 01, R0
LOOP1: MUL AB ;10µs delay
MUL AB
DJNZ R1, LOOP1
DJNZ R2, LOOP2
DJNZ R3, LOOP3 ;TD=10µs*100*250*20=5s chạy với sóng 500 Hz hoặc
RET ;TD=10µs*200*250*20=10s chạy với sóng 250 Hz
ZWEITON:
ORG 5B ;250 Hz -> T/2 = 2000µs
LJMP IRPOS
ORG 4B ;500Hz -> T/2 = 1000µs
LJMP IRNEG
ORG 1000h
START : SETB EAL
SETB EX2
SETB EX4
LOOP: LJMP LOOP
IRNEG: MOV R0, #100 ;T/2=10µs*100=1000µs
LCALL TON
RETI
IRPOS: MOV R0, #200 ;T/2=10µs*200=2000µs
LCALL TON
RETI
TON: MOV R3, #20
LOOP3: MOV R2, #250
LOOP2: CPL P4.3
MOV 01, R0
LOOP1: MUL AB ;10µs delay
MUL AB
DJNZ R1, LOOP1
DJNZ R2, LOOP2
DJNZ R3, LOOP3 ;TD=10µs*100*250*20=5s chạy với sóng 500 Hz hoặc
RET ;TD=10µs*200*250*20=10s chạy với sóng 250 Hz