📄 main.s
字号:
.dbline 257
; while(strlen--)
; {
.dbline 258
; if(*str1++ != *str2++) return(FALSE); // 两个串不相等返回假
movw R2,R18
subi R18,255 ; offset = 1
sbci R19,255
movw R30,R2
lpm R30,Z
movw R26,R16
ld R2,X+
movw R16,R26
cp R2,R30
breq L91
.dbline 258
clr R16
rjmp L87
L91:
.dbline 259
L89:
.dbline 256
mov R2,R20
clr R3
subi R20,1
tst R2
brne L88
.dbline 260
; }
; return(TRUE);
ldi R16,1
.dbline -2
L87:
rcall pop_gset1
.dbline 0 ; func end
ret
.dbsym r strlen 20 c
.dbsym r str2 18 pkc
.dbsym r str1 16 pc
.dbend
.dbfunc e Delete_SMS _Delete_SMS fV
; count -> R20
; num -> R22
.even
_Delete_SMS::
rcall push_gset2
mov R22,R16
.dbline -1
.dbline 267
; }
;
; /*-----------------------------------------------------------------------*/
; ///////////////////////////// 删除短信 //////////////////////////////
; /*-----------------------------------------------------------------------*/
; void Delete_SMS(unsigned char num) // 删除SMS,=0删除所有SMS
; {
.dbline 270
; unsigned char count;
;
; for(count = 0;count < AtcmgdLen;count++) // AT命令窜移入发送缓冲
clr R20
rjmp L97
L94:
.dbline 271
.dbline 272
ldi R24,<_Atcmgd
ldi R25,>_Atcmgd
mov R30,R20
clr R31
add R30,R24
adc R31,R25
lpm R30,Z
ldi R24,<_TmpBuf
ldi R25,>_TmpBuf
mov R26,R20
clr R27
add R26,R24
adc R27,R25
st x,R30
.dbline 273
L95:
.dbline 270
inc R20
L97:
.dbline 270
cpi R20,8
brlo L94
.dbline 275
; {
; TmpBuf[count] = Atcmgd[count];
; }
;
; if(num == ALL)
cpi R22,255
brne L98
.dbline 276
; {
.dbline 277
; for(count = 1; count < 10; count++)
ldi R20,1
rjmp L103
L100:
.dbline 278
.dbline 279
mov R24,R20
subi R24,208 ; addi 48
sts _TmpBuf+8,R24
.dbline 280
ldi R18,9
ldi R16,<_TmpBuf
ldi R17,>_TmpBuf
rcall _Put_AT_String
.dbline 282
L101:
.dbline 277
inc R20
L103:
.dbline 277
cpi R20,10
brlo L100
.dbline 283
; {
; TmpBuf[AtcmgdLen] = count + 0x30;
; Put_AT_String((unsigned char*)TmpBuf,(AtcmgdLen+1));
;
; }
; TmpBuf[AtcmgdLen] = 0x31;
ldi R24,49
sts _TmpBuf+8,R24
.dbline 284
; for(count = 0; count < 10; count++)
clr R20
rjmp L109
L106:
.dbline 285
.dbline 286
mov R24,R20
subi R24,208 ; addi 48
sts _TmpBuf+9,R24
.dbline 287
ldi R18,10
ldi R16,<_TmpBuf
ldi R17,>_TmpBuf
rcall _Put_AT_String
.dbline 289
L107:
.dbline 284
inc R20
L109:
.dbline 284
cpi R20,10
brlo L106
.dbline 291
; {
; TmpBuf[AtcmgdLen+1] = count + 0x30;
; Put_AT_String((unsigned char*)TmpBuf,(AtcmgdLen+2));
;
; }
;
; }
rjmp L99
L98:
.dbline 293
.dbline 294
mov R24,R22
subi R24,208 ; addi 48
sts _TmpBuf+8,R24
.dbline 295
ldi R18,9
ldi R16,<_TmpBuf
ldi R17,>_TmpBuf
rcall _Put_AT_String
.dbline 297
L99:
.dbline -2
L93:
rcall pop_gset2
.dbline 0 ; func end
ret
.dbsym r count 20 c
.dbsym r num 22 c
.dbend
.dbfunc e CheckSMS_in _CheckSMS_in fc
.even
_CheckSMS_in::
sbiw R28,1
.dbline -1
.dbline 304
; else
; {
; TmpBuf[AtcmgdLen] = num + 0x30;
; Put_AT_String((unsigned char*)TmpBuf,(AtcmgdLen+1));
;
; }
; }
;
; /*-----------------------------------------------------------------------*/
; /////////////////////////// 检查SMS返回 //////////////////////////////
; /*-----------------------------------------------------------------------*/
; unsigned char CheckSMS_in(void)
; {
L113:
.dbline 305
L114:
.dbline 305
; while(!RxStatus); // 等待接收完成
lds R2,_RxStatus
tst R2
breq L113
.dbline 306
; DelayMs(100);
ldi R16,100
ldi R17,0
rcall _DelayMs
.dbline 308
;
; if(StringCompare(RxBuf,SMSin,SMSinLen)) // 如果收到OK完成 +CMTI: "SM", 1
ldi R24,14
std y+0,R24
ldi R18,<_SMSin
ldi R19,>_SMSin
ldi R16,<_RxBuf
ldi R17,>_RxBuf
rcall _StringCompare
tst R16
breq L116
.dbline 309
; {
.dbline 310
; return (OK);
ldi R16,1
rjmp L112
L116:
.dbline 313
; }
; else
; {
.dbline 314
; return (ERROR);
clr R16
.dbline -2
L112:
adiw R28,1
.dbline 0 ; func end
ret
.dbend
.dbfunc e CheckSMS _CheckSMS fV
; numlen -> R22
; j -> R22
; index -> R22
; i -> R20
.even
_CheckSMS::
rcall push_gset2
.dbline -1
.dbline 322
; }
;
; }
; /*-----------------------------------------------------------------------*/
; /////////////// 将设置号码存入内存 /////////////////
; /*-----------------------------------------------------------------------*/
; void CheckSMS(void)
; {
.dbline 323
; unsigned char i=0,j=0,index,numlen=0;
clr R20
.dbline 323
clr R22
.dbline 323
.dbline 324
; for(;i<12;i++)
rjmp L122
L119:
.dbline 325
.dbline 326
ldi R24,<_PhoneNum
ldi R25,>_PhoneNum
mov R30,R20
clr R31
add R30,R24
adc R31,R25
clr R2
std z+0,R2
.dbline 327
L120:
.dbline 324
inc R20
L122:
.dbline 324
cpi R20,12
brlo L119
.dbline 341
; {
; PhoneNum[i] = 0;
; }
; /* do
; {
; i++;
; j=i+1;
; }
; //while((Pdu[i] == 'G') && (Pdu[j] == 'H'));
;
; index = j+1;
; i = index;
; while(Pdu[i++] == '+')numlen++;
;
; j = 79; */
;
; index = 79;
ldi R22,79
.dbline 342
; for(i=0;i<11;i++)
clr R20
rjmp L126
L123:
.dbline 343
.dbline 344
mov R2,R22
clr R3
subi R22,255 ; addi 1
ldi R24,<_Pdu
ldi R25,>_Pdu
mov R30,R2
clr R31
add R30,R24
adc R31,R25
ldd R2,z+0
ldi R24,<_PhoneNum
ldi R25,>_PhoneNum
mov R30,R20
clr R31
add R30,R24
adc R31,R25
std z+0,R2
.dbline 345
rcall _PhoneNum_to_EEPROM
.dbline 346
L124:
.dbline 342
inc R20
L126:
.dbline 342
cpi R20,11
brlo L123
.dbline -2
L118:
rcall pop_gset2
.dbline 0 ; func end
ret
.dbsym r numlen 22 c
.dbsym r j 22 c
.dbsym r index 22 c
.dbsym r i 20 c
.dbend
.dbfunc e CheckPhoneNum _CheckPhoneNum fc
; i -> R16
.even
_CheckPhoneNum::
.dbline -1
.dbline 350
; {
; PhoneNum[i] = Pdu[index++];
; PhoneNum_to_EEPROM();
; }
;
; }
; unsigned char CheckPhoneNum(void)
; {
.dbline 352
; unsigned char i;
; for(i=0;i<12;i++)
clr R16
rjmp L131
L128:
.dbline 353
; {
.dbline 354
; if( PhoneNum != 0) return (FALSE);
ldi R24,<_PhoneNum
ldi R25,>_PhoneNum
cpi R24,0
cpc R24,R25
breq L132
X0:
.dbline 354
clr R16
rjmp L127
L132:
.dbline 355
L129:
.dbline 352
inc R16
L131:
.dbline 352
cpi R16,12
brlo L128
.dbline 356
; }
; return (TRUE);
ldi R16,1
.dbline -2
L127:
.dbline 0 ; func end
ret
.dbsym r i 16 c
.dbend
.dbfunc e RecSMS _RecSMS fV
; j -> R20
; y -> R10
; x -> R12
; i -> R22
; count -> R14
.even
_RecSMS::
rcall push_gset5
.dbline -1
.dbline 362
; }
; /*-----------------------------------------------------------------------*/
; ////////////////////////// 接收处理短信息 ///////////////////////////
; /*-----------------------------------------------------------------------*/
; void RecSMS(void)
; {
.dbline 363
; unsigned char count,i=0,j=0,x,y;
clr R22
.dbline 363
clr R20
.dbline 365
;
; Put_AT_String("AT+CMGR=1",9);
ldi R18,9
ldi R16,<L135
ldi R17,>L135
rcall _Put_AT_String
rjmp L137
L136:
.dbline 368
.dbline 369
inc R22
.dbline 370
L137:
.dbline 367
;
; while(RxBuf[i] != 0x0D)
ldi R24,<_RxBuf
ldi R25,>_RxBuf
mov R30,R22
clr R31
add R30,R24
adc R31,R25
ldd R24,z+0
cpi R24,13
brne L136
.dbline 371
; {
; i++;
; }
; i = 76;
ldi R22,76
.dbline 372
; j = i;
mov R20,R22
.dbline 373
; if((RxBuf[i] == 'G') && (RxBuf[j+1] == 'H'))
ldi R24,<_RxBuf
ldi R25,>_RxBuf
mov R30,R22
clr R31
add R30,R24
adc R31,R25
ldd R24,z+0
cpi R24,71
breq X1
rjmp L139
X1:
ldi R24,<_RxBuf+1
ldi R25,>_RxBuf+1
mov R30,R20
clr R31
add R30,R24
adc R31,R25
ldd R24,z+0
cpi R24,72
breq X2
rjmp L139
X2:
.dbline 374
; {
.dbline 375
; count = 0;
clr R14
rjmp L143
L142:
.dbline 377
; while(1)
; {
.dbline 378
; Pdu[count] = RxBuf[count];
ldi R24,<_RxBuf
ldi R25,>_RxBuf
mov R30,R14
clr R31
add R30,R24
adc R31,R25
ldd R2,z+0
ldi R24,<_Pdu
ldi R25,>_Pdu
mov R30,R14
clr R31
add R30,R24
adc R31,R25
std z+0,R2
.dbline 379
; x = count;
mov R12,R14
.dbline 380
; y = count;
mov R10,R14
.dbline 381
; if((RxBuf[x-2] == 0x30) && (RxBuf[y-1] == 0x0D))
ldi R24,<_RxBuf-2
ldi R25,>_RxBuf-2
mov R30,R12
clr R31
add R30,R24
adc R31,R25
ldd R24,z+0
cpi R24,48
brne L145
ldi R24,<_RxBuf-1
ldi R25,>_RxBuf-1
mov R30,R10
clr R31
add R30,R24
adc R31,R25
ldd R24,z+0
cpi R24,13
brne L145
.dbline 382
; {
.dbline 383
; break;
rjmp L144
L145:
.dbline 385
inc R14
.dbline 386
L143:
.dbline 376
rjmp L142
L144:
.dbline 387
; }
; count++;
; }
; CheckSMS();
rcall _CheckSMS
.dbline 388
; Delete_SMS(1);
ldi R16,1
rcall _Delete_SMS
.dbline 390
;
; }
rjmp L140
L139:
.dbline 392
.dbline 393
ldi R16,1
rcall _Delete_SMS
.dbline 394
L140:
.dbline -2
L134:
rcall pop_gset5
.dbline 0 ; func end
ret
.dbsym r j 20 c
.dbsym r y 10 c
.dbsym r x 12 c
.dbsym r i 22 c
.dbsym r count 14 c
.dbend
.dbfunc e DetQEITING _DetQEITING fc
; tmp -> y+0
.even
_DetQEITING::
sbiw R28,1
.dbline -1
.dbline 398
; else
; {
; Delete_SMS(1);
; }
; }
;
; unsigned char DetQEITING(void)
; {
.dbline 401
; volatile unsigned char tmp;
;
; if(!(DetQT()))
sbic 0x10,2
rjmp L150
.dbline 402
; {
.dbline 403
; release = 0;
clr R2
sts _release,R2
.dbline 404
; DelayMs(10);
ldi R16,10
ldi R17,0
rcall _DelayMs
.dbline 406
;
; if(!(DetQT())) {DettqFlag = 1;}
sbic 0x10,2
rjmp L151
.dbline 406
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -