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

📄 printer.asm

📁 calculator code ,use toshibaor nec LSI
💻 ASM
📖 第 1 页 / 共 5 页
字号:
;S_RVS		equ	0x1e		;' '+up/down allow
S_EUAS		equ	0x1e		;'Euro *'	V3.14

S_MTH		equ	0x1f		;M	V3.13
S_ROOT		equ	0x20		;'R '
S_TAX		equ	0x21		;'TX%'
;S_PRN		equ	0x22		;' S'
S_PAY		equ	0x22		;P	V3.13
S_EUR		equ	0x23		;'K '(fcR)
;S_EUM		equ	0x24		;'K-'
S_EUROS		equ	0x24		;'Euro'
S_EUEQ		equ	0x25		;'Euro ='
S_COST		equ	0x26		;'C '
S_SELL		equ	0x27		;' S'
S_MARG		equ	0x28		;'M%'
S_TAXA		equ	0x29		;' T'
S_ICG		equ	0x2a		;'G '
S_G		equ	0x2a
S_ICM		equ	0x2b		;' M '
S_M		equ	0x2b
;V4.02S_LCL		equ	0x2c		;home+waru	1450TE V1.01
;V4.02S_LCAS		equ	0x2d		;home+*		1450TE V1.01
;V4.02S_FC		equ	0x2e		;euro+ x	1450TE V1.01
;V4.02S_FCAS		equ	0x2f		;euro+*		1450TE V1.01
S_DLTA		equ	0x2c;V4.020x30		;delta+' '
S_PER		equ	0x2d;V4.020x31		;delta+' '
;S_EQU_A	equ	;0x32		;
S_CPAY		equ	0x2e;V4.020x32		;P*	V3.13
S_TXPL		equ	0x2f;V4.020x33		;TX+
S_TXMI		equ	0x30;V4.020x34		;TX-
S_TLMGT		equ	0x31;V4.020x35		;TL M+
S_TX1PL		equ	0x32;V4.020x36		;TX1+
S_TX1MI		equ	0x33;V4.020x37		;TX1-
S_TX2PL		equ	0x34;V4.020x38		;TX2+
S_TX2MI		equ	0x35;V4.020x39		;TX2-
S_TAX1		equ	0x36;V4.020x3a		;T1%
S_TAX2		equ	0x37;V4.020x3b		;T2%
;V4.02S_GPM		equ	0x3c		;GPM(MU)
;V4.02S_GS		equ	0x3d
;V4.02S_GT		equ	0x3d		;GT
;V4.02S_GPL		equ	0x3e		;G+  for sigama=% when TA mode	V2.11


S_STAMN		equ	0x55
S_STAS		equ	0x56
S_STASTA	equ	0x57


;V3.00S_GS		equ	0x0f		;G dia	GT subtotal
;V3.00S_GT		equ	0x10		;G *	GT total
;V3.00S_PRM		equ	0x11		;- %	percent minus
;V3.00S_PRP		equ	0x12		;+ %	percent plus
;V3.00S_DLP		equ	0x13		;d +	delta plus(for tax+)
;V3.00S_DLM		equ	0x14		;d -	delta plus(for tax-)
;V3.00S_AM		equ	0x15		;A M	time print
;V3.00S_PM		equ	0x16		;P M	time print
;V3.00S_CST		equ	0xb7;0x17		;C *	cost price
;V3.00S_SEL		equ	0x26;0x18		;S *	selling price
;V3.00S_MAR		equ	0xa1;0x19		;M %	margine %
;V3.00S_MU		equ	0xa2;0x1a		;M _	mark up
;V3.00S_MUD		equ	0x57;0x1b		;d *	delta of mark up
;V3.00S_SET		equ	0x27;0x1d		;_ *	for rate,time set(* only)
;V3.00S_SHD		equ	0x22;0x1c		;_ _	for #/D print(space)
;V3.00S_TLG		equ	0x93;0x0a		;G +	total key with GT position
;==============================================================================
;V3.00S_FED		equ	0x00		;fh+' '
;V3.00S_PWR		equ	0x17		;'C*'
;V3.00S_PLS		equ	0x01		;' +'
;V3.00S_MIN		equ	0x02		;' -'
;V3.00S_SPC		equ	0x00		;'  '
;V3.00S_SHP		equ	0x26		;' <>'
;V3.00S_TL		equ	0x22		;' *'
;V3.00S_TLGT		equ	0x3c		;'*+'
;V3.00S_TLMGT		equ	0x3d		;'*+'
;V3.00S_ST		equ	0x08		;' <>'
;V3.00S_MUL		equ	0x03		;' X'
;V3.00S_DIV		equ	0x04		;' /'
;V3.00S_EQU		equ	0x05		;' ='
;V3.00S_AST		equ	0x22		;' *'
;V3.00S_CLR		equ	0x07		;'c '
;V3.00S_MTL		equ	0x0e		;'M*'
;V3.00S_MST		equ	0x0d		;'M<>'
;V3.00S_MPL		equ	0x0b		;'M+'
;V3.00S_MMI		equ	0x0c		;'M-'
;V3.00S_M2TL		equ	0x10		;'G*'
;V3.00S_STASTA	equ	0x77	;'**' 
;V3.00S_M2ST		equ	0x0f		;'G<>'
;V3.00S_STAS		equ	0x76	;'*S'
;V3.00S_M2PL		equ	0x3e		;'G+'
;V3.00S_STAPL		equ	0x73	;'*+' 
;V3.00S_PLSTA		equ	0x37	;'+*'
;V3.00S_M2MI		equ	0x3f		;'G-'
;V3.00S_STAMN		equ	0x70	;'*-' 
;V3.00S_M2TLV		equ	0x97		;'G*'
;V3.00S_M2STV		equ	0x96		;'G<>'
;V3.00S_M2PLV		equ	0x3e		;'G+'
;V3.00S_M2MIV		equ	0x3f		;'G-'
;V3.00S_PER		equ	0x06		;' %'
;V3.00S_STAPER	equ	0x71		;'*%'
;V3.00S_PRDS		equ	0x01		;'-%'
;V3.00S_PRAD		equ	0x31		;'+%'
;V3.00S_DLTAL		equ	0x82		;delta+' '
;V3.00S_DLTA		equ	0x28		;' "+delta V1.26
;V3.00S_PRDL		equ	0x81		;delta+'%'
;V3.00S_DLAS		equ	0x87		;delta+'*'
;V3.00S_PRMU		equ	0x21		;' %'
;V3.00S_MKUP		equ	0xa2		;'M '
;V3.00S_RVS		equ	0x22		;'  '
;V3.00S_AVR		equ	0x27		;' *'
;V3.00S_ROOT		equ	0x22		;'  '
;V3.00S_TAX		equ	0x12		;'% '
;V3.00S_PRN		equ	0x62		;'<> '
;V3.00S_EUR		equ	0x22		;'  '
;V3.00S_EUEQ		equ	0xc2		;'= '
;V3.00S_COST		equ	0x2b		;' C'
;V3.00S_SELL		equ	0x26		;' <>'
;V3.00S_M		equ	0x2a		;' M'
;V3.00S_MARG		equ	0xa1		;'M%'
;V3.00S_PERMARG	equ	0x1a		;'%M'
;V3.00S_TAXA		equ	0x27		;' *'
;V3.00S_ICG		equ	0x29		;' G'
;V3.00S_ICGV		equ	0x29		;' G'
;V3.00S_ICM		equ	0x2a		;' M'
;V3.00S_ASM		equ	0x7a		;'*M'
;V3.00S_ASC		equ	0x7b		;'*C'
;V3.00S_ASDL		equ	0x78		;'*'+delta
;V3.00S_MIPL		equ	0x03		;'-+'	
;V3.00S_MIMI		equ	0x00		;'--'
;V3.00S_MIST		equ	0x06		;'-S'
;V3.00S_MITL		equ	0x07		;'-T'
;V3.00S_EUROS		equ	0x29		;' euro'
;V3.00S_G		equ	0x9f		;'G '
;V3.00S_GPL		equ	0x93		;'G+'
;V3.00S_GAST		equ	0x97		;'G*'
;==============================================================================
P_SPC	equ	0x20	;for print " "
;-----------------------------------------------------------
;interrupt enable flag set:

EF4		equ	4;(EIRL).4 /INT0
EF5		equ	5;(EIRL).5 INTTC1
EF6		equ	6;(EIRL).6 INT1
EF7		equ	7;(EIRL).7 INTTBT
EF8		equ	0;(EIRH).0 INTTC3
EF9		equ	1;(EIRH).1 INTSIO(High speed SIO interrupt)
EF10		equ	2;(EIRH).2 INTTC4
EF11		equ	3;(EIRH).3 INT3
EF12		equ	4;(EIRH).4 INT4
EF13		equ	5;(EIRH).5 INTTC2
EF14		equ	6;(EIRH).6 /INT5
EF15		equ	7;(EIRH).7 INTADC or INT2
;interrupt request flag set:
IL2		equ	2;(ILL).2 INTSWI 
IL3		equ	3;(ILL).3 INTATRAP
IL4		equ	4;(ILL).4 /INT0
IL5		equ	5;(ILL).5 INTTC1
IL6		equ	6;(ILL).6 INT1
IL7		equ	7;(ILL).7 INTTB
IL8		equ	0;(ILH).0 INTTC3
IL9		equ	1;(ILH).1 INTSIO
IL10		equ	2;(ILH).2 INTTC4
IL11		equ	3;(ILH).3 INT3
IL12		equ	4;(ILH).4 INT4
IL13		equ	5;(ILH).5 INTTC2
IL14		equ	6;(ILH).6 /INT5
IL15		equ	7;(ILH).7 INTADC or /INT2
;	DBR_LCD_RATE		equ	(0x0f33<<4)+5	;LCD DBR matrix point for "RATE"
;	DBR_LCD1235_RATE	equ	(0x0f33<<4)+3	;LCD DBR matrix point for "RATE"
;	DBR_LCD1297_RATE	equ	(0x0f33<<4)+4	;LCD DBR matrix point for "RATE"
;	DBR_LCD120_RATE		equ	(0x0f33<<4)+4	;LCD DBR matrix point for "RATE"
;	DBR_LCD1297_GT		equ	(0x0f32<<4)+2	;LCD DBR matrix point for "GT"
;	;LCD_PRN		equ	(0x0f31<<4)+3	;LCD DBR matrix point for "PRINT"
;	;LCD_FIN		equ	(0x0f30<<4)+3	;LCD DEB matrix point for "FIN"

AUTOOFFTIME	equ	31250;1500
	$list

	extern	dbr_disp_clear,bl_off,bl_on,font_data,font_bnum,font_snum,tempdbr_to_dbr
	public	tm1_int,tm2_int,prn_init,print,key_feed,sio_int

	extern	vft_disable,vft_enable
	extern	STB_V,STB_R,STB_C,STB_E,STB

ROM	section	code 
STP_RUSH	equ	20000*2			;20ms for rush control (1/32fc[0.5us]clock) 
;STP_WKUP_LTP	equ	(4393-60)*2		;4393us for wake up rush control (1/32fc[0.5us]clock)
;	STP_WKUP_LTP	equ	4393*2*10/5-60*2	;25mm/s
	STP_WKUP_LTP	equ	4393*2*5/3-60*2		;30mm/s
;	STP_WKUP_LTP	equ	4393*2*10/7-60*2	;35mm/s
;	STP_WKUP_LTP	equ	4393*2*5/4-60*2		;40mm/s
;STP_STOP_LTP	equ	65000/16			;65ms for rush control (1/128fc[16us]clock) 
;	STP_STOP_LTP	equ	65000/16*10/5	;25mm/s
	STP_STOP_LTP	equ	65000/16*5/3	;30mm/s
;	STP_STOP_LTP	equ	65000/16*10/7	;35mm/s
;	STP_STOP_LTP	equ	65000/16*5/3	;40mm/s
STP_INIT	equ	6579*2			;6.579ms for initialize step (1/32fc[0.5us]clock)
STP_SLOW	equ	(2400-50)*2		;2.400ms for slow up step (1/32fc[0.5us]clock)
STP_PSLOW	equ	(2400-100)*2		;2.400ms for slow up step (1/32fc[0.5us]clock) for printing
STP_FEED	equ	(2083-100)*2		;2.083ms for feed (1/32fc[0.5us]clock)
STP_FEED_LTP	equ	5000*2		;5ms for feed (1/32fc[0.5us]clock) for LTP8235
;	STP_FEED_LTP	equ	5000*2*10/5		;25mm/s
;	STP_FEED_LTP	equ	5000*2*5/3		;30mm/s
;	STP_FEED_LTP	equ	5000*2*10/7		;35mm/s
;	STP_FEED_LTP	equ	5000*2*5/4		;40mm/s
STP_NORM	equ	(1667-120)*2		;1.667ms for normal print (1/32fc[0.5us]clock)
;STP_NORM_LTP	equ	(1667*2-180*2)		;50mm/S ;1.667ms for normal print (1/32fc[0.5us]clock)
;	STP_NORM_LTP	equ	(1667*2*10/5-180*2)	;25mm/s
	STP_NORM_LTP	equ	(1667*2*5/3-180*2)	;30mm/s
