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

📄 sim340.s

📁 本实例实现GSM模块的发送短消息
💻 S
📖 第 1 页 / 共 4 页
字号:
	std z+1,R3
	std z+0,R2
	.dbline 158
;     for(i = 0;i < phonelen / 2;i++)    //把电话号码转换为PDU的格式
	std y+7,R3
	std y+6,R2
	xjmp L25
L22:
	.dbline 159
	.dbline 160
	movw R30,R28
	subi R30,24  ; addi 232
	sbci R31,255
	ldd R2,z+0
	ldd R3,z+1
	movw R24,R2
	adiw R24,1
	movw R30,R28
	subi R30,24  ; addi 232
	sbci R31,255
	std z+1,R25
	std z+0,R24
	ldd R18,y+6
	ldd R19,y+7
	ldi R16,2
	ldi R17,0
	xcall empy16s
	movw R30,R16
	movw R24,R28
	adiw R24,9
	add R30,R24
	adc R31,R25
	ldd R4,z+0
	movw R24,R28
	subi R24,44  ; offset = 212
	sbci R25,255
	movw R30,R2
	add R30,R24
	adc R31,R25
	std z+0,R4
	.dbline 161
	movw R30,R28
	subi R30,24  ; addi 232
	sbci R31,255
	ldd R2,z+0
	ldd R3,z+1
	movw R24,R2
	adiw R24,1
	movw R30,R28
	subi R30,24  ; addi 232
	sbci R31,255
	std z+1,R25
	std z+0,R24
	ldd R18,y+6
	ldd R19,y+7
	ldi R16,2
	ldi R17,0
	xcall empy16s
	movw R30,R16
	movw R24,R28
	adiw R24,8
	add R30,R24
	adc R31,R25
	ldd R4,z+0
	movw R24,R28
	subi R24,44  ; offset = 212
	sbci R25,255
	movw R30,R2
	add R30,R24
	adc R31,R25
	std z+0,R4
	.dbline 162
L23:
	.dbline 158
	ldd R24,y+6
	ldd R25,y+7
	adiw R24,1
	std y+7,R25
	std y+6,R24
L25:
	.dbline 158
	ldi R18,2
	ldi R19,0
	movw R30,R28
	subi R30,177  ; addi 591
	sbci R31,253
	ldd R16,z+0
	ldd R17,z+1
	xcall div16s
	ldd R2,y+6
	ldd R3,y+7
	cp R2,R16
	cpc R3,R17
	brge X1
	xjmp L22
X1:
	.dbline 163
;     {
;     	phoneTemp[n++] = chrTmp[2 * i + 1];
;     	phoneTemp[n++] = chrTmp[2 * i];
;     }
;     copy(chrTemp,0,chrInfo,0,6);    //将源数组的内容拷贝到目的数组
	ldi R24,6
	ldi R25,0
	std y+5,R25
	std y+4,R24
	clr R2
	clr R3
	std y+3,R3
	std y+2,R2
	movw R24,R28
	subi R24,142  ; offset = 370
	sbci R25,254
	std y+1,R25
	std y+0,R24
	clr R18
	clr R19
	movw R16,R28
	subi R16,4  ; offset = 252
	sbci R17,255
	xcall _copy
	.dbline 164
;     nOff = 6;                     //上一次的数组长度
	ldi R24,6
	ldi R25,0
	movw R30,R28
	subi R30,46  ; addi 210
	sbci R31,255
	std z+1,R25
	std z+0,R24
	.dbline 165
;     chrTemp[nOff] = '8';
	movw R24,R28
	subi R24,4  ; offset = 252
	sbci R25,255
	movw R26,R28
	subi R26,46  ; addi 210
	sbci R27,255
	ld R30,x+
	ld R31,x
	add R30,R24
	adc R31,R25
	ldi R24,56
	std z+0,R24
	.dbline 166
;     nOff += 1;
	movw R30,R28
	subi R30,46  ; addi 210
	sbci R31,255
	ldd R24,z+0
	ldd R25,z+1
	adiw R24,1
	movw R30,R28
	subi R30,46  ; addi 210
	sbci R31,255
	std z+1,R25
	std z+0,R24
	.dbline 167
;     chrTemp[nOff] = '1';
	movw R24,R28
	subi R24,4  ; offset = 252
	sbci R25,255
	movw R26,R28
	subi R26,46  ; addi 210
	sbci R27,255
	ld R30,x+
	ld R31,x
	add R30,R24
	adc R31,R25
	ldi R24,49
	std z+0,R24
	.dbline 168
;     nOff += 1;
	movw R30,R28
	subi R30,46  ; addi 210
	sbci R31,255
	ldd R24,z+0
	ldd R25,z+1
	adiw R24,1
	movw R30,R28
	subi R30,46  ; addi 210
	sbci R31,255
	std z+1,R25
	std z+0,R24
	.dbline 170
;     //设置电话号码
;     copy(chrTemp,nOff,phoneTemp,0,phonelen);    //将源数组的内容拷贝到目的数组
	movw R30,R28
	subi R30,177  ; addi 591
	sbci R31,253
	ldd R0,z+0
	ldd R1,z+1
	std y+5,R1
	std y+4,R0
	clr R2
	clr R3
	std y+3,R3
	std y+2,R2
	movw R24,R28
	subi R24,44  ; offset = 212
	sbci R25,255
	std y+1,R25
	std y+0,R24
	movw R30,R28
	subi R30,46  ; addi 210
	sbci R31,255
	ldd R18,z+0
	ldd R19,z+1
	movw R16,R28
	subi R16,4  ; offset = 252
	sbci R17,255
	xcall _copy
	.dbline 171
;     nOff += phonelen;
	movw R30,R28
	subi R30,46  ; addi 210
	sbci R31,255
	ldd R2,z+0
	ldd R3,z+1
	movw R30,R28
	subi R30,177  ; addi 591
	sbci R31,253
	ldd R0,z+0
	ldd R1,z+1
	add R2,R0
	adc R3,R1
	movw R30,R28
	subi R30,46  ; addi 210
	sbci R31,255
	std z+1,R3
	std z+0,R2
	.dbline 172
;     chrTemp[nOff] = '0';   //设置协议标识
	movw R24,R28
	subi R24,4  ; offset = 252
	sbci R25,255
	movw R30,R2
	add R30,R24
	adc R31,R25
	ldi R24,48
	std z+0,R24
	.dbline 173
;     nOff += 1;
	movw R24,R2
	adiw R24,1
	movw R30,R28
	subi R30,46  ; addi 210
	sbci R31,255
	std z+1,R25
	std z+0,R24
	.dbline 174
;     chrTemp[nOff] = '0';
	movw R24,R28
	subi R24,4  ; offset = 252
	sbci R25,255
	movw R26,R28
	subi R26,46  ; addi 210
	sbci R27,255
	ld R30,x+
	ld R31,x
	add R30,R24
	adc R31,R25
	ldi R24,48
	std z+0,R24
	.dbline 175
;     nOff += 1;
	movw R30,R28
	subi R30,46  ; addi 210
	sbci R31,255
	ldd R24,z+0
	ldd R25,z+1
	adiw R24,1
	movw R30,R28
	subi R30,46  ; addi 210
	sbci R31,255
	std z+1,R25
	std z+0,R24
	.dbline 177
;     
;     nContent_Len = nLen;
	movw R30,R28
	subi R30,173  ; addi 595
	sbci R31,253
	ldd R0,z+0
	ldd R1,z+1
	movw R30,R28
	subi R30,136  ; addi 376
	sbci R31,254
	std z+1,R1
	std z+0,R0
	.dbline 179
;     // 设置编码类型
;     chrTemp[nOff] = '0';
	movw R24,R28
	subi R24,4  ; offset = 252
	sbci R25,255
	movw R26,R28
	subi R26,46  ; addi 210
	sbci R27,255
	ld R30,x+
	ld R31,x
	add R30,R24
	adc R31,R25
	ldi R24,48
	std z+0,R24
	.dbline 180
;     nOff += 1;
	movw R30,R28
	subi R30,46  ; addi 210
	sbci R31,255
	ldd R24,z+0
	ldd R25,z+1
	adiw R24,1
	movw R30,R28
	subi R30,46  ; addi 210
	sbci R31,255
	std z+1,R25
	std z+0,R24
	.dbline 181
;     chrTemp[nOff] = '0';
	movw R24,R28
	subi R24,4  ; offset = 252
	sbci R25,255
	movw R26,R28
	subi R26,46  ; addi 210
	sbci R27,255
	ld R30,x+
	ld R31,x
	add R30,R24
	adc R31,R25
	ldi R24,48
	std z+0,R24
	.dbline 182
;     nOff += 1;
	movw R30,R28
	subi R30,46  ; addi 210
	sbci R31,255
	ldd R24,z+0
	ldd R25,z+1
	adiw R24,1
	movw R30,R28
	subi R30,46  ; addi 210
	sbci R31,255
	std z+1,R25
	std z+0,R24
	.dbline 184
;     
;     Len[0] = nLen;
	movw R30,R28
	subi R30,173  ; addi 595
	sbci R31,253
	ldd R2,z+0
	ldd R3,z+1
	movw R30,R28
	subi R30,190  ; addi 578
	sbci R31,253
	std z+0,R2
	.dbline 185
;     for(i = 0;i < 10;i++)
	clr R2
	clr R3
	std y+7,R3
	std y+6,R2
L27:
	.dbline 186
	.dbline 187
	movw R24,R28
	adiw R24,8
	ldd R30,y+6
	ldd R31,y+7
	add R30,R24
	adc R31,R25
	clr R2
	std z+0,R2
	.dbline 188
L28:
	.dbline 185
	ldd R24,y+6
	ldd R25,y+7
	adiw R24,1
	std y+7,R25
	std y+6,R24
	.dbline 185
	cpi R24,10
	ldi R30,0
	cpc R25,R30
	brlt L27
	.dbline 189
;     {
;     	chrTmp[i] = 0;
;     }
;     ByteToChar(Len,chrTmp,1);
	ldi R24,1
	ldi R25,0
	std y+1,R25
	std y+0,R24
	movw R18,R28
	subi R18,248  ; offset = 8
	sbci R19,255
	movw R16,R28
	subi R16,190  ; offset = 578
	sbci R17,253
	xcall _ByteToChar
	.dbline 190
;     chrTemp[nOff] = 'A';
	movw R24,R28
	subi R24,4  ; offset = 252
	sbci R25,255
	movw R26,R28
	subi R26,46  ; addi 210
	sbci R27,255
	ld R30,x+
	ld R31,x
	add R30,R24
	adc R31,R25
	ldi R24,65
	std z+0,R24
	.dbline 191
;     nOff += 1;
	movw R30,R28
	subi R30,46  ; addi 210
	sbci R31,255
	ldd R24,z+0
	ldd R25,z+1
	adiw R24,1
	movw R30,R28
	subi R30,46  ; addi 210
	sbci R31,255
	std z+1,R25
	std z+0,R24
	.dbline 192
;     chrTemp[nOff] = 'A';
	movw R24,R28
	subi R24,4  ; offset = 252
	sbci R25,255
	movw R26,R28
	subi R26,46  ; addi 210
	sbci R27,255
	ld R30,x+
	ld R31,x
	add R30,R24
	adc R31,R25
	ldi R24,65
	std z+0,R24
	.dbline 193
;     nOff += 1;
	movw R30,R28
	subi R30,46  ; addi 210
	sbci R31,255
	ldd R24,z+0
	ldd R25,z+1
	adiw R24,1
	movw R30,R28
	subi R30,46  ; addi 210
	sbci R31,255
	std z+1,R25
	std z+0,R24
	.dbline 194
;     copy(chrTemp,nOff,chrTmp,0,2);
	ldi R24,2
	ldi R25,0
	std y+5,R25
	std y+4,R24
	clr R2
	clr R3
	std y+3,R3
	std y+2,R2
	movw R24,R28
	adiw R24,8
	std y+1,R25
	std y+0,R24
	movw R30,R28
	subi R30,46  ; addi 210
	sbci R31,255
	ldd R18,z+0
	ldd R19,z+1
	movw R16,R28
	subi R16,4  ; offset = 252
	sbci R17,255
	xcall _copy
	.dbline 195
;     nOff += 2;
	movw R30,R28
	subi R30,46  ; addi 210
	sbci R31,255
	ldd R24,z+0
	ldd R25,z+1
	adiw R24,2
	movw R30,R28
	subi R30,46  ; addi 210
	sbci R31,255
	std z+1,R25
	std z+0,R24
	.dbline 196
;     nLen_temp = nOff;
	movw R2,R24
	movw R30,R28
	subi R30,144  ; addi 368
	sbci R31,254
	std z+1,R3
	std z+0,R2
	.dbline 197
;     nLen_temp += nContent_Len;
	movw R30,R28
	subi R30,136  ; addi 376
	sbci R31,254
	ldd R2,z+0
	ldd R3,z+1
	movw R4,R24
	add R4,R2
	adc R5,R3
	movw R30,R28
	subi R30,144  ; addi 368
	sbci R31,254
	std z+1,R5
	std z+0,R4
	.dbline 200
;     
;     //获得长度的字符数组
;     nTempLen = IntToChar(nLen_temp,chrTmp);
	movw R18,R28
	subi R18,248  ; offset = 8
	sbci R19,255
	movw R16,R4
	xcall _IntToChar
	movw R30,R28
	subi R30,160  ; addi 352
	sbci R31,254
	std z+1,R17
	std z+0,R16
	.dbline 202
;     //封装长度信息
;     nTemp[0] = 'A';
	ldi R24,65
	movw R30,R28
	subi R30,146  ; addi 110
	sbci R31,255
	std z+0,R24
	.dbline 203
;     nTemp[1] = 'T';
	ldi R24,84
	movw R30,R28
	subi R30,145  ; addi 111
	sbci R31,255
	std z+0,R24
	.dbline 204
;     nTemp[2] = '+';
	ldi R24,43
	movw R30,R28
	subi R30,144  ; addi 112
	sbci R31,255
	std z+0,R24
	.dbline 205
;     nTemp[3] = 'C';
	ldi R24,67
	movw R30,R28
	subi R30,143  ; addi 113
	sbci R31,255
	std z+0,R24
	.dbline 206
;     nTemp[4] = 'M';
	ldi R24,77
	movw R30,R28
	subi R30,142  ; addi 114
	sbci R31,255
	std z+0,R24
	.dbline 207
;     nTemp[5] = 'G';
	ldi R24,71
	movw R30,R28
	subi R30,141  ; addi 115
	sbci R31,255
	std z+0,R24
	.dbline 208
;     nTemp[6] = 'S';
	ldi R24,83
	movw R30,R28
	subi R30,140  ; addi 116
	sbci R31,255
	std z+0,R24
	.dbline 209
;     nTemp[7] = '=';
	ldi R24,61
	movw R30,R28
	subi R30,139  ; addi 117
	sbci R31,255
	std z+0,R24
	.dbline 210
;     nOffset = 8;
	ldi R24,8
	ldi R25,0
	movw R30,R28
	subi R30,148  ; addi 108
	sbci R31,255
	std z+1,R25
	std z+0,R24
	.dbline 212
;     //长度
;     for(i = 0;i < nTempLen;i++) 
	clr R2
	clr R3
	std y+7,R3
	std y+6,R2
	xjmp L41
L38:
	.dbline 213
	.dbline 214
	movw R24,R28
	adiw R24,8
	ldd R30,y+6
	ldd R31,y+7
	add R30,R24
	adc R31,R25
	ldd R2,z+0
	movw R24,R28
	subi R24,146  ; offset = 110
	sbci R25,255
	movw R26,R28
	subi R26,148  ; addi 108
	sbci R27,255
	ld R30,x+
	ld R31,x
	add R30,R24
	adc R31,R25
	std z+0,R2
	.dbline 215
	movw R30,R28
	subi R30,148  ; addi 108
	sbci R31,255
	ldd R24,z+0
	ldd R25,z+1
	adiw R24,1
	movw R30,R28
	subi R30,148  ; addi 108
	sbci R31,255
	std z+1,R25
	std z+0,R24
	.dbline 216
L39:
	.dbline 212
	ldd R24,y+6
	ldd R25,y+7
	adiw R24,1
	std y+7,R25
	std y+6,R24
L41:
	.dbline 212
	movw R30,R28
	subi R30,160  ; addi 352
	sbci R31,254
	ldd R2,z+0
	ldd R3,z+1
	ldd R4,y+6
	ldd R5,y+7
	cp R4,R2
	cpc R5,R3
	brlt L38
	.dbline 217
;     {
;         nTemp[nOffset] = chrTmp[i]; 
;         nOffset += 1;   
;     }	
;     nTemp[nOffset] = 13;
	movw R24,R28
	subi R24,146  ; offset = 110
	sbci R25,255
	movw R26,R28
	subi R26,148  ; addi 108
	sbci R27,255
	ld R30,x+
	ld R31,x
	add R30,R24
	adc R31,R25
	ldi R24,13
	std z+0,R24
	.dbline 218
;     for(i = 0; i < nOffset;i++)
	clr R2
	clr R3
	std y+7,R3
	std y+6,R2
	xjmp L45
L42:
	.dbline 219
	.dbline 220
	movw R24,R28
	subi R24,146  ; offset = 110
	sbci R25,255
	ldd R30,y+6
	ldd R31,y+7
	add R30,R24
	adc R31,R25
	ldd R2,z+0
	ldd R30,y+6
	ldd R31,y+7
	add R30,R10
	adc R31,R11
	std z+0,R2
	.dbline 221
L43:
	.dbline 218
	ldd R24,y+6
	ldd R25,y+7
	adiw R24,1
	std y+7,R25
	std y+6,R24
L45:
	.dbline 218
	movw R30,R28
	subi R30,148  ; addi 108
	sbci R31,255
	ldd R2,z+0
	ldd R3,z+1
	ldd R4,y+6
	ldd R5,y+7
	cp R4,R2
	cpc R5,R3
	brlt L42
	.dbline 222
;     {
;     	pOut1[i] = nTemp[i];      //命令代码
;     }
;     *nTXLen1 = nOffset;  //发送的信息长度
	movw R30,R14
	std z+1,R3
	std z+0,R2
	.dbline 225
;     
;     //封装内容数据
;     copy(pOut2,0,strHead,0,18);
	ldi R24,18
	ldi R25,0
	std y+5,R25
	std y+4,R24
	clr R2
	clr R3
	std y+3,R3
	std y+2,R2
	movw R24,R28

⌨️ 快捷键说明

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