📄 print.asm
字号:
test_pin_not_out_flag: ds 1 ;出针不打印标志: 01-开始 10-结束 00-正常打印
initing_flag: ds 1 ;初始化标志: 00-初始化完毕 01-正在初始化
allAscii_flag: ds 1 ;00-全西文打印 01-有汉字打印
allAscii_temp: ds 1 ;00-全西文打印 01-有汉字打印
Pass_BmNum_Temp: ds 2 ;2005-03-31
Position_FlagTemp: ds 1 ;2005-03-31
;******************************************************************************
; 函数实现
;******************************************************************************
print cseg
version: db 'PRINT v3.0 2005-08-02'
;******************************************************************************
; 函数名:
; _init_printer
;
; 功能:
; 初始化打印模块(及变量初始化)
; 输入:
; 输出:
; bc 0-正常(白色位置) 1-黑标位置 2-hp错
; 3-打印头温度高 4-缺纸状态 5-命令输入错误
;-------------------------------------------------------------------------------
_init_printer:
push whl
mov initing_flag,#INITING ;正在初始化
mov logic_delta1_flag,#UN_LOGIC_DELTA ;逻辑补偿1不补偿
mov logic_delta2_flag,#UN_LOGIC_DELTA ;逻辑补偿2不补偿
mov db_PEFlag, #PE_UN_LACK ;不缺纸状态
mov !!_Rb_PEFlag,#PE_UN_LACK
mov db_PENum, #00H
mov !!_Rb_PENum,#00H
push ax ;2005-03-31 start
movw ax,!!_Rw_PassBmNum
movw Pass_BmNum_Temp,ax
mov a,!!_Rb_PositionFlag
mov Position_FlagTemp,a
pop ax ;2005-03-31 end
call mos_on ;启动mos
call mos_off ;关闭mos
;MU110字车电机初始状态
call cm_hold_current
call set_cm_pha
call set_cm_phb
mov cm_hold_state,#00h
movw cr20w,#00h
;MU110走纸电机初始状态
call pf_hold_current
call set_pf_pha
call set_pf_phb
mov pf_hold_state,#00h
movw cr21w,#00h
movw position_x,#12
mov db_PinCmFlag,#PIN_CM_HOLD ;不翻转
mov lock_fk_flag,#FEED_PAPER_OPEN ;走纸打开
mov esc_return_flag,#UN_ESC_RETURN ;无命令解析
mov esc_return_value,#00h
movw pass_bm_num,#01h
mov position_flag,#STEP_OVER_BM ;此时的步数为已走过黑标的步数
mov !!_Rb_PositionFlag,#STEP_OVER_BM
mov pf_limit_flag,#FEED_PAPER_OPEN ;走纸打开
mov lf_value_flag,#LF_VALUE18 ;1/8
mov !!_ucLfValueFlag,#LF_VALUE18
mov line_head_lf_flag,#LINEHEAD_NO_LF ;行首不换行
mov line_head_lf_value,#01h
mov pbuff_sflag2,#00h
mov pbuff_sflag1,#00h
mov old_prt_data_temp,#00h
mov old_prt_data,#00h
mov feed_dir_flag,#FEED_DIR_IDLE ;走纸空闲
mov feed_lines,#00h
call _read_bm_num
call _EA_ucReadBMLen
mov blackmark_len, c
add blackmark_len, #10 ;10步的偏差值
movg whl,#000000h
movg pbuff_base_addr,whl
movw prt_buff_pointer,#00h
mov feed_to_bm_flag,#FEED_DIR_IDLE ;走纸空闲
mov find_bm_flag,#UNFOUND_BM ;黑标没找到
mov check_BM_flag,#CHECK_UNBM ;走纸过程检查无黑标
movw !!_Rw_checkBmFlag,#CHECK_UNBM
mov pf_with_cm_flag,#PF_WHEN_CM_STOP ;字车静止之后走纸
mov ascii_feed_flag,#PF_WHEN_CM_STOP
mov cm_logic_flag,#00h ;逻辑查询
movw stop_position,#00h
movw position_y,#00h
mov cm_idle_num,#00h
mov cm_idle_flag,#CM_PIN ;无空走
mov pin_out_flag,#UN_PIN_OUT ;不能出针
mov hz_bi_dir_flag,#HZ_BI_DIR ;双向打印
mov !!_ucHzBiDirFlag,#HZ_SI_DIR
mov ascii_double_width_flag,#ASCII_SINGLE ;西文单倍密度
mov !!_ucAsciiDoubleWidthFlag,#ASCII_SINGLE
mov !!_ucAscii7x7Flag,#ASCII_7X7
mov ascii_7x7_flag,#ASCII_7X7 ;7*7
mov !!_ucHzAsciiModeFlag,#ASCII_MODE
mov hz_ascii_mode_flag,#ASCII_MODE ;西文本
mov pbuff_mflag,#PBUFF1 ;当前缓冲区为1
mov hz_double_density_flag,#HZ_DOUBLE
mov !!_ucDoubleDensityFlag,#HZ_DOUBLE
mov hz_small_size_flag,#HZ_SMALL ;小字
mov !!_ucHzSmallSizeFlag,#HZ_SMALL
mov _prt_char_num,#00h
mov print_map_flag,#PRINT_CHAR ;字符打印
mov map_len,#00h
mov map_line,#00h
mov feed_step_by_step_flag,#FEED_LINE ;行走纸
mov feeding_flag,#MOTOR_IDLE ;走纸电机空闲
mov !!_ucFeedingFlag,#MOTOR_IDLE
mov printing_flag,#UN_PRINTING
movw printing_counter,#00h
mov cm_printing_flag,#MOTOR_IDLE ;字车电机空闲
mov db_LastBMFlag, #LASTBM_WHITE ;(黑标状态)白色
mov !!_Rb_LastBMFlag,#LASTBM_WHITE
mov cm_init_flag,#MOTOR_IDLE ;字车电机空闲
mov cm_speed_state,#MOTOR_SPEED_STOP ;字车电机停止
mov cm_dir_flag,#MOTOR_DIR_L_OR_B ;控制字车电机向左
movw cm_step_num,#00h
mov cm_step_counter,#00h
mov cm_rush_flag,#MOTOR_HOLD_STATE ;字车保持状态
mov print_return_value,#PRNT_NORMAL ;正常(白色位置)
mov db_10Step12SwitchFlag,#DB_10STEP ;MU110 打印初始化10步
mov pf_dir_flag,#MOTOR_DIR_L_OR_B ;控制走纸电机反向
mov !!_ucPfDirFlag,#MOTOR_DIR_L_OR_B
movw pf_step_num,#00h
movw !!_ucPfStepNum,#00h
mov pf_rush_flag,#MOTOR_HOLD_STATE ;保持状态
mov pf_speed_flag,#MOTOR_SPEED_STOP ;走纸电机停止
mov !!_ucPfSpeedFlag,#MOTOR_SPEED_STOP
mov stop_feed_paper_flag,#FEED_PAPER_OPEN ;走纸打开
mov pf_step_counter,#00h
mov !!_ucPfStepCounter,#00h ;2004-01-24-14:40
mov !!_ucPwrOffPrnType, #00h
mov !!_ucPrnCharNum,#00h
mov !!_ucPwrOffPrnFlag, #00h
mov db_temp1,#00h ;2004-01-24-14:40
mov !!_ucLineProtectFlag,#00h ;2004-01-28-10:35
mov !!_ucPwrOffeedType,#00h ;2005-03-10 start
mov !!_ucStepTestFlag,#00h ;2005-03-10 end
mov allAscii_flag,#00h ;2005-03-28
mov allAscii_temp,#00h ;2005-03-28
mov db_EnterBMFlag, #ENTERBM_FORWORD ;2005-04-07
call paper_size
mov test_pin_not_out_flag,#TEST_PIN_OUT_NORMAL ;正常打印
call powerup_init
init_wait:
cmp cm_init_flag,#MOTOR_IDLE
bne $init_wait ;循环等待HP初始化结束
movw bc,#00h
cmp print_return_value,#PRNT_HP_ERR
bne $init_pf_motor ;2004-01-19-10:00
mov c,#02h
br $!init_printer_end ;硬件错误,没有找到hp
init_pf_motor:
mov print_return_value,#PRNT_NORMAL
call check_bm_info
bnc $init_printer_pf1
mov print_return_value, #PRNT_BLACK ;检查黑标当前状态
init_printer_pf1:
mov pf_dir_flag,#MOTOR_DIR_R_OR_F ;进240步
mov !!_ucPfDirFlag,#MOTOR_DIR_R_OR_F
movw pf_step_num,#240
movw !!_ucPfStepNum,#240
call start_pf_motor
init_printer0:
cmp feeding_flag,#MOTOR_IDLE
bne $init_printer0
cmp print_return_value,#PRNT_NORMAL
be $init_printer_pf3 ;上次为黑,再判断此时黑标状态,如果为黑,说明缺纸
mov print_return_value, #PRNT_NORMAL
call check_bm_info
bnc $init_printer_pf3
mov print_return_value,#PRNT_PAPER_LACK
init_printer_pf3:
mov pf_dir_flag,#MOTOR_DIR_L_OR_B ;退240步
mov !!_ucPfDirFlag,#MOTOR_DIR_L_OR_B
movw pf_step_num,#240
movw !!_ucPfStepNum,#240
call start_pf_motor
init_printer1:
cmp feeding_flag,#MOTOR_IDLE
bne $init_printer1
cmp print_return_value, #PRNT_PAPER_LACK ;缺纸状态检查
bne $init_prn_temper
mov print_return_value, #PRNT_NORMAL
movw bc, #04H
call EI_vPaperLedOn
mov db_PEFlag, #PE_LACK
mov !!_Rb_PEFlag,#PE_LACK
mov position_flag, #STEP_OVER_BM
mov !!_Rb_PositionFlag,#STEP_OVER_BM
br $!init_printer_end
init_prn_temper:
call _temp_signal
cmpw bc,#00h
bne $init_printer_end
init_bm_signal:
mov db_LastBMFlag, #LASTBM_WHITE
mov !!_Rb_LastBMFlag,#LASTBM_WHITE
call check_bm_info
bnc $init_printer_end
mov db_LastBMFlag, #LASTBM_BLACK
mov !!_Rb_LastBMFlag,#LASTBM_BLACK
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -