📄 samsung.lst
字号:
A51 MACRO ASSEMBLER SAMSUNG 25/10/03 23:54:33 PAGE 1
DOS MACRO ASSEMBLER A51 X4.86
OBJECT MODULE PLACED IN .\SAMSUNG.OBJ
ASSEMBLER INVOKED BY: D:\C51\BIN\A51.EXE .\SAMSUNG.ASM SYMBOLS XREF DEBUG COND
LOC OBJ LINE SOURCE
0000 1 ORG 0000H
0000 0130 2 JSAT: AJMP MAIN
000B 3 ORG 000BH
000B 0125 4 AJMP L_TO_INT
0023 5 ORG 0023H
0023 0128 6 AJMP L_COM_INT
0025 02080A 7 L_TO_INT: LJMP TO_INT
0028 020692 8 L_COM_INT: LJMP COM_INT
9
0030 10 ORG 30H
0030 75811F 11 MAIN: MOV SP,#1FH
12
13
14 ;--------------------------------设置 计时器器 T1--------------------------
0033 538900 15 TIME_SET: ANL TMOD,#00H ;时间计时器T1
0036 438921 16 ORL TMOD,#21H ;T1 设置为方式‘3’
0039 758DFF 17 MOV TH1,#0FFH
003C 758A01 18 MOV TL0,#001H
003F 758C00 19 MOV TH0,#000H
0042 758780 20 MOV 087H,#080H ;设置串口波特率
21
22
23 ;--------------------------定时器T0计算器----------------------------------
0045 D2AF 24 SAT_DDD: SETB EA ;开所有中断
0047 D2A9 25 SETB ET0 ;允许T0中断
0049 C2B9 26 CLR PT0 ;置T0中断‘低优先’
004B D2BC 27 SETB PS ;置串口中断为‘优先’
004D C2AC 28 CLR ES ;关串口中断
004F D28E 29 SETB TR1 ;T1打开计时
30
0051 C299 31 CLR TI ;串口发送关
0053 C2D5 32 CLR F0 ;标置位 清 0
0055 759850 33 MOV SCON,#050H ;串口接收方式设置
34
35
36
37
38 ;--------------------------------显示器复位部分-------------------
0058 C2B3 39 CLR INT1 ;置显示器
005A C2B5 40 CLR T1
005C C2B4 41 CLR T0
005E 759000 42 MOV P1,#00H
0061 7A03 43 MOV R2,#03H
0063 759038 44 MOV P1,#38H
45
0066 D2B3 46 INIT1: SETB INT1 ;E=1
0068 C2B3 47 CLR INT1 ;E=0 产生一个正跳变的使能有效信号
006A DAFA 48 DJNZ R2,INIT1
49
006C 7A38 50 init2: MOV R2,#38H ;显示初始化
006E 120835 51 LCALL WI
0071 7A01 52 MOV R2,#01H ;1
0073 120835 53 LCALL WI
0076 7A06 54 MOV R2,#06H ;2
0078 120835 55 LCALL WI
007B 7A0C 56 MOV R2,#0CH ;3
007D 120835 57 LCALL WI
58
A51 MACRO ASSEMBLER SAMSUNG 25/10/03 23:54:33 PAGE 2
0080 7AC0 59 MOV R2,#0C0H ;在第二行显示邮件
0082 900C00 60 MOV DPTR,#xianhua
0085 7B0F 61 MOV R3,#0FH
0087 120835 62 LCALL WI
008A 120859 63 LCALL WDD
64 ; 在第一行显示移动文字
008D 900C10 65 sat_b: MOV DPTR,#xianhua+10H
0090 A982 66 MOV R1,DPL
0092 C2D5 67 SAT_SEND: CLR F0
0094 D28C 68 SETB TR0 ;T0打开计时
0096 30D5FD 69 NEXT_SEND: JNB F0,NEXT_SEND ;等待计时器计算 '完'
0099 12086C 70 LCALL DELAY
009C 7A80 71 MOV R2,#80H ;光标定位
009E 7B10 72 MOV R3,#10H ;显示多少个字符
00A0 120835 73 LCALL WI
00A3 120859 74 LCALL WDD
00A6 09 75 INC R1
00A7 8982 76 MOV DPL,R1
00A9 B932E6 77 CJNE R1,#32H,SAT_SEND ;显示一行字串的长度32
78
79 ;-------------手机号码输入部分清空------0000000000-------------
00AC 7830 80 MOV R0,#30H ;清空写入串号
00AE 792E 81 MOV R1,#2EH
00B0 7A0A 82 MOV R2,#10
00B2 12081D 83 write_no: LCALL A_MOV_DATA ;清空
84
85 ;----------------------菜单选择------------------
00B5 01BA 86 SEL_SAT: ajmp disp
87
88
89 ;-----------------测试部分---------------------
00B7 1206E5 90 DATA_TO_DM: LCALL TO_DM
00BA 7A80 91 DISP: MOV R2,#080H ;在第一行显示 "SOFT"
00BC 900E7C 92 MOV DPTR,#SOFT
00BF 7B0F 93 MOV R3,#0FH
00C1 120835 94 LCALL WI
00C4 120859 95 LCALL WDD
00C7 7AC0 96 MOV R2,#0C0H ;在第二行显示 "ESN"
00C9 900E8C 97 MOV DPTR,#ESN
00CC 7B0F 98 MOV R3,#0FH
00CE 120835 99 LCALL WI
00D1 120859 100 LCALL WDD
101
00D4 910A 102 GET_INFO: ACALL CLS_DATA ;清空接收数据子程序
00D6 7840 103 MOV R0,#040H ;发送读手机型号命令 '00'
00D8 900CCF 104 mov DPTR,#READ_INFO
00DB 1206D1 105 LCALL COM_TX
00DE 12086C 106 Lcall delay
00E1 C2AC 107 CLR ES
00E3 787C 108 MOV R0,#07CH
00E5 B67E08 109 CJNE @R0,#07EH,DISP_1 ;检证数据接收是否正确
00E8 7873 110 nv_ver2: MOV R0,#73H ;保存版本信息到 1F 单元住宅
00EA E6 111 MOV A,@R0
00EB 781F 112 MOV R0,#1FH
00ED F6 113 MOV @R0,A
114
00EE 2102 115 AJMP ver_chack
00F0 787D 116 DISP_1: MOV R0,#07DH
00F2 B67E08 117 CJNE @R0,#07EH,DISP_2 ;检证数据接收是否正确
00F5 7874 118 nv_ver: MOV R0,#74H ;保存版本信息到 1F 单元住宅
00F7 E6 119 MOV A,@R0
00F8 781F 120 MOV R0,#1FH
00FA F6 121 MOV @R0,A
122
00FB 2102 123 AJMP ver_chack
124
A51 MACRO ASSEMBLER SAMSUNG 25/10/03 23:54:33 PAGE 3
00FD 787B 125 DISP_2: MOV R0,#07BH ;增加X系列
126
00FF B67EB5 127 CJNE @R0,#07EH,DATA_TO_DM
128
129
0102 786B 130 ver_chack: MOV R0,#6BH ;检查是否A2000
131
0104 B63313 132 CJNE @R0,#33H,NO_2
0107 08 133 INC R0
0108 B6350F 134 CJNE @R0,#35H,NO_2
010B 08 135 INC R0
010C B6300B 136 CJNE @R0,#30H,NO_2
010F 08 137 INC R0
0110 B63007 138 CJNE @R0,#30H,NO_2
0113 751601 139 MOV 16H,#01H
0116 211D 140 AJMP D_VER_Y
0118 01BA 141 DISP_A: AJMP DISP
011A 751600 142 NO_2: MOV 16H,#00
143
144
011D 7A87 145 D_VER_Y: MOV R2,#087H ;正确显示手机版本
011F 7868 146 MOV R0,#068H
0121 7B08 147 MOV R3,#08H
0123 120835 148 LCALL WI
0126 120863 149 LCALL WDD_RAM
0129 910A 150 GET_ESN: ACALL CLS_DATA ;获得手机 ESN 命令
012B 7840 151 MOV R0,#040H
012D 900CD4 152 MOV DPTR,#READ_ESN
0130 1206D1 153 LCALL COM_TX
0133 12086C 154 LCALL DELAY
0136 C2AC 155 CLR ES
0138 7849 156 MOV R0,#049H ;X系列
013A B67E04 157 CJNE @R0,#07EH,NV_N
013D 7944 158 MOV R1,#044H ;串号的所在地址
013F 2148 159 AJMP NV_GESV
0141 784E 160 NV_N: MOV R0,#04EH ;旧版本
0143 B67ED2 161 CJNE @R0,#07EH,DISP_A
162
163
0146 7945 164 NV_GESN: MOV R1,#045H ;串号的所在地址
0148 12087A 165 NV_GESV: LCALL HEX_ASC
166
014B 7AC7 167 MOV R2,#0C7H
014D 7890 168 MOV R0,#90H
014F 7B08 169 MOV R3,#08H
0151 120835 170 LCALL WI
0154 120863 171 LCALL WDD_RAM
172
0157 12067A 173 LCALL KEY
174
015A B4FD04 175 CJNE A,#0FDH,NEX_OK
015D 01B5 176 AJMP SEL_SAT
015F 01D4 177 GET_INFO_A: AJMP GET_INFO
0161 B4FEFB 178 NEX_OK: CJNE A,#0FEH,GET_INFO_A
179
180
181
182 ; --------------输入串号处理-----------------------
183
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -