JMP LLL2 LLL1: MOV A,TL0 ;检测滴速是否处于警戒范围内 CLR C SUBB A,22H ;22H为保存滴速最大警戒值单元 JNC WARN ;滴速大于最大警戒值,则报警 JMP LLL2 CLR C MOV A,TL0 SUBB A,#23H ;23H为保存滴速最小警戒值单元 JC WARN ;滴速小于最小警戒值,则报警 MOV 20H,TL0 LLL2: CALL S_BINBCD ;将滴速数值转化为BCD码,以供显示 CALL DISP ;调用显示子程序,显示滴速实际值 MOV A,20H SUBB A,21H ;21H为保存滴速设定值单元 JZ START ;实际滴速=设定滴速,则返回 MOV B,#m ;调入步进系数m,m反映了滴速差与步进 ;电机转动步数之间的倍数关系 PUSH PSW MUL A,B MOV R4,A ;保存乘积的低8位 MOV A,B JZ JUDG ;如果高8位为0,即步数小于或等于255, ;则转步进电机正反转判断 MOV R4,#255 ;如果高8位不为0,即步数大于255, ;则设定本监控周期最大转动步数为255 JUDG: POP PSW JC REV ;如果C=1,则N实〈 N设 ,控制步进电机反转 FOR : MOV R0,#00H ;否则C=0,正转,正转取码指针初值 START2: MOV A,R0 ;取码指针载入A MOV DPTR,#BU_TABLE ;数据指针指到BU-TABLE MOV A,@a+BU-TABLE ;至BU-TABLE取值 JZ FOR ;取到结束码,跳至FOR CPL A MOV P2,A ;将取到的码输出到P2口 CALL DELAY ;20毫秒延时(速度) INC R0 ;取码指针加1,取下一个码 DJNZ R4,START2 JMP START REV: MOV R0,#05H ;反转取码指针初值 START3: MOV A,R0 MOV DPTR,#BU_TABLE MOV A,@A+DPTR JZ REV ;取到结束码00H,则跳至REN CPL A MOV P2,A CALL DELAY ;延时20毫秒 INC R0 DJNZ R4,START3 ;未走完步数,则继续 JMP START
|