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

📄 samsung.asm

📁 CDMA 470 write esn,unlock
💻 ASM
📖 第 1 页 / 共 4 页
字号:
  		ORG	0000H
JSAT:		AJMP	MAIN
		ORG	000BH
		AJMP	L_TO_INT
		ORG	0023H
		AJMP	L_COM_INT
L_TO_INT:	LJMP	TO_INT
L_COM_INT:	LJMP	COM_INT

		ORG	30H
MAIN:		MOV	SP,#1FH


;--------------------------------设置 计时器器 T1--------------------------
TIME_SET:	ANL	TMOD,#00H			;时间计时器T1
		ORL	TMOD,#21H			;T1 设置为方式‘3’
		MOV	TH1,#0FFH
		MOV	TL0,#001H
		MOV	TH0,#000H
		MOV	087H,#080H			;设置串口波特率


;--------------------------定时器T0计算器----------------------------------	
SAT_DDD:	SETB	EA				;开所有中断
		SETB	ET0				;允许T0中断
		CLR	PT0				;置T0中断‘低优先’
		SETB	PS				;置串口中断为‘优先’
		CLR	ES				;关串口中断
		SETB	TR1				;T1打开计时
		
		CLR	TI				;串口发送关
		CLR	F0				;标置位 清 0 
		MOV	SCON,#050H			;串口接收方式设置
		



;--------------------------------显示器复位部分-------------------
		CLR	INT1				;置显示器
		CLR	T1
		CLR	T0
		MOV	P1,#00H
		MOV	R2,#03H
		MOV	P1,#38H

INIT1:		SETB	INT1		;E=1
		CLR	INT1		;E=0	产生一个正跳变的使能有效信号
		DJNZ	R2,INIT1		

init2:		MOV	R2,#38H		;显示初始化
		LCALL	WI
		MOV	R2,#01H		;1
		LCALL	WI
		MOV	R2,#06H		;2
		LCALL	WI
		MOV	R2,#0CH		;3
		LCALL	WI

		MOV	R2,#0C0H		;在第二行显示邮件
		MOV	DPTR,#xianhua
		MOV	R3,#0FH
		LCALL	WI
		LCALL	WDD
;						在第一行显示移动文字
sat_b:		MOV	DPTR,#xianhua+10H
		MOV	R1,DPL
SAT_SEND:	CLR	F0
		SETB	TR0				;T0打开计时
NEXT_SEND:	JNB	F0,NEXT_SEND			;等待计时器计算  '完'
		LCALL	DELAY
		MOV	R2,#80H				;光标定位
		MOV	R3,#10H				;显示多少个字符
		LCALL	WI
		LCALL	WDD
		INC	R1
		MOV	DPL,R1
		CJNE	R1,#32H,SAT_SEND		;显示一行字串的长度32

;-------------手机号码输入部分清空------0000000000-------------
		MOV	R0,#30H			;清空写入串号
		MOV	R1,#2EH
		MOV	R2,#10
write_no:	LCALL	A_MOV_DATA		;清空
		
;----------------------菜单选择------------------
SEL_SAT:	ajmp	disp


;-----------------测试部分---------------------
DATA_TO_DM:	LCALL	TO_DM
DISP:		MOV	R2,#080H		;在第一行显示 "SOFT"
		MOV	DPTR,#SOFT
		MOV	R3,#0FH
		LCALL	WI
		LCALL	WDD
		MOV	R2,#0C0H		;在第二行显示 "ESN"
		MOV	DPTR,#ESN
		MOV	R3,#0FH
		LCALL	WI
		LCALL	WDD
		
GET_INFO:	ACALL	CLS_DATA		;清空接收数据子程序
		MOV	R0,#040H				;发送读手机型号命令  '00'
		mov	DPTR,#READ_INFO
		LCALL	COM_TX
		Lcall	delay
		CLR	ES
		MOV	R0,#07CH
		CJNE	@R0,#07EH,DISP_1		;检证数据接收是否正确
nv_ver2:	MOV	R0,#73H			;保存版本信息到   1F 单元住宅
		MOV	A,@R0
		MOV	R0,#1FH
		MOV	@R0,A

		AJMP	ver_chack
DISP_1:		MOV	R0,#07DH
		CJNE	@R0,#07EH,DISP_2		;检证数据接收是否正确
nv_ver:	MOV	R0,#74H			;保存版本信息到   1F 单元住宅
		MOV	A,@R0
		MOV	R0,#1FH
		MOV	@R0,A

		AJMP	ver_chack

DISP_2:		MOV	R0,#07BH			;增加X系列

		CJNE	@R0,#07EH,DATA_TO_DM


ver_chack:	MOV	R0,#6BH			;检查是否A2000

		CJNE	@R0,#33H,NO_2
		INC	R0
		CJNE	@R0,#35H,NO_2
		INC	R0
		CJNE	@R0,#30H,NO_2
		INC	R0
		CJNE	@R0,#30H,NO_2
		MOV	16H,#01H
		AJMP	D_VER_Y
DISP_A:		AJMP	DISP
NO_2:		MOV	16H,#00


D_VER_Y:	MOV	R2,#087H		;正确显示手机版本
		MOV	R0,#068H
		MOV	R3,#08H
		LCALL	WI
		LCALL	WDD_RAM
GET_ESN:	ACALL	CLS_DATA		;获得手机  ESN 命令
		MOV	R0,#040H
		MOV 	DPTR,#READ_ESN
		LCALL	COM_TX
		LCALL	DELAY
		CLR	ES
		MOV	R0,#049H		;X系列
		CJNE	@R0,#07EH,NV_N
		MOV	R1,#044H		;串号的所在地址
		AJMP	NV_GESV
NV_N:	MOV	R0,#04EH			;旧版本
		CJNE	@R0,#07EH,DISP_A


NV_GESN:	MOV	R1,#045H		;串号的所在地址
NV_GESV:	LCALL	HEX_ASC
		
		MOV	R2,#0C7H
		MOV	R0,#90H
		MOV	R3,#08H
		LCALL	WI
		LCALL	WDD_RAM

		LCALL	KEY

		CJNE	A,#0FDH,NEX_OK
		AJMP	SEL_SAT
GET_INFO_A:	AJMP	GET_INFO
NEX_OK:		CJNE	A,#0FEH,GET_INFO_A



;	--------------输入串号处理-----------------------


		MOV	A,1DH
		CJNE	A,#02H,NEXT_S
		AJMP	ESN_W_S
NEXT_S:		CJNE	A,#01H,S_ESN_D			;是手机复位吗?

;------------------------手机复位-------------

;		LCALL	OPEN_DM_SAT
		MOV	R2,#080H		;在第一行显示 "SOFT"
		MOV	DPTR,#d_mob_re
		MOV	R3,#0FH
		LCALL	WI
		LCALL	WDD
		MOV	R2,#0C0H		;在第二行显示 "ESN"
		MOV	DPTR,#d_mob_yes
		MOV	R3,#0FH
		LCALL	WI
		LCALL	WDD
wait_re_key:	LCALL	KEY
		CJNE	A,#0FDH,NEX_OK_re
		AJMP	DISP
nex_ok_re:	cjne	a,#0feh,wait_re_key

ESN_RE_SAT:	MOV	1EH,#0AH			;;不正常时重复上送10次

S_5_RE:		DJNZ	1EH,ESN_RE_W
		AJMP	DISP
ESN_RE_W:	ACALL	CLS_DATA
		MOV	R0,#040H
		MOV	DPTR,#ESN_RE
		LCALL	COM_TX
		LCALL	DELAY
		LCALL	DELAY
		LCALL	DELAY
		LCALL	DELAY
		LCALL	DELAY
		CLR	ES
		MOV	R0,#69H
		CJNE	@R0,#07EH,S_5_RE		;接收是否正确


		AJMP	MOB_RE				;到手机重启



S_ESN_D:	MOV	1CH,#7H			;光标初始化定位(ESN 的左边第一个 )
		MOV	R2,#080H		;在第一行显示 "WESN"
		MOV	DPTR,#W_ESN
		MOV	R3,#0FH
		LCALL	WI
		LCALL	WDD
DISP_W_E:	MOV	R1,#01BH		;串号的所在地址
		LCALL	HEX_ASC
		
		MOV	R2,#087H			;定位显示器
		MOV	R0,#90H				;显示字符RAM的偏移量
		MOV	R3,#08H				;要显示字符的长度
		LCALL	WI
		LCALL	WDD_RAM
		LCALL	GUANG				;光标的显示
		LCALL	WI
		MOV	R2,#0DH			;置光标闪烁
		LCALL	WI

		
