JMP LLL2 LLL1: MOV A,TL0 ;檢測滴速是否處于警戒范圍內(nèi) CLR C SUBB A,22H ;22H為保存滴速最大警戒值單元 JNC WARN ;滴速大于最大警戒值,則報(bào)警 JMP LLL2 CLR C MOV A,TL0 SUBB A,#23H ;23H為保存滴速最小警戒值單元 JC WARN ;滴速小于最小警戒值,則報(bào)警 MOV 20H,TL0 LLL2: CALL S_BINBCD ;將滴速數(shù)值轉(zhuǎn)化為BCD碼,以供顯示 CALL DISP ;調(diào)用顯示子程序,顯示滴速實(shí)際值 MOV A,20H SUBB A,21H ;21H為保存滴速設(shè)定值單元 JZ START ;實(shí)際滴速=設(shè)定滴速,則返回 MOV B,#m ;調(diào)入步進(jìn)系數(shù)m,m反映了滴速差與步進(jìn) ;電機(jī)轉(zhuǎn)動步數(shù)之間的倍數(shù)關(guān)系 PUSH PSW MUL A,B MOV R4,A ;保存乘積的低8位 MOV A,B JZ JUDG ;如果高8位為0,即步數(shù)小于或等于255, ;則轉(zhuǎn)步進(jìn)電機(jī)正反轉(zhuǎn)判斷 MOV R4,#255 ;如果高8位不為0,即步數(shù)大于255, ;則設(shè)定本監(jiān)控周期最大轉(zhuǎn)動步數(shù)為255 JUDG: POP PSW JC REV ;如果C=1,則N實(shí)〈 N設(shè) ,控制步進(jìn)電機(jī)反轉(zhuǎn) FOR : MOV R0,#00H ;否則C=0,正轉(zhuǎn),正轉(zhuǎn)取碼指針初值 START2: MOV A,R0 ;取碼指針載入A MOV DPTR,#BU_TABLE ;數(shù)據(jù)指針指到BU-TABLE MOV A,@a+BU-TABLE ;至BU-TABLE取值 JZ FOR ;取到結(jié)束碼,跳至FOR CPL A MOV P2,A ;將取到的碼輸出到P2口 CALL DELAY ;20毫秒延時(shí)(速度) INC R0 ;取碼指針加1,取下一個(gè)碼 DJNZ R4,START2 JMP START REV: MOV R0,#05H ;反轉(zhuǎn)取碼指針初值 START3: MOV A,R0 MOV DPTR,#BU_TABLE MOV A,@A+DPTR JZ REV ;取到結(jié)束碼00H,則跳至REN CPL A MOV P2,A CALL DELAY ;延時(shí)20毫秒 INC R0 DJNZ R4,START3 ;未走完步數(shù),則繼續(xù) JMP START
|