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

📄 samsung.asm

📁 CDMA 470 write esn,unlock
💻 ASM
📖 第 1 页 / 共 4 页
字号:
		
		


CLS_DATA:	MOV	R0,#040H		;清空接收暧冲区
CLS_RX_DATA:	MOV	@R0,#000H
		INC	R0
		CJNE	R0,#000H,CLS_RX_DATA
		RET



;-------------------------写完到复位手机----------------------------

;------------完成----------




no_a2000:	MOV	17H,#0H			;三星串号三个版本标志位00=VER1,01=VER2,03=VER3

		MOV	DPTR,#D_WRITE_ESN
		MOV	R2,#080H		;在第二行显示 "WRITE ESN"
		MOV	R3,#0FH
		LCALL	WI
		LCALL	WDD



;	--------------WRITE ESN ------------

SAT_ESN_W:	MOV	1EH,#0AH			;不正常时重复上送10次
S_ESN:		DJNZ	1EH,WRITE_ESN
		AJMP	DISP
WRITE_ESN:	ACALL	CLS_DATA
		MOV	R1,#40H		;置数据 开始 位
		MOV	@R1,#7FH		;置写ESN 命令   '3F'
		INC	R1
		MOV	@R1,#3FH
		MOV	R2,#04H			;传送数据到发送缓冲
		MOV	R0,#018H
		MOV	R1,#042H
		LCALL	A_MOV			;传送
		ACALL	BEG_16			;计算串号第一个较检码
		MOV	R2,#04H
		MOV	R0,#00CH
		MOV	R1,#046H
		LCALL	A_MOV			;传送数据到发送缓冲
				
		MOV	R0,#17H
		CJNE	@R0,#00H,ESN_VER_2	;是第一个版本吗?
		ACALL	BEG_VER_1
		AJMP	TO_ESN_VER

ESN_VER_2:	CJNE	@R0,#01H,ESN_VER_3	;是第二个版本吗?
		ACALL	BEG_VER_2
		AJMP	TO_ESN_VER

ESN_VER_3:	CJNE	@R0,#02H,S_ESN		;是第三个版本吗?		找不到所有版本到反回显示串号
		ACALL	BEG_VER_3		;计算串号第一个较检码

TO_ESN_VER:	MOV	R2,#04H
		MOV	R0,#00CH
		MOV	R1,#04AH
		LCALL	A_MOV			;传送数据到发送缓冲
;
		MOV	R7,#0FFH		;计算结束码
		MOV	R6,#0FFH
		MOV	R0,#41H
NEXT_END_CODE:	MOV	A,@R0
		LCALL	END_CODE
		INC	R0
		CJNE	R0,#4EH,NEXT_END_CODE
		XRL	06H,#0FFH
		XRL	07H,#0FFH		;计算完成
		MOV	A,R6			;传送到发送区
		MOV	@R0,A
		INC	R0
		MOV	A,R7
		MOV	@R0,A
;						发送写串指令  R1开始地址  R2发送长度
		MOV	R0,#80H			;置接收地址
		MOV	R1,#40H			;
		MOV	R2,#10H
		LCALL	COM_TXRAM		;发送子程序
		LCALL	TX_7E
		LCALL	DELAY
		LCALL	DELAY
		LCALL	DELAY
		LCALL	DELAY
		CLR	ES
		MOV	R0,#092H
		CJNE	@R0,#07EH,NEXT_ERR		;检证数据接收是否正确
		AJMP	MOB_RE				;到手机重启
NEXT_ERR:	MOV	R0,#81H
		CJNE	@R0,#014H,S_ESN
		INC	17H
		AJMP	SAT_ESN_W

;-------------------------------手机重启-----------------------------
;	--------------MODE RESET------------

MOB_RE:		


		MOV	DPTR,#D_OK
		MOV	R2,#080H		;在第二行显示 " OK!!"
		MOV	R3,#0FH
		LCALL	WI
		LCALL	WDD


		MOV	1EH,#02H		;不正常时重复上送四次
S_RE:		DJNZ	1EH,MODE_RE
		AJMP	DISP
 		
MODE_RE:	ACALL	CLS_DATA
		MOV	R0,#040H				;发送读手机型号命令  '00'
		mov	DPTR,#RE_
		LCALL	COM_TX
		Lcall	delay
		Lcall	delay
		Lcall	delay
		Lcall	delay
		Lcall	delay
		CLR	ES
		MOV	R0,#048H
		CJNE	@R0,#07EH,S_RE		;检证数据接收是否正确

 
 
 		LJMP	DISP

;-------------------第二个串号较检码--------------------
BEG_VER_2:	MOV	R0,#1FH			;取出版本号到   'A'
		MOV	A,@R0
		MOV	R0,#042H
		ADD	A,@R0
		SETB	RS0
		PUSH	ACC
		MOV	DPTR,#A_00		;计算数据库地址  到   DPTR
;		SWAP	A
		RR	A
		RR	A
		ANL	A,#03CH
		MOV	B,A
		MOVC	A,@A+DPTR		;将数据库的数据存到  R4--R7
		MOV	R4,A

		MOV	A,B
		INC	DPTR
		MOVC	A,@A+DPTR
		MOV	R5,A
		
		MOV	A,B
		INC	DPTR
		MOVC	A,@A+DPTR
		MOV	R6,A
		
		MOV	A,B
		INC	DPTR
		MOVC	A,@A+DPTR
		MOV	R7,A

		POP	ACC
		ANL	A,#0FCH
		MOV	DPTR,#A_00		;计算数据库地址  到   DPTR
		MOV	B,A
		MOVC	A,@A+DPTR		;将数据库的数据存到  R0--R3
		MOV	R0,A

		MOV	A,B
		INC	DPTR
		MOVC	A,@A+DPTR
		MOV	R1,A
		
		MOV	A,B
		INC	DPTR
		MOVC	A,@A+DPTR
		MOV	R2,A
		
		MOV	A,B
		INC	DPTR
		MOVC	A,@A+DPTR
		MOV	R3,A
;----------------计算库1------------------
		MOV	A,R4
		ADD	A,R0
		MOV	R4,A

		MOV	A,R5
		ADDC	A,R1
		MOV	R5,A
		
		MOV	A,R6
		ADDC	A,R2
		MOV	R6,A
		
		MOV	A,R7
		ADDC	A,R3
		MOV	R7,A



				
		CLR	RS0
		RET

BEG_VER_1:	MOV	R0,#1FH			;取出版本号到   'A'
		MOV	A,@R0
		MOV	R0,#042H
		ADD	A,@R0
		SETB	RS0
		PUSH	ACC
		MOV	DPTR,#A_00		;计算数据库地址  到   DPTR
		SWAP	A
		RR	A
		RR	A
		ANL	A,#03H
		ADD	A,DPH
		MOV	DPH,A
		POP	ACC			;取出版本号
		PUSH	ACC
		RL	A
		RL	A
		ANL	A,#0FCH
		MOV	B,A
		MOVC	A,@A+DPTR		;将数据库的数据存到  R4--R7
		MOV	R4,A

		MOV	A,B
		INC	DPTR
		MOVC	A,@A+DPTR
		MOV	R5,A
		
		MOV	A,B
		INC	DPTR
		MOVC	A,@A+DPTR
		MOV	R6,A
		
		MOV	A,B
		INC	DPTR
		MOVC	A,@A+DPTR
		MOV	R7,A
		POP	ACC			;取出版本号
		PUSH	ACC
		ANL	A,#0FCH
		MOV	DPTR,#A_00		;计算数据库地址  到   DPTR
		MOV	B,A
		MOVC	A,@A+DPTR		;将数据库的数据存到  R0--R3
		MOV	R0,A

		MOV	A,B
		INC	DPTR
		MOVC	A,@A+DPTR
		MOV	R1,A
		
		MOV	A,B
		INC	DPTR
		MOVC	A,@A+DPTR
		MOV	R2,A
		
		MOV	A,B
		INC	DPTR
		MOVC	A,@A+DPTR
		MOV	R3,A

;----------------计算库1------------------
		MOV	A,R4
		ADD	A,R0
		MOV	R4,A

		MOV	A,R5
		ADDC	A,R1
		MOV	R5,A
		
		MOV	A,R6
		ADDC	A,R2
		MOV	R6,A
		
		MOV	A,R7
		ADDC	A,R3
		MOV	R7,A

		MOV	DPTR,#D_VER
		POP	ACC			;取出版本号
		RLC	A
		JNC	NEXT_VER
		INC	DPH
NEXT_VER:	ANL	A,#0FEH
		MOV	B,A
		MOVC	A,@A+DPTR
		MOV	R2,A
		MOV	A,B
		INC	DPTR
		MOVC	A,@A+DPTR
		MOV	R3,A
		
;----------------计算库2------------------
		MOV	A,R4
		ADD	A,R2
		MOV	R4,A

		MOV	A,R5
		ADDC	A,R3
		MOV	R5,A
		
		MOV	A,R6
		ADDC	A,#0H
		MOV	R6,A
		
		MOV	A,R7
		ADDC	A,#0H
		MOV	R7,A	

		CLR	RS0		;计算结果在R4-R7
		RET
