速学单片机
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