求大神帮忙看一下这段程序的正确与否!我是菜鸟 实在看不懂
2019-07-15 10:55发布
打开微信“扫一扫”,打开网页后点击屏幕右上角分享按钮
主程序 SP-CONTR: MOV DPTR,#addr16 ;T0初始值地址指针 MOV R3,1BH ;频率阶梯计数器赋值 MOV R2,1AH ;阶梯总步数计数器赋值 CLR C ORL C,73H ;判断加速时的转向标志 JC ROTE ;若转向标志为1,则跳转到反转地址 MOV R0,#20H ;正转模型首地址 AJMP PH ROTE: MOV R0,#27H ;反转模型首地址PH: MOV TMOD,01H ;定时器T0方式1定时 MOV TL0,#00H ;T0赋计时初值 MOV TH0,#00H SETB TR0 SETB ET0 SETB EALOOP: MOV A,R3 JNZ LOOP ;等待中断 CLR EA ;CPU关中断 SJMP HEAR ;结束中断服务程序清单 ORG 0000H INT-T0: PUSH A ;保护现场 MOV A,@R0 ;模型控制字送累加器A MOV P1,A ;输出控制模型 INC R0 ;模型控制字存储地址加1 MOV A,#00H ORL A,@R0 JZ TPL ;若是结束标志,则跳转RR: DEC R2 ;步进计数器减1 MOV A,#00H ORL A,R2 JZ THL ;若阶梯步长计数器为0,则跳转 ORL C,71H JNC ROTEL ;若是减速,则跳转 MOV A,#00H ;加速 MOVC A,@A+DPTR MOV TL0,A ;赋定时器T0初值的低8位MOV A,#01H
MOVC A,@A+DPTR MOV TH0,A ;赋定时器T0初值的高8位 AJMP QQROTEL: MOV A,#80H ;减速 MOVC A,@A+DPTR MOV TL0,A ;赋定时器T0初值的低8位 MOV A,#81H MOVC A,@A+DPTR MOV TH0,A ;赋定时器T0初值的高8位QQ: POP A ;恢复现场 REtiTHL: DJNZ R3,AT ;频率阶梯减1,若不为0跳转 AJMP QQAT: MOV R2,1AH ;阶梯步长赋值 INC DPTR INC DPTR ;初始值指针更新TRL: CLR C MOV A,R0 SUBB A,06H MOV R0,A ;恢复模型首地址 AJMP RR
一周热门 更多>