⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 print.asm

📁 linux下打印驱动源代码 适用于双步进针打驱动
💻 ASM
📖 第 1 页 / 共 5 页
字号:
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 + -