;	STP_NORM_LTP	equ	(1667*2*10/7-180*2)	;35mm/s
;	STP_NORM_LTP	equ	(1667*2*5/4-180*2)	;40mm/s
STP_NORM_ADJ	equ	180*2			;for calculation for parameater "C" LTP8235 printer
STP_CPON	equ	(300-50)*2		;300us for chopping on (1/32fc[0.5us]clock)
STP_CPOF	equ	(50-20)*2		;50us for chopping on (1/32fc[0.5us]clock)
STP_SLOW_CMP	equ	2400*2			;compare with T1 value
L_FEED		equ	6
L_FEED_LTP	equ	8
LARGE_FEED	equ	18	;V4.03
;==============================================


;1667*10/5=3334;1667*5/3=2778;1667*5/3.5=2381; 1667*5/4=2083
;
ltp_acc_tbl:
		dw	0x0000		;0 dummy
;for printing speed 25mm/s
;		dw	(4393-60)*2	;25mm/s;equ	(4393-60)*2
;		dw	STP_NORM_LTP	;25mm/s;equ	(1667*2*10/2-180*2)
;		dw	STP_NORM_LTP	;25mm/s;equ	(1667*2*10/2-180*2)
;		dw	STP_NORM_LTP	;25mm/s;equ	(1667*2*10/2-180*2)
;for printing speed 30mm/s
		dw	(4393-60)*2	;30mm/s;equ	(4393-60)*2
		dw	STP_NORM_LTP	;30mm/s;equ	(1667*2*5/3-180*2)
		dw	STP_NORM_LTP	;30mm/s;equ	(1667*2*5/3-180*2)
		dw	STP_NORM_LTP	;30mm/s;equ	(1667*2*5/3-180*2)
;for printing speed 35mm/s
;		dw	(4393-60)*2	;35mm/s;1	
;		dw	(2715-180)*2	;35mm/s;2
;		dw	STP_NORM_LTP	;35mm/s;equ	(1667*2*5/3.5-180*2)
;		dw	STP_NORM_LTP	;35mm/s;equ	(1667*2*5/3.5-180*2)
;for printing speed 40mm/s
;		dw	(4393-60)*2	;40mm/s;1	
;		dw	(2715-180)*2	;40mm/s;2
;		dw	(2097-180)*2	;40mm/s;3
;		dw	STP_NORM_LTP	;40mm/s;equ	(1667*2*5/4-180*2)
;for printing speed 50mm/s
;		dw	(4393-60)*2	;50mm/s;1	
;		dw	(2715-180)*2	;50mm/s;2
;		dw	(2097-180)*2	;50mm/s;3
;		dw	(1760-180)*2	;50mm/s;4
;==============================================================================
;	Timer 1 reset and start (for make strobe pulse)
;==============================================================================
;==============================================================================
;	Timer 1 stop
;==============================================================================
;==============================================================================
;	Timer1 value set   reg.wa -> TREG1AL,TREG1AM
;==============================================================================
;==============================================================================
;	Timer 2 start 0.5us clock [1/32fc] (for MT step pulse [chopping]) 16M clock
;==============================================================================
;==============================================================================
;	Timer 2 start 16us clock [1/128fc] (for MT step pulse [chopping]) 16M clock
;==============================================================================
;==============================================================================
;	Timer 2 value set (for MT step pulse,chopping)
;==============================================================================
;==============================================================================
;	Timer 2 stop (for MT step pulse chopping)
;==============================================================================
;==============================================================================
;	AD set and start (AIN6: head temp.)
;==============================================================================
;==============================================================================
;	AD set and start (AIN7: VPR volt.)
;==============================================================================
;==============================================================================
;	Get AD convert value
;==============================================================================
;==============================================================================
;	VPR on
;==============================================================================
;==============================================================================
;	VPR off
;==============================================================================
;==============================================================================
;	STB1 on
;==============================================================================
;==============================================================================
;	STB2 on
;==============================================================================
;==============================================================================
;	STB1 off
;==============================================================================
;==============================================================================
;	STB2 off
;==============================================================================
;==============================================================================
;	check whether STB2 off (=1?)
;==============================================================================
;==============================================================================
;	MT driver enable
;==============================================================================
;==============================================================================
;	MT driver disable
;==============================================================================
;==============================================================================
;	Latch enable
;==============================================================================
;==============================================================================
;	SIO initialize
;==============================================================================
;==============================================================================
;	SIO transmit start
;==============================================================================
;==============================================================================
;	SIO disable
;==============================================================================
;-----------------------------------------------
;	   Printer Initial
;-----------------------------------------------
prn_init:
		ld	(F_PCONT),0y00000000		;control flags clear
		ld	(F_PCONT+1),0y00000000		;control flags clear
