;dc motor drive sub-program ;=======register define================ mr1 equ p2.4 mr2 equ p2.5 ml1 equ p2.6 ml2 equ p2.7 ; mtr_cnt0 equ 6fh mtr_cnt1 equ 6eh mtr_time equ 6dh ;dc motor run time ;====================================== org 00h clr mr1 ;initial status off clr mr2 ;initial status off clr ml1 ;initial status off clr ml2 ;initial status off ; mtr_loop: mov mtr_time,#20 ;motor run time=2 Sec call forward ; mov mtr_time,#20 ;motor run time=2 Sec call stop ; mov mtr_time,#20 ;motor run time=2 Sec call back ; mov mtr_time,#20 ;motor run time=2 Sec call stop ; jmp mtr_loop ;==================================================================== ;-------------car forwarding----------- forward: clr mr1 ;right must inverse setb mr2 setb ml1 ;left is correct clr ml2 call run_dl ret ;------------car backing--------------- back: setb mr1 ;right must inverse clr mr2 clr ml1 ;left is correct setb ml2 call run_dl ret ;------------car lefting--------------- left: ;------------car righting-------------- right: ;------------car stop------------------ stop: clr mr1 clr mr2 clr ml1 clr ml2 call run_dl ret ;------------car run time-------------- run_dl: dl1: mov mtr_cnt0,#200 ;about 100mS x mtr_time dl2: mov mtr_cnt1,#250 djnz mtr_cnt1,$ djnz mtr_cnt0,dl2 djnz mtr_time,dl1 ret ; end