发表于:2011/11/10 10:39:46
#0楼
LED BIT P1.0
K1 BIT P2.1
K2 BIT P2.2
PWM DATA 20H
ORG 0000H
AJMP MAIN
ORG 000BH
LJMP TIMER0
ORG 001BH
LJMP TIMER1
ORG 0100H
MAIN: MOV SP,#30H
MOV PWM,#7FH
MOV TMOD,#21H ;1ms 定时
MOV TH0,#0FCH
MOV TL0,#18H
MOV TH1,PWM ;125us
MOV TL1,#00H
SETB EA
SETB ET1
SETB ET0
SETB TR0
SETB LED
JIANCE: JNB K1,LOOP1 ;按键K1
JNB K2,LOOP2 ;按键K2
JMP JIANCE
LOOP1: INC PWM
JMP DELAY
MOV R0,PWM
CJNE R0,#0FFH,JIANCE
MOV PWM,#7FH
JMP JIANCE
LOOP2:DEC PWM
JMP DELAY
MOV R0,PWM
CJNE R0,#7FH,JIANCE
MOV PWM,#7FH
JMP JIANCE
DELAY: ;将立即数传给寄存器R5 10MS延时
MOV R6,#014H
F2: MOV R7,#0FFH
A1: DJNZ R7,A1 ;若为0程序向下执行,若不为0程序跳转到
DJNZ R6,F2
RET
TIMER0: PUSH ACC
PUSH PSW
CLR TR1
MOV TH0,#0FCH
MOV TL0,#66H
MOV TH1,PWM
MOV TL1,#01H
SETB TR1
CLR LED
POP PSW
POP ACC
RETI
TIMER1: CLR TR1
SETB LED
RETI
END
哪位大侠,能否帮我看一下,这个是用两个定时器输出一个方波,通过两个按键增减脉宽.
两个能产生初始方波,但按键,增减,无法改变脉宽,外部硬件连接一切正常,小弟反复查看,还是无法看出程序上有什么错误
两个定时器产生的,方波
用的是STC89C52RC
忘各位师傅百忙中,抽空帮我看一下程序.
K1 BIT P2.1
K2 BIT P2.2
PWM DATA 20H
ORG 0000H
AJMP MAIN
ORG 000BH
LJMP TIMER0
ORG 001BH
LJMP TIMER1
ORG 0100H
MAIN: MOV SP,#30H
MOV PWM,#7FH
MOV TMOD,#21H ;1ms 定时
MOV TH0,#0FCH
MOV TL0,#18H
MOV TH1,PWM ;125us
MOV TL1,#00H
SETB EA
SETB ET1
SETB ET0
SETB TR0
SETB LED
JIANCE: JNB K1,LOOP1 ;按键K1
JNB K2,LOOP2 ;按键K2
JMP JIANCE
LOOP1: INC PWM
JMP DELAY
MOV R0,PWM
CJNE R0,#0FFH,JIANCE
MOV PWM,#7FH
JMP JIANCE
LOOP2:DEC PWM
JMP DELAY
MOV R0,PWM
CJNE R0,#7FH,JIANCE
MOV PWM,#7FH
JMP JIANCE
DELAY: ;将立即数传给寄存器R5 10MS延时
MOV R6,#014H
F2: MOV R7,#0FFH
A1: DJNZ R7,A1 ;若为0程序向下执行,若不为0程序跳转到
DJNZ R6,F2
RET
TIMER0: PUSH ACC
PUSH PSW
CLR TR1
MOV TH0,#0FCH
MOV TL0,#66H
MOV TH1,PWM
MOV TL1,#01H
SETB TR1
CLR LED
POP PSW
POP ACC
RETI
TIMER1: CLR TR1
SETB LED
RETI
END
哪位大侠,能否帮我看一下,这个是用两个定时器输出一个方波,通过两个按键增减脉宽.
两个能产生初始方波,但按键,增减,无法改变脉宽,外部硬件连接一切正常,小弟反复查看,还是无法看出程序上有什么错误
两个定时器产生的,方波
用的是STC89C52RC
忘各位师傅百忙中,抽空帮我看一下程序.

[此贴子已经被作者于2011/11/11 19:23:55编辑过]