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

📄 main.s

📁 关于proteus的仿真实例
💻 S
📖 第 1 页 / 共 4 页
字号:
	.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 + -