速學單片機
wsdwqj老師我用2051寫了個程序,如果p3.4一直給低電平p3.5輸入60個脈沖。此程序就出錯,以后就是每給p3.5一個脈沖p1.7就輸出一個低電平,其他程序都沒有了,復位后工作60次又是這樣,請高手指教。程序如下
ORG 0000H
MAIN: SETB P1.7
SETB P1.4
JB P3.5, MAIN
CLR P1.7
ACALL D40MS
JB P3.5, MAIN
JB P3.4, D
MOV R5, #5
D9: CLR P1.4
ACALL D120HZ
SETB P1.4
ACALL D120HZ
DJNZ R5, D9
MOV R5, #5
D10: CLR P1.4
ACALL D100HZ
SETB P1.4
ACALL D100HZ
DJNZ R5, D10
MOV R5, #5
D11: CLR P1.4
ACALL D80HZ
SETB P1.4
ACALL D80HZ
DJNZ R5, D11
MOV R5, #5
D12: CLR P1.4
ACALL D50HZ
SETB P1.4
ACALL D50HZ
JB P3.5, MAIN
JB P3.4, D
AJMP D12
D120HZ: MOV R7, #100
D1: MOV R6, #20
D2: DJNZ R6, D2
DJNZ R7, D1
JB P3.5, MAIN
JB P3.4, D
RET
D100HZ: MOV R7, #125
D3: MOV R6, #20
D4: DJNZ R6, D4
DJNZ R7, D3
JB P3.5, MAIN
JB P3.4, D
RET
D80HZ: MOV R7, #150
D5: MOV R6, #20
D6: DJNZ R6, D6
DJNZ R7, D5
JB P3.5, MAIN
JB P3.4, D
RET
D50HZ: MOV R7, #250
D7: MOV R6, #20
D8: DJNZ R6, D8
DJNZ R7, D7
JB P3.5, MAIN
JB P3.4, D
RET
D: SETB P1.7
SETB P1.4
CLR P3.7
ACALL D5S
SETB P3.7
AJMP MAIN
D40MS: MOV R7, #100
D13: MOV R6, #200
D14: DJNZ R6, D14
DJNZ R7, D13
RET
D5S: MOV R7, #250
D15: MOV R6, #200
D16: MOV R5, #50
D17: DJNZ R5, D17
DJNZ R6, D16
DJNZ R7, D15
RET
END