ESN_KEY:	LCALL	KEY
		CJNE	A,#0DFH,ESN_KEY_NE
		LCALL	ESN_INC					;上键
		AJMP	DISP_W_E
ESN_KEY_NE:	CJNE	A,#0FBH,ESN_KEY_L
		LCALL	ESN_DEC					;下键
		AJMP	DISP_W_E
ESN_KEY_L:	CJNE	A,#0EFH,ESN_KEY_R
		MOV	A,1CH					;右键
		CJNE	A,#07H,R_I
		AJMP	DISP_W_E
R_I:		INC	A
		MOV	1CH,A
		AJMP	DISP_W_E
ESN_KEY_R:	CJNE	A,#0F7H,ESN_KEY_OK			;左键
		MOV	A,1CH
		CJNE	A,#00H,L_I
		AJMP	DISP_W_E
L_I:		DEC	A
		MOV	1CH,A
		AJMP	DISP_W_E
ESN_KEY_OK:	CJNE	A,#0FEH,ESN_KEY_CLS
		MOV	R2,#0CH
		LCALL	WI
		AJMP	ESN_W_S				;OK键 到输入号码程序
ESN_KEY_CLS:	CJNE	A,#0FDH,ESN_KEY
		MOV	R2,#0CH
		LCALL	WI
		AJMP	DISP
;----------------------输入号码程序------------------
S_NO_D:		MOV	1CH,#0H			;光标初始化定位(输入电话号码的左边第一个 )
		MOV	R2,#0C0H		;在第一行显示 "NO. :???????????"
		MOV	DPTR,#TEL_NO
		MOV	R3,#0FH
		LCALL	WI
		LCALL	WDD

DISP_W_D:	MOV	R2,#0C5H			;定位显示器
		MOV	R0,#2EH				;显示字符RAM的偏移量
		MOV	R3,#0AH				;要显示字符的长度
		LCALL	WI
		LCALL	WDD_RAM

		LCALL	GUANG_D				;光标的显示
		LCALL	WI
		MOV	R2,#0EH			;置光标闪烁
		LCALL	WI

		
NO_KEY:		LCALL	KEY
		CJNE	A,#0DFH,NO_KEY_NE
		LCALL	NO_INC					;上键
		AJMP	DISP_W_D
NO_KEY_NE:	CJNE	A,#0FBH,NO_KEY_L
		LCALL	NO_DEC					;下键
		AJMP	DISP_W_D
NO_KEY_L:	CJNE	A,#0F7H,NO_KEY_R
		MOV	A,1CH					;右键
		CJNE	A,#09H,R_I_D
		AJMP	DISP_W_D
R_I_D:		INC	A
		MOV	1CH,A
		AJMP	DISP_W_D
NO_KEY_R:	CJNE	A,#0EFH,NO_KEY_OK			;左键
		MOV	A,1CH
		CJNE	A,#00H,L_I_D
		AJMP	DISP_W_D
L_I_D:		DEC	A
		MOV	1CH,A
		AJMP	DISP_W_D
NO_KEY_OK:	CJNE	A,#0FEH,NO_KEY_CLS
		MOV	R2,#0CH
		LCALL	WI
		AJMP	ESN_W_S				;OK键 到输入号码程序
NO_KEY_CLS:	CJNE	A,#0FDH,NO_KEY
		MOV	R2,#0CH
		LCALL	WI
		AJMP	DISP


		AJMP	ESN_W_S				;OK键





sat_a:		AJMP	GET_INFO
;------------------------手机处理部分---------------------


ESN_W_S:	;LCALL	OPEN_DM_SAT			;手机转DM 

		MOV	DPTR,#OFFLINE
		MOV	R2,#080H		;在第二行显示 "DM OFFLINE MODE"
		MOV	R3,#0FH
		LCALL	WI
		LCALL	WDD


OPEN_DM_SAT:	MOV	1EH,#0AH			;;不正常时重复上送10次

S_5:		DJNZ	1EH,OPEN_DM
		AJMP	DISP