;V4.14		ld	(F_PCONT+2),0y00000000		;control flags clear
		and	(F_PCONT+2),0y00100000	;V4.14;keep P_RED flag
		ld	(PHASE_CT),0
		ld	(STEP_CT),0
	ld	wa,F_INIT
	set	(F_INIT>>4).a
	set	(P0DR).3
	set	(P0DR).2
	and	(P4DR),0y11111100			;AIN1,AIN0 must set '0' for AD convert
	or	(P4DR),0y00000100			;P42 set'1'(VPR)
	set	(F_PCONT+2).6		;IO_MT		equ	(F_PCONT+2<<4)+6

	ld	wa,P_MOVE
	set	(P_MOVE>>4).a
		call	vft_disable
		call	start_up			;MT driver enable, motor start, dbr clear BL off
	ld	wa,SW_LTP
	test	(SW_LTP>>4).a		;bit -reverse-> jump status
	j	t,prn_ini_09		;if jump status is 1 -> branch
	ld	wa,F_RVSE
	set	(F_RVSE>>4).a
prn_ini_09:
	ld	wa,F_INIT
	test	(F_INIT>>4).a		;bit -reverse-> jump status
	j	f,prn_ini_09		;if jump status is 0 -> branch
		ret

;
;-----------------------------------------------------------------------------------
;		   10 dotline  feed
key_feed:
		call	print_int_check		;V4.14
key_feed_0:					;V4.14
	ld	wa,F_PRINT
	test	(F_PRINT>>4).a		;bit -reverse-> jump status
	j	f,key_feed_0		;if jump status is 0 -> branch

key_feed_start:
	ld	wa,F_FDREQ
	set	(F_FDREQ>>4).a
	ld	wa,F_FEED
	test	(F_FEED>>4).a		;bit -reverse-> jump status
	j	f,key_f100		;if jump status is 0 -> branch
		ld	(STEP_CT),0
	ld	wa,F_FEED
	set	(F_FEED>>4).a
	ld	wa,F_RVREQ
	clr	(F_RVREQ>>4).a
	ld	wa,F_RUSH
	test	(F_RUSH>>4).a		;bit -reverse-> jump status
	j	t,key_f011		;if jump status is 1 -> branch
	ld	wa,F_RUSH
	clr	(F_RUSH>>4).a
		j	key_f100
key_f011:
		call	start_up			;MT driver enable, motor start, dbr clear BL off
key_f100:
	ld	wa,F_FDREQ
	test	(F_FDREQ>>4).a		;bit -reverse-> jump status
	j	f,key_f100		;if jump status is 0 -> branch
		ret
start_up:
	and	(P4DR),0y11111100			;AIN1,AIN0 must set '0' for AD convert
	or	(P4DR),0y00000100			;P42 set'1'(VPR)
	set	(F_PCONT+2).6		;IO_MT		equ	(F_PCONT+2<<4)+6

	and	(P4DR),0y11111100			;AIN1,AIN0 must set '0' for AD convert
	or	(P4DR),0y00011000			;P44P43 set '1'(ENA1,ENA2)
	ld	wa,P_MOVE
	set	(P_MOVE>>4).a
		di		
	ld	(TC2CR),0y00001110		;TC2CK(011)=fc/2^3 TC2S(0):stop TC2M(0):timer mode
	clr	(EIRH).EF13			;clear TC2 enable (EIRH:bit4)
		ei		
	ld	wa,SW_LTP
	test	(SW_LTP>>4).a		;bit -reverse-> jump status
	j	f,start_up1		;if jump status is 0 -> branch
	ldw	(TC2DRL),STP_RUSH			;set TC2DR
		j	start_up2
start_up1:
	ldw	(TC2DRL),STP_WKUP_LTP			;set TC2DR
	ld	wa,F_ACC
	set	(F_ACC>>4).a
start_up2:
		di			
	ld	(TC2CR),0y00001110		;TC2CK(011)=fc/2^3 TC2S(0):stop TC2M(0):timer mode

⌨️ 快捷键说明

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