l 主程序定时器脉冲的输出程序 ORG 0000H AJMP MAINORG 0013HAJMP INT1ORG 100H MAIN: MOV TMOD,#11H ;设置T0,T1为定时方式1 MOV TL0,#1AH ;置计数初值 MOV TH0,#FCH MOV TL1,#1AH MOV TH1,#FCH MOV IE , #8EH ;设置中断允许 MOV IP , #0AH ;设置中断优先级 SETB TR0 ;启动中断 SETB TR1 LOOP: JB TF0,LOOP1 ;中断查询 JB TF1,LOOP2 AJMP LOOP LOOP1: MOV TL0,#1AH ;重新置计数初值 MOV TH0,#FCH CLR TF0 CPL P1.0 ;取反输出 AJMP LOOP LOOP2: MOV TL1,#1AH MOV TH1,#FCH CLR TF1 CPL P1.2 AJMP LOOP
l 中断服务程序 INT1: MOV R1,#00H MOV R2,#04H TEST: MOV A, P2 JNB P3.3,TEST ;检测是否有中断 SETB EX1 ;开外部中断 CH: DJNZ R2,MWC ;检查清扫状况 CLR TF0 CLR TF1MWC: INC R1 JB P2.3,LP1 ;是否悬空 JNB P2.2,TEST ;是否碰撞 MOV A,R1 JNB D0H,OS ;判断碰撞类型,偶数转 JB P2.1,LP3 LP2: MOV A,R2 JNB D0H,OS1 ACALL HH OS1: ACALL Zzw ;左转弯90度 ACALL Zxqx ;直线前进20cm ACALL Zzw ;左转弯90度 AJMP TEST
LP3: DEC R2 MOV A,R2 JNB D0H,CH ;连续两次转弯不可行,转 ACALL YDHZW AJMP TEST OS: JB P2.0,LP4 LP5: MOV A,R2 JNB D0H,OS2 ACALL HH OS2: ACALL Yzw ;右转弯90度 ACALL Zxqx ;直线前进20cm ACALL Yzw ;右转弯90度 AJMP TEST LP4: DEC R2 MOV A,R2 JNB D0H,CH ;连续两次转弯不可行,转 ACALL YDHZW AJMP TEST HH: INC R1 RET
l 服务子程序:Zzw: MOV R0,#20H ;正转控制字首址 MOV R3,#7846 ;转90度的脉冲数 ACALL YLKZ MOV R0,#27H ;反转控制字首址 MOV R3,#7846 ;转90度的脉冲数 ACALL ZLKZ RET Zxqx: MOV R0,#20H ;正转控制字首址 MOV R3,#7500 ;前进20cm的脉冲数 ACALL YLKZ ACALL ZLKZ RET Yzw: MOV R0,#20H ;正转控制字首址 MOV R3,#7846 ;转90度的脉冲数 ACALL ZLKZ MOV R0,#27H ;反转控制字首址 MOV R3,#7846 ;转90度的脉冲数 ACALL YLKZ RET YDHZW: MOV R0,#20H ;正转控制字首址 MOV R3,#15692 ;转90度的脉冲数 ACALL YLKZ MOV R0,#27H ;反转控制字首址 MOV R3,#15692 ;转90度的脉冲数 RET
l 右轮控制程序: YLKZ: PUSH A ;保护现场 MOV A,@R0 MOV P1.1,A ;输出控制脉冲 ACALL DLY ;调用延时程序 INC R0 ;控制字存储地址增1 MOV A,#00H ORL A,@R0 ;是结束标志转移 JZ TPL LOOP1: DJNZ R3,LOOP ;步数不为0,转移 POP A RET TPL: MOV A,R0 ;恢复控制字首址 SUBB A,#06H MOV R0,A AJMP LOOP1 DLY: MOV R4,#M ;通过改变M,M1的值调整转速DLY1:MOV A,#M1 LOOP2: DEC A JNZ LOOP2DJNZ R4,DLY1 RET
l 左轮控制程序: ZLKZ: PUSH A ;保护现场 MOV A,@R0 MOV P1.3,A ;输出控制脉冲 ACALL DLY ;调用延时程序 INC R0 ;控制字存储地址增1 MOV A,#00H ORL A,@R0 ;是结束标志转移 JZ TPL LOOP1: DJNZ R3,LOOP ;步数不为0,转移 POP A RET TPL: MOV A,R0 ;恢复控制字首址 SUBB A,#06H MOV R0,A AJMP LOOP1 DLY: MOV R4,#M ;通过改变M,M1的值调整转速DLY1:MOV A,#M1 LOOP2: DEC A JNZ LOOP2DJNZ R4,DLY1 RET
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
一周热门 更多>