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

📄 print.asm

📁 linux下打印驱动源代码 适用于双步进针打驱动
💻 ASM
📖 第 1 页 / 共 5 页
字号:
        movw    bc,#01h                                     
init_printer_end:   
	movw    pass_bm_num,Pass_BmNum_Temp				;2005-03-31
        mov     position_flag,Position_FlagTemp       			;2005-03-31                                        
        mov     initing_flag,#INITED                           
        pop     whl                                         
        ret
;******************************************************************************
; 函数名:
;     _init_pwroff
;
; 功能:
;     初始化掉电保护变量
; 输入:
; 输出:
;-------------------------------------------------------------------------------
_init_pwroff:                                          
        mov	!!_Rb_PEFlag,#PE_UN_LACK			;2005-04-07  start	
	mov	!!_Rb_PENum,#00H                                                              
        mov	!!_Rb_PositionFlag,#STEP_OVER_BM
        mov     !!_ucLfValueFlag,#LF_VALUE18                
        movw	!!_Rw_checkBmFlag,#CHECK_UNBM
        mov     !!_ucHzBiDirFlag,#HZ_SI_DIR                         
        mov     !!_ucAsciiDoubleWidthFlag,#ASCII_SINGLE
        mov	!!_ucAscii7x7Flag,#ASCII_7X7
        mov	!!_ucHzAsciiModeFlag,#ASCII_MODE          
        mov     !!_ucDoubleDensityFlag,#HZ_DOUBLE		                 
        mov     !!_ucHzSmallSizeFlag,#HZ_SMALL                                                                                        
        mov     !!_ucFeedingFlag,#MOTOR_IDLE                             
        mov	!!_Rb_LastBMFlag,#LASTBM_WHITE          
        mov     !!_ucPfDirFlag,#MOTOR_DIR_L_OR_B   
        movw    !!_ucPfStepNum,#00h                            
        mov     !!_ucPfSpeedFlag,#MOTOR_SPEED_STOP 
        mov     !!_ucPfStepCounter,#00h 				
        mov     !!_ucPwrOffPrnType, #00h
        mov	!!_ucPrnCharNum,#00h
        mov     !!_ucPwrOffPrnFlag, #00h
	mov	db_temp1,#00h						
	mov	!!_ucLineProtectFlag,#00h				
	mov     !!_ucPwrOffeedType,#00h					
	mov	!!_ucStepTestFlag,#00h					  					
        ret        						;2005-04-07  end
;******************************************************************************
; 函数名:
;     poweroff_init_prn
;
; 功能:
;     掉电初始化打印机
;------------------------------------------------------------------------------- 
_poweroff_init_prn:
	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     db_PENum, #00H 						
					
        push    ax							;2005-04-07 start
        movw	ax,!!_Rw_PassBmNum
        movw    Pass_BmNum_Temp,ax
        mov	a,!!_Rb_PositionFlag
        mov     Position_FlagTemp,a
        pop     ax      						;2005-04-07  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_CLOSE       			;走纸关闭    2005-03-25                                       
        mov     esc_return_flag,#UN_ESC_RETURN                        	;无命令解析
        mov     esc_return_value,#00h                       
        movw    pass_bm_num,#01h           
        mov     position_flag,#STEP_OVER_BM    				;此时的步数为已走过黑标的步数                                                   
        mov     pf_limit_flag,#FEED_PAPER_OPEN                          ;走纸打开
        mov     lf_value_flag,#LF_VALUE18            			;1/8               
        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				;走纸过程检查无黑标
        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				;HZ_BI_DIR-双向打印                          
        mov     ascii_double_width_flag,#ASCII_SINGLE			;西文单倍密度
        mov     ascii_7x7_flag,#ASCII_7X7              			;7*7 
        mov     hz_ascii_mode_flag,#ASCII_MODE				;西文本                     
        mov     pbuff_mflag,#PBUFF1   					;当前缓冲区为1                         
        mov     hz_double_density_flag,#HZ_DOUBLE	                 
        mov     hz_small_size_flag,#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     printing_flag,#UN_PRINTING                          
        movw    printing_counter,#00h                       
        mov     cm_printing_flag,#MOTOR_IDLE 				;字车电机空闲                      
        mov     db_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_R_OR_F                          	;控制走纸电机正向 2005-04-07    
        movw    pf_step_num,#00h                            
        mov	pf_rush_flag,#MOTOR_HOLD_STATE          		;保持状态             
        mov     pf_speed_flag,#MOTOR_SPEED_STOP                         ;走纸电机停止 
        mov	stop_feed_paper_flag,#FEED_PAPER_OPEN             	;走纸打开                          
        mov     pf_step_counter,#00h 
        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    
Pwroffinit_wait:                                                  
        cmp     cm_init_flag,#MOTOR_IDLE                           
        bne     $Pwroffinit_wait                                   		;循环等待HP初始化结束            
Pwroff_init_bm_signal:                                             
        mov     db_LastBMFlag, #LASTBM_WHITE                         
        call    check_bm_info                               
        bnc     $Pwroffinit_printer_end                           
        mov     db_LastBMFlag, #LASTBM_BLACK                                                           
Pwroffinit_printer_end: 
	movw    pass_bm_num,Pass_BmNum_Temp				;2005-04-07
        mov     position_flag,Position_FlagTemp       			;2005-04-07                                           
        mov     initing_flag,#INITED                           
        pop     whl                                         
        ret	                                                
        
;******************************************************************************
; 函数名:
;     powerup_init
;
; 功能:
;     字车上电定位(加速10位)    
;-------------------------------------------------------------------------------   
powerup_init:                                      
        cmp     cm_init_flag,#MOTOR_IDLE                           
        bne     $powerup_init                           
        call    hp_signal                                   
        bc      $Cm_init_left                      		;判断HP信号高低
Cm_init_right:                                              
        movw    cm_step_num,#240			    
        mov     cm_rush_flag,#MOTOR_RUSH_STATE                           
        mov     cm_init_flag,#MOTOR_INIT                           
        mov     cm_dir_flag,#MOTOR_DIR_R_OR_F                            
        mov     db_10Step12SwitchFlag,#DB_10STEP                  
        mov     cm_step_counter,#10                        
        mov     cm_speed_state,#MOTOR_SPEED_ACC                         
        call    timer20_init                       		;hp信号为低,向右no more than 230步         
Cm_init_right_wait:                                         
        call    hp_signal                                   
        bnc     $Cm_init_right_wait1                        
        cmp     cm_speed_state,#MOTOR_SPEED_ACC                         
        be      $Cm_init_acc_high                           
        cmp     cm_speed_state,#MOTOR_SPEED_CONST                         
        be      $Cm_hp_here                        		;HP为低中的情况1
Cm_init_right_wait1:                                        
        cmp     cm_init_flag,#MOTOR_IDLE                           
        bne     $Cm_init_right_wait                         
        mov     print_return_value,#PRNT_HP_ERR		            
        ret                                       		;停下还 hp signal低则还回硬件错误
Cm_init_acc_high:                                           
        push    ax                                          
        push    bc                                          
        movw    ax,#32                                      
        movw    bc,#00h                                     
        mov     c,cm_step_counter                          
        subw    ax,bc                                       
        movw    cm_step_num,ax                              
        pop     bc                                          

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -