|
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
|