BEG_VER_3:	MOV	R0,#1FH			;取出版本号到   'A'
		MOV	A,@R0
		MOV	R0,#042H
		ADD	A,@R0
		SETB	RS0
		PUSH	ACC
		MOV	DPTR,#A_00		;计算数据库地址  到   DPTR
		SWAP	A
		RR	A
		RR	A
		ANL	A,#03H
		ADD	A,DPH
		MOV	DPH,A
		POP	ACC			;取出版本号
		PUSH	ACC
		RL	A
		RL	A
		ANL	A,#0FCH
		MOV	B,A
		MOVC	A,@A+DPTR		;将数据库的数据存到  R4--R7
		MOV	R4,A

		MOV	A,B
		INC	DPTR
		MOVC	A,@A+DPTR
		MOV	R5,A
		
		MOV	A,B
		INC	DPTR
		MOVC	A,@A+DPTR
		MOV	R6,A
		
		MOV	A,B
		INC	DPTR
		MOVC	A,@A+DPTR
		MOV	R7,A
		POP	ACC			;取出版本号
;		PUSH	ACC
		ANL	A,#0FCH
		MOV	DPTR,#A_00		;计算数据库地址  到   DPTR
		MOV	B,A
		MOVC	A,@A+DPTR		;将数据库的数据存到  R0--R3
		MOV	R0,A

		MOV	A,B
		INC	DPTR
		MOVC	A,@A+DPTR
		MOV	R1,A
		
		MOV	A,B
		INC	DPTR
		MOVC	A,@A+DPTR
		MOV	R2,A
		
		MOV	A,B
		INC	DPTR
		MOVC	A,@A+DPTR
		MOV	R3,A

		
;----------------计算库2------------------
		MOV	A,R4
		ADD	A,R0
		MOV	R4,A

		MOV	A,R5
		ADDC	A,R1
		MOV	R5,A
		
		MOV	A,R6
		ADDC	A,R2
		MOV	R6,A
		
		MOV	A,R7
		ADDC	A,R3
		MOV	R7,A	

		CLR	RS0		;计算结果在R4-R7
		RET


;--------------------------串号后八位运算子程序(第一个)-----------------------------------

BEG_16:		SETB	RS0
		MOV	R1,#42H			;串号地址
		MOV	R4,#0FFH
		MOV	R5,#03FH
		MOV	R6,#0FFH
		MOV	R7,#0FFH
		
RE_BEG:		MOV	DPTR,#A_00
		MOV	A,R5
		RL	A
		RL	A
		ANL	A,#0FCH
		MOV	B,A
		MOV	A,R4
		SWAP	A
		RR	A
		RR	A
		ANL	A,#03H
		ORL	A,B
		XRL	A,@R1
		
		MOV	B,A				;读出库 的四位数据
		SWAP	A				;计算高两位地址到DPH
		RR	A
		RR	A
		ANL	A,#03H
		ADD	A,DPH
		MOV	DPH,A
		MOV	A,B				;低两位
		RL	A
		RL	A
		ANL	A,#0FCH
		MOV	B,A
		MOVC	A,@A+DPTR
		PUSH	ACC				;1
		INC	DPTR
		MOV	A,B
		MOVC	A,@A+DPTR
		PUSH	ACC				;2
		INC	DPTR
		MOV	A,B
		MOVC	A,@A+DPTR
		PUSH	ACC				;3
		INC	DPTR
		MOV	A,B
		MOVC	A,@A+DPTR
		PUSH	ACC				;4
		
		POP	ACC
		XRL	A,R4
		MOV	R5,A
		POP	ACC
		XRL	A,R7
		MOV	R4,A
		POP	ACC
		XRL	A,R6
		MOV	R7,A
		POP	ACC
		XRL	A,#00H
		MOV	R6,A
		INC	R1
		CJNE	R1,#046H,RE_BEG

		MOV	B,R4			;NOT:1
		MOV	A,R6
		CPL	A
		MOV	R4,A
		MOV	A,B
		CPL	A
		MOV	R6,A


		MOV	B,R5			;NOT:2
		MOV	A,R7
		CPL	A
		MOV	R5,A
		MOV	A,B
		CPL	A
		ANL	A,#3FH
		MOV	R7,A
	
		CLR	RS0			;计算完成将得出结果存放在  R4,R5,R6R7 中
		RET
		
		

;--------------------键盘部分---------------(输出键值=A )

KEY:		MOV	A,P2
		CJNE	A,#0FFH,KEY_X
		RET
KEY_X:		LCALL	CLOCK				;防抖动延时
		MOV	A,P2
		MOV	B,A
		LCALL	CLOCK				;防抖动延时
WAIT_KEY:	MOV	A,P2
		CJNE	A,#0FFH,WAIT_KEY
		MOV	A,B
KEY_EXIT:	RET
;------------------------------数据接收中断部分 ------------------------

COM_INT:	PUSH	ACC				;接收部分断

⌨️ 快捷键说明

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