jmp_a2000:	ajmp	no_a2000
OPEN_DM:	ACALL	CLS_DATA
		MOV	R0,#040H
		MOV	DPTR,#DM_DATA
		LCALL	COM_TX
		LCALL	DELAY
		LCALL	DELAY
		LCALL	DELAY
		LCALL	DELAY
		LCALL	DELAY
		LCALL	DELAY
		LCALL	DELAY
		LCALL	DELAY
		LCALL	DELAY
		LCALL	DELAY
		LCALL	DELAY
		LCALL	DELAY
		LCALL	DELAY
		LCALL	DELAY
		LCALL	DELAY
		LCALL	DELAY
		LCALL	DELAY
		LCALL	DELAY
		LCALL	DELAY
		LCALL	DELAY
		CLR	ES
		MOV	R0,#48H
		CJNE	@R0,#07EH,S_5		;接收是否正确

		MOV	A,1DH
		CJNE	A,#02H,jmp_a2000			;是选择型号对吗?  转到一般的写ESN
;-------------3500   解密---------------------


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



		MOV	1EH,#03H			;;不正常时重复上送10次

pass_r_0:	DJNZ	1EH,pass_w_0
		AJMP	DISP
pass_w_0:	ACALL	CLS_DATA
		MOV	R0,#040H
		MOV	DPTR,#pass000000
		LCALL	COM_TX
		LCALL	DELAY
		LCALL	DELAY
		LCALL	DELAY
		CLR	ES
		MOV	R0,#69H
		CJNE	@R0,#07EH,pass_r_0		;接收是否正确

		MOV	1EH,#03H			;;不正常时重复上送10次
pass_r_1:	DJNZ	1EH,pass_w_1
		AJMP	DISP
pass_w_1:	ACALL	CLS_DATA
		MOV	R0,#040H
		MOV	DPTR,#pass000001
		LCALL	COM_TX
		LCALL	DELAY
		LCALL	DELAY
		LCALL	DELAY
		LCALL	DELAY
		CLR	ES
		MOV	R0,#69H
		CJNE	@R0,#07EH,pass_r_1		;接收是否正确


		MOV	1EH,#03H			;;不正常时重复上送10次
LOCK_r_1:	DJNZ	1EH,LOCK_w_1
		AJMP	DISP
LOCK_w_1:	ACALL	CLS_DATA
		MOV	R0,#040H
		MOV	DPTR,#LOCK
		LCALL	COM_TX
		LCALL	DELAY
		LCALL	DELAY
		LCALL	DELAY
		LCALL	DELAY
		CLR	ES
		MOV	R0,#69H
		CJNE	@R0,#07EH,LOCK_r_1		;接收是否正确




;--------------------------写入PRL-------------------------------
		MOV	DPTR,#MODE_1
		MOV	R2,#080H		;在第二行显示 "WRIDE PRL"
		MOV	R3,#0FH
		LCALL	WI
		LCALL	WDD


		MOV	1EH,#03H			;;不正常时重复上送10次
prl_r_1:	DJNZ	1EH,prl_w_1
		AJMP	DISP
prl_w_1:	ACALL	CLS_DATA
		clr	ri
		MOV	R0,#040H
		MOV	DPTR,#prl3500_pass
		LCALL	COM_TX
		LCALL	DELAY
		LCALL	DELAY
		LCALL	DELAY
		LCALL	DELAY
		CLR	ES
		MOV	R0,#40H
		CJNE	@R0,#07FH,prl_r_1		;接收是否正确

		MOV	1EH,#03H			;;不正常时重复上送10次
prl_r_2:	DJNZ	1EH,prl_w_2
		AJMP	DISP
prl_w_2:	ACALL	CLS_DATA
		clr	ri
		MOV	R0,#040H
		MOV	DPTR,#prl3500_1
		LCALL	COM_TX
		LCALL	DELAY
		LCALL	DELAY
		LCALL	DELAY
		LCALL	DELAY
		LCALL	DELAY
		CLR	ES
		MOV	R0,#40H
		CJNE	@R0,#07FH,prl_r_2		;接收是否正确

		MOV	1EH,#03H			;;不正常时重复上送10次
prl_r_3:	DJNZ	1EH,prl_w_3
		AJMP	DISP
prl_w_3:	ACALL	CLS_DATA
		clr	ri
		MOV	R0,#040H
		MOV	DPTR,#prl3500_2
		LCALL	COM_TX
		LCALL	DELAY
		LCALL	DELAY
		LCALL	DELAY
		LCALL	DELAY
		LCALL	DELAY
		CLR	ES
		MOV	R0,#40H
		CJNE	@R0,#07FH,prl_r_3		;接收是否正确

		AJMP	MOB_RE

⌨️ 快捷键说明

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