请大家帮我看看程序,刚刚接触这个不久
时间:10-02
整理:3721RD
点击:
程序目的是输出阶梯波,我在原程序上加了控制台阶数的按钮,目的是方便控制台阶数,但是编译始终有问题,来个大神帮我改改吧(芯片是89c51,0832为功放,最后要用于仿真)
ORG 0000H ;在0000H单元存放转移指令
LJMP START ;转移到主程序START
ORG 0100H ;主程序从0100H开始
START: MOV A, #00H ;累加器A清0
MOV DPTR, #7FFFH ;0832 的地址送DPTR,假定P2.7接
MOV R1,TJS
TJS:mov A,P2 ;读取端口
JNB ACC.0,K_UP ;按下K_UP键,转K_UP
K_UP:MOV A,SETCNT
INC A,TJS ;台阶数加1
CJNE A,#10,LP ;未到10,返回
MOV TJS,01H ;到10,变为1台阶数
SJMP LP
LP: MOVX @DPTR, A ;送数据至 0832
LCALL DELAY10ms ;10ms延时
DJNZ R1, NEXT ;不到 10 台阶转移
SJMP START ;产生下一个周期
NEXT: ADD A, #10 ;台阶增幅
SJMP LP ;产生下一台阶
DELAY10ms: MOV R6,#20 ;10ms延时程序
DEL2: MOV R7,#248
DJNZ R7,$
DJNZ R6,DEL2
RET
END
ORG 0000H ;在0000H单元存放转移指令
LJMP START ;转移到主程序START
ORG 0100H ;主程序从0100H开始
START: MOV A, #00H ;累加器A清0
MOV DPTR, #7FFFH ;0832 的地址送DPTR,假定P2.7接
MOV R1,TJS
TJS:mov A,P2 ;读取端口
JNB ACC.0,K_UP ;按下K_UP键,转K_UP
K_UP:MOV A,SETCNT
INC A,TJS ;台阶数加1
CJNE A,#10,LP ;未到10,返回
MOV TJS,01H ;到10,变为1台阶数
SJMP LP
LP: MOVX @DPTR, A ;送数据至 0832
LCALL DELAY10ms ;10ms延时
DJNZ R1, NEXT ;不到 10 台阶转移
SJMP START ;产生下一个周期
NEXT: ADD A, #10 ;台阶增幅
SJMP LP ;产生下一台阶
DELAY10ms: MOV R6,#20 ;10ms延时程序
DEL2: MOV R7,#248
DJNZ R7,$
DJNZ R6,DEL2
RET
END
