📄 print.asm
字号:
bne $cm_accelerate_tbl_1
br $!cm_accelerate_over ;10步加速
cm_12stepAccelerate:
mov c,cm_step_counter
subw ax,bc
shlw ax,1
movw hl,ax
movw ax,[vvp+hl]
addw cr20w,ax
dec cm_step_counter
cmp cm_step_counter,#00h
bne $cm_accelerate_tbl_1 ;12步加速
mov cm_speed_state,#MOTOR_SPEED_CONST
subw cm_step_num,#24
br $cm_accelerate_tbl_1
cm_accelerate_over:
mov cm_speed_state,#MOTOR_SPEED_CONST
subw cm_step_num,#20 ;???????????????????
cm_accelerate_tbl_1:
pop bc
pop hl
pop ax
pop vvp
br $!cm_ph_exchange
CM_DECELERATE_TIMER_TBL: dw 0830h,0830h,086Ch,08E4h
dw 0984h,0A37h,0B13h,0C3Eh
dw 0DE2h,1075h,1573h,33DEh
cm_decelerate_tbl:
push vvp
push ax
push hl
movg vvp,#CM_DECELERATE_TIMER_TBL
cmp db_10Step12SwitchFlag,#DB_10STEP
bne $cm_12stepDecelerate
movw ax,#02h ;movw ax,#00h??????
mov x,cm_step_counter ;会不会影响ax值
shlw ax,1
movw hl,ax
movw ax,[vvp+hl]
addw cr20w,ax
inc cm_step_counter
cmp cm_step_counter,#10
bne $cm_decelerate_tbl_1
br $!cm_decelerate_over ;mu-110,减速10步
cm_12stepDecelerate:
movw ax,#00h
mov x,cm_step_counter
shlw ax,1
movw hl,ax
movw ax,[vvp+hl]
addw cr20w,ax
inc cm_step_counter
cmp cm_step_counter,#12 ;mu-110,减速12步
bne $cm_decelerate_tbl_1
cmp pf_with_cm_flag,#PF_WHEN_CM_WORK
bne $cm_decelerate_over
mov pf_with_cm_flag,#PF_WHEN_CM_STOP
call start_pf_motor
cm_decelerate_over:
mov cm_rush_flag,#MOTOR_RUSH_STATE
mov cm_speed_state,#MOTOR_SPEED_STOP
cm_decelerate_tbl_1:
pop hl
pop ax
pop vvp
br $!cm_ph_exchange
cm_constant_move:
call cm_driver_current
call cm_hold_current
call cm_driver_current
decw cm_step_num
cmpw cm_step_num,#00h
be $cm_constant_mov_00
addw cr20w,#830h ; 可合并
br $!cm_ph_exchange
cm_constant_mov_00:
addw cr20w,#830h ; 可合并
mov cm_speed_state,#MOTOR_SPEED_DEC
cmp db_10Step12SwitchFlag,#DB_10STEP
bne $cm_12constant
mov cm_step_counter,#00h ; 可合并
br $!cm_ph_exchange
cm_12constant:
mov cm_step_counter,#00h ; 可合并
br $!cm_ph_exchange
;-------------------进入中断字车电机走动START---------------------------------
;字车已经初始化完,开始正常工作
cm_int_20:
cmp cm_init_flag,#MOTOR_WORK ;//00-空闲,01-上电初始化,0ff-字车电机走动
be $cm_int_30
br $!cm_int_end ;判断字车电机走动还是空闲
cm_int_30:
cmp cm_rush_flag,#MOTOR_RUSH_STATE
bne $cm_int_rush_11
addw cr20w,#2ecch
call cm_driver_current
call cm_hold_current
call cm_driver_current
mov cm_rush_flag,#MOTOR_DRIVE_STATE
cmp cm_speed_state,#MOTOR_SPEED_STOP
bne $cm_int_rush_30_0
mov cm_rush_flag,#MOTOR_HOLD_STATE ;判断字车电机下时刻状态
cm_int_rush_30_0:
br $!cm_int_end
cm_int_rush_11:
cmp cm_rush_flag,#MOTOR_DRIVE_STATE
bne $cm_int_rush_00
cm_int_rush_20:
cmp cm_speed_state,#MOTOR_SPEED_ACC
bne $cm_speed_11
br $!cm_accelerate_tbl ;加速
cm_speed_11:
cmp cm_speed_state,#MOTOR_SPEED_CONST
bne $cm_speed_10
br $!cm_speed_com ;匀速
cm_speed_10:
cmp cm_speed_state,#MOTOR_SPEED_DEC
bne $cm_speed_20
br $!cm_decelerate_00 ;减速
cm_speed_20:
cmp cm_speed_state,#MOTOR_SPEED_LOW
bne $cm_speed_00
br $!cm_speed_low ;慢速
cm_speed_00: ;此情况不存在。
mov cm_rush_flag,#MOTOR_HOLD_STATE
br $!cm_int_end
cm_int_rush_00:
call cm_hold_current ;30%电流
set1 cmk20 ;置中断标志
cmp test_pin_not_out_flag,#TEST_PIN_OUT_START ;生产测试 TEST_PIN_OUT_NORMAL
bne $cm_int_rush_00_0
not1 cm_dir_flag.0
mov cm_logic_flag,#00h ;
mov cm_step_num,#250
mov cm_speed_state,#MOTOR_SPEED_ACC
call start_cm_motor
br $!cm_int_end
cm_int_rush_00_0:
mov cm_init_flag,#MOTOR_IDLE ;0-空闲,1-上电初始化,0ff-字车电机走动
cmp feeding_flag,#MOTOR_IDLE
bne $sp_start_8_reserve
clr1 ce2 ;停止计数
sp_start_8_reserve:
mov a,pbuff_sflag1
cmp pbuff_mflag,#PBUFF1
be $sp_start_8
mov a,pbuff_sflag2
sp_start_8:
cmp a,#01h
be $sp_start_89
mov cm_printing_flag,#MOTOR_IDLE
cmp a,#00h ;判断是否有新的一行要打印
be $feed_in_cm_0
br $!sp_start_exit
feed_in_cm_0:
mov a,pbuff_sflag1
cmp pbuff_mflag,#PBUFF1
bne $sp_start_8_000
mov a,pbuff_sflag2
sp_start_8_000:
cmp a,#00h
bne $sp_start_8_001
call cm_move_in_centre ;没有新的一行要打印,把字车走到中间位置
mov pf_limit_flag,#FEED_PAPER_OPEN
sp_start_8_001:
br $!sp_start_exit
sp_start_89:
cmp hz_bi_dir_flag,#HZ_BI_DIR ;双向打印
be $sp_start_9
sp_start_10:
not1 cm_idle_flag.0
cmp cm_idle_flag,#CM_IDLE
bne $sp_start_9
movw bc,position_x
movw ax,position_y
subw ax,bc
shrw ax,1
movw cm_idle_num,ax
mov cm_logic_flag,#01h
not1 cm_dir_flag.0
mov cm_speed_state,#MOTOR_SPEED_ACC
cmp cm_dir_flag,#MOTOR_DIR_L_OR_B
be $sp_start_80
movw stop_position,position_y
addw stop_position,#24
br $sp_start_cm_motor
sp_start_80:
movw stop_position,position_x
subw stop_position,#24
sp_start_cm_motor:
call start_cm_motor
br $!sp_start_exit
sp_start_9:
mov cm_logic_flag,#00h
cmp feeding_flag,#MOTOR_IDLE
bne $sp_start_91
mov logic_delta2_flag,#LOGIC_DELTA
call logic_search
mov logic_delta2_flag,#UN_LOGIC_DELTA
movg vvp,#PRT_BUFFER2_1 ;PRT_BUFFER2_1 EQU 0FE500H 512B
cmp pbuff_mflag,#PBUFF1
bne $sp_start_5
movg vvp,#PRT_BUFFER1_1
sp_start_5:
movw bc,position_y
movw hl,position_x
subw bc,hl ;????? 这条指
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -