📄 print.asm
字号:
NAME PRINT
;******************************************************************************
; 版权所有 (C) 2004, 福建实达电脑设备有限公司
; 文件名称:
; ..\ctrl\print.asm
; 当前版本:
; 01-01
; 内容摘要:
; 针式打印模块功能实现
;
; 包含的函数:
; 历史纪录:
; 修改人 日期 版本 日志
; 瞿铃鉴 2004-08-02 01-01 Create this file
; 卢禹杉 2004-11-12 修改了判断打印机闲忙状态的函数
; 袁金颖 2004-11-22 修改了黑标定位完毕的初始状态,黑标为正向,距离黑标位置为0
; 叶宏 2004-11-28 增加判断是否正在打印API,TIMER3打印工程中不扫描按键,add by yeh 2004-11-28
; 瞿铃鉴 2004-12-13 STAR与EPSON的整合
; 瞿铃鉴 2005-01-06 01-01 添加掉电保护
; 瞿铃鉴 2005-01-18-11:40 01-01 字体改动
; 瞿铃鉴 2005-01-18-17:00 01-01 添加判黑标掉电保护
; 瞿铃鉴 2005-01-19-10:10 01-01 pop错误,_init_printer错误
; 瞿铃鉴 2005-01-20-10:10 01-01 打印字体类型不做掉电保护
; 瞿铃鉴 2005-01-20-14:20 01-01 去掉出针延迟
; 瞿铃鉴 2005-01-24-14:40 01-01 掉电保护初始化
; 瞿铃鉴 2005-01-27-14:15 01-01 打印换行走纸结束标志
; 瞿铃鉴 2005-01-28-10:35 01-01 添加行走纸标志_ucLineProtectFlag
; 瞿铃鉴 2005-01-29-14:25 01-01 添加掉电保护电源状态判断
; 瞿铃鉴 2005-01-30-20:21 01-01 添加掉电保护电源状态二次判断
; 瞿铃鉴 2005-01-31-14:50 01-01 添加走纸掉电保护电源状态二次判断
; 瞿铃鉴 2005-02-02-15:20 行走纸添加等待
; 瞿铃鉴 2005.02.21 软件升级为TCR-80V3.0
; 瞿铃鉴 2005-02-22 BUFFER口线做调整
; 瞿铃鉴 2005-03-02 timer21_int0改为MU_MPtimer21_int
; mos_on和mos_off中口线地址OUT3CS -> OUT4CS
; 瞿铃鉴 2005-03-10 ( 从走纸函数将相应的行或步数送入缓冲区
; to 开始启动走纸电机)进行掉电保护
; 瞿铃鉴 2005-03-15 走纸掉电补充
; 瞿铃鉴 2005-03-25 添加(在不进行掉电保护的时候)pass_bm_num保护
; _poweroff_init_prn中lock_fk_flag改为锁定状态
; 瞿铃鉴 2005-03-28 1.打印机在动作的时候,获取当前黑标检测头到黑标的距离函数要求不能够返回0
; 2.打印机固定为19行,修改目前的 西文18行,汉字19行
; 3.修改1/6英寸行宽步数,使其在中文打印和西文打印时都走24步
; (以前的做法在中文时走25步)
; 瞿铃鉴 2005-03-31 判黑标去抖动,pass_bm_num保护
; 瞿铃鉴 2005-04-07 初始化掉电保护变量及刚上电打印判缺纸
; 瞿铃鉴 2005-05-18 解决打印行末尾只打印半个字的问题
; 瞿铃鉴 2005-05-26 原先只对默认字体掉电保护,现在也对其它字体进行掉电保护
; 瞿铃鉴 2005-05-30 解决双向打印效果好后对单向打印的影响
; 瞿铃鉴 2005-08-03 去掉M512的代码
;********************************************************************************
; INC文件
;********************************************************************************
$INCLUDE (DPRINT.INC)
;********************************************************************************
; PUBLIC 与 EXTRN 函数与变量声明
;********************************************************************************
; 全局函数与变量
public _pe_bm_signal,_test_bm_num
public _init_pwroff,_init_printer, _s_printer, _printer_dot, _feed_mark, _EI_ucGetPrntItem
public _print_process_stat
public _EI_ucGetAsciiType, _EI_ucGetHzType, _EI_ucGetPrntDir,_EI_ucGetLineDis
public _EI_vCardCanWork,_EI_vPrintWork
public start_pf_motor,cm_return
public timer21_int ;走纸中断
public timer20_int ;字车中断
public cm_rush_flag, cm_init_flag, lock_fk_flag
public pf_rush_flag, pf_dir_flag, pf_speed_flag, pf_step_num, stop_feed_paper_flag
public feeding_flag, pf_limit_flag, initing_flag
public _db_BlackMarkNum, blackmark_flag,EA_ucCheckBMState,_EI_ucCheckBMState
public db_PaperWideFlag,db_PEFlag,blackmark_len
;掉电保护相关 ;2004-01-06
public _EI_vReadPrnCharBuff,_EI_vSetPara,_poweroff_init_prn
; 外部函数与变量
extrn set_cm_pha,clr_cm_pha,set_cm_phb,clr_cm_phb,cm_hold_current,cm_driver_current
extrn mos_on,mos_off
extrn set_pf_pha,clr_pf_pha,set_pf_phb,clr_pf_phb,pf_hold_current,pf_driver_current
extrn _role_on,_role_off,paper_size,PaperStatusInfo
extrn _set_mark_level,_read_bm_num,check_bm_info,_temp_signal,_temp_adc,hp_signal
extrn _EA_vSetBMLen,_EA_ucReadBMLen,mark_adc,temp_adc
extrn EI_vPaperLedOff, EI_vPaperLedOn ;TCR200有,TCR80无
extrn get_dot_ad_hz, get_dot_ad_ascii, get_dot_ad_zdy, get_dotzf_ad
extrn _get_printer_status
extrn out3flag
;掉电保护相关 ;2004-01-06
;;信息
extrn _ucPwrOffPrnType,_ucPrnCharNum,_ucPwrOffPrnFlag,db_temp1
extrn _ucLineProtectFlag,_ucPwrOffeedType,_ucStepTestFlag ;2005-03-10
extrn power_status ;2004-01-29-14:25
;;字体相关
extrn _ucHzAsciiModeFlag, _ucAscii7x7Flag, _ucAsciiDoubleWidthFlag
extrn _ucDoubleDensityFlag,_ucHzBiDirFlag, _ucHzSmallSizeFlag
;;走纸电机相关
extrn _ucFeedingFlag,_ucPfDirFlag,_ucPfStepCounter
extrn _ucPfSpeedFlag,_ucPfStepNum,_ucLfValueFlag
;;黑标相关参数
extrn _Rb_PositionFlag, _Rw_PassBmNum, _Rb_LastBMFlag, _Rb_PEFlag, _Rb_PENum
extrn _Rw_checkBmFlag ;2004-01-18-17:00
;******************************************************************************
; EQU 声明
;******************************************************************************
;******************************************************************************
; DS 变量声明
;******************************************************************************
para1 dseg saddr
print_return_value: ds 1 ;打印返回值0-正常(白色位置),1-黑标位置,2-hp错,3-打印头温度高,4-缺纸状态,5-命令输入错误
db_PaperWideFlag: ds 1 ;纸张类型标志: 00-76mm 01-57mm
;电机控制相关
cm_dir_flag: ds 1 ;控制字车电机方向:00-向左 01-向右
pf_dir_flag: ds 1 ;控制走纸电机方向: 00-反向 01-正向
cm_hold_state: ds 1 ;字车电机相位状态
pf_hold_state: ds 1 ;走纸电机相位状态
cm_step_counter: ds 1 ;字车加(减)速步数计算
pf_step_counter: ds 1 ;走纸加(减)速步数计算
cm_speed_state: ds 1 ;字车速度状态: 00-停止 01-加速 10-减速 11-匀速 ff-慢速
pf_speed_flag: ds 1 ;走纸速度状态: 00-停止 01-加速 10-减速 11-匀速 ff-慢速
cm_step_num: ds 2 ;字车控制步数
pf_step_num: ds 2 ;走纸控制步数
cm_rush_flag: ds 1 ;字车走动状态: 00-hold state 01-rush state 11-drive state
pf_rush_flag: ds 1 ;走纸走动状态: 00-normal state 01-rush state 11-drive state
cm_init_flag: ds 1 ;字车初始化标志: 00-空闲 01-上电初始化 ff-字车电机走动
feeding_flag: ds 1 ;正在走纸标志
pf_with_cm_flag: ds 1 ;字车走动同时走纸: 00-字车静止之后走纸 01-字车走动同时走纸,
ascii_feed_flag: ds 1 ;????????
printing_flag: ds 1 ;正在打印标志 00-不正在打印 01-正在打印
feed_dir_flag: ds 1 ;走纸方向标志: 00-空闲,01-正向,10-反向
feed_lines: ds 1 ;命令走纸行数
feed_step_by_step_flag: ds 1 ;单步走纸标志
lock_fk_flag: ds 1 ;走纸锁定标志: 00-打开按键 其他-锁定
cm_printing_flag: ds 1 ;字车在走标志: 00-字车不走 01- 字车在走
stop_feed_paper_flag: ds 1 ;走纸按键停止标志 00-打开 01- 停止
pf_limit_flag: ds 1 ;按键走纸标志: 00-可以按键走纸 01-不能按键走纸
;--------------------------------(定义给M110用)
db_10Step12SwitchFlag: ds 1 ;10步和12步的转换标志: 00-10步 01-12步
db_PinCmFlag: ds 1 ;字车电机动作: 00-翻转 01-不翻转
;--------------------------------(定义给M110用)
;打印类型相关
lf_value_flag: ds 1 ;00-1/8 01-1/6
print_map_flag: ds 1 ;00-字符打印 01-位图打印
hz_ascii_mode_flag: ds 1 ;00-西文本 01-中文
ascii_7x7_flag: ds 1 ;00-5*7 01-7*7
ascii_double_width_flag:ds 1 ;00-西文单倍密度 01-西文双倍密度
hz_double_density_flag: ds 1 ;00-汉字单倍密度 01-汉字双倍密度
hz_bi_dir_flag: ds 1 ;00-单向打印 01-双向打印
hz_small_size_flag: ds 1 ;00-大字 01-小字
hz_front: ds 1 ;小字相关
hz_back: ds 1 ;小字相关
hz_result0: ds 1 ;小字相关
hz_result1: ds 1 ;小字相关
map_len: ds 1 ;位图打印的字节数
map_line: ds 1 ;位图的行数
_prt_char_num: ds 1 ;打印字符缓冲区输入字符数
prt_char_ptr: ds 1 ;打印字符缓冲区的取字指针
pbuff_mflag: ds 1 ;当前缓冲区标志: 00-当前缓冲区为1 01-当前缓冲区为2
pbuff_sflag2: ds 1 ;2号缓冲区点阵情况
pbuff_sflag1: ds 1 ;1号缓冲区点阵情况
pbuff_base_addr: ds 3 ;打印点阵缓冲区首地址
old_prt_data: ds 1 ;打印点阵检验
old_prt_data_7x7: ds 1 ;打印点阵检验
old_prt_data_temp: ds 1 ;打印点阵检验
line_head_lf_flag: ds 1 ;行首换行标志
line_head_lf_value: ds 1 ;行首换行数
prt_buff_ptr0: ds 2 ;上半行指针
prt_buff_ptr1: ds 2 ;下半行指针
;黑标相关
db_PEFlag: ds 1 ;缺纸状态标志: 00-非缺纸状态 FFH-缺纸 其他-非黑色位置次数
db_PENum: ds 1 ;判断缺纸使用的计数器
db_LastBMFlag: ds 1 ;上次黑标状态: 00-白色 01-黑色
db_EnterBMFlag: ds 1 ;进入黑色位置的方向标志:00-反向 01-正向
feed_to_bm_flag: ds 1 ;走纸到黑标方向标志: 01-正向走纸到黑标 10-反向走纸到黑标
find_bm_flag: ds 1 ;黑标找到标志: 00-没有找到 01--找到
blackmark_flag: ds 1 ;用口线或者AD转换的标志:00-口线 01--AD转换
_db_BlackMarkNum: ds 1 ;黑标域值
blackmark_len: ds 1 ;黑标长度
check_BM_flag: ds 1 ;走纸过程检查黑标 00-无黑标 01-判到黑标
;逻辑查询相关
stop_position: ds 2 ;马达将停止位置
position_x: ds 2 ;行首位置
position_y: ds 2 ;行尾位置
cm_idle_flag: ds 1 ;空走状态标志
cm_idle_num: ds 2 ;空走步数
cm_logic_flag: ds 1 ;加速、减速、匀速
logic_delta1_flag: ds 1 ;逻辑补偿标志1
logic_delta2_flag: ds 1 ;逻辑补偿标志2
;出针相关
pin_out_flag: ds 1 ;出针标志位: 00-不能出针 01-可以出针
printing_counter: ds 2 ;出针数
prt_buff_pointer: ds 2 ;出针偏移指针
;生产测试用相关
esc_return_flag: ds 1 ;在命令解析阶段有返回值: 00-无 01-有
esc_return_value: ds 1 ;命令解析阶段返回值
pass_bm_num: ds 2 ;距离黑标的步数,最小为0
position_flag: ds 1 ;黑标定位标志 00-此时的步数为已走过黑标的步数 01-此时的步数为到达黑标要走的步数
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -