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

📄 print.asm

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