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

📄 main.lis

📁 proteus实例集锦
💻 LIS
📖 第 1 页 / 共 5 页
字号:
 030A FF27              clr R31
 030C E80F              add R30,R24
 030E F91F              adc R31,R25
 0310 2082              std z+0,R2
 0312                   .dbline 191
 0312           L60:
 0312                   .dbline 188
 0312 4395              inc R20
 0314           L62:
 0314                   .dbline 188
 0314 4A15              cp R20,R10
 0316 88F3              brlo L59
 0318                   .dbline 193
 0318           ;       {
 0318           ;           TxBuf[count] = *(str+count);
 0318           ;       }
 0318           ;       
 0318           ;       TxBuf[length] = 0x0D;                     // 发送缓冲窜结尾加“回车”
 0318 80E0              ldi R24,<_TxBuf
 031A 90E0              ldi R25,>_TxBuf
 031C EA2D              mov R30,R10
 031E FF27              clr R31
 0320 E80F              add R30,R24
 0322 F91F              adc R31,R25
 0324 8DE0              ldi R24,13
 0326 8083              std z+0,R24
 0328                   .dbline 194
 0328           ;       TxBuf[length+ 1] = 0x00;                  // 发送缓冲窜结束符号
 0328 80E0              ldi R24,<_TxBuf+1
 032A 90E0              ldi R25,>_TxBuf+1
 032C EA2D              mov R30,R10
 032E FF27              clr R31
 0330 E80F              add R30,R24
 0332 F91F              adc R31,R25
 0334 2224              clr R2
 0336 2082              std z+0,R2
 0338                   .dbline 196
 0338           ;       
 0338           ;     TxStatus = 0;
 0338 20920E00          sts _TxStatus,R2
 033C                   .dbline 197
 033C           ;       TxIndex = 1;                              // 发送指针偏移1
 033C 81E0              ldi R24,1
 033E 80930000          sts _TxIndex,R24
 0342                   .dbline 198
 0342           ;       OkFlag = 0;
 0342 20920F00          sts _OkFlag,R2
 0346                   .dbline 199
 0346           ;       TxEnable();
 0346 56DF              rcall _TxEnable
 0348           L64:
 0348                   .dbline 201
 0348           L65:
 0348                   .dbline 201
 0348           ;                                                 // 激活发送
 0348           ;     while(!TxStatus);                         // 等代发送结束,发送缓冲指针为零则可以发送
 0348 20900E00          lds R2,_TxStatus
 034C 2220              tst R2
 034E E1F3              breq L64
 0350                   .dbline 202
 0350           ;       DelayMs(20);
 0350 04E1              ldi R16,20
 0352 10E0              ldi R17,0
 0354 00D0              rcall _DelayMs
 0356                   .dbline 203
 0356           ;     if(retflag)
 0356 6623              tst R22
 0358 41F0              breq L67
 035A                   .dbline 204
 035A           ;     { 
 035A           L69:
 035A                   .dbline 205
 035A           L70:
 035A                   .dbline 205
 035A           ;         while(!OkFlag);                       // 收到模块返回OK,命令结束
 035A 20900F00          lds R2,_OkFlag
 035E 2220              tst R2
 0360 E1F3              breq L69
 0362                   .dbline 206
 0362           ;               OkFlag = 0;
 0362 2224              clr R2
 0364 20920F00          sts _OkFlag,R2
 0368                   .dbline 207
 0368           ;       }
 0368 06C0              rjmp L68
 036A           L67:
 036A                   .dbline 209
 036A                   .dbline 210
 036A 08EC              ldi R16,200
 036C 10E0              ldi R17,0
 036E 00D0              rcall _DelayMs
 0370                   .dbline 211
 0370 2224              clr R2
 0372 20920F00          sts _OkFlag,R2
 0376                   .dbline 212
 0376           L68:
 0376                   .dbline -2
 0376           L58:
 0376 00D0              rcall pop_gset4
 0378                   .dbline 0 ; func end
 0378 0895              ret
 037A                   .dbsym r count 20 c
 037A                   .dbsym r retflag 22 c
 037A                   .dbsym r length 10 c
 037A                   .dbsym r str 12 pc
 037A                   .dbend
 037A                   .dbfunc e DialNum _DialNum fV
 037A           ;              i -> R10
 037A           ;         length -> R20
 037A           ;          count -> R22
                        .even
 037A           _DialNum::
 037A 00D0              rcall push_gset3
 037C                   .dbline -1
 037C                   .dbline 220
 037C           ;       else
 037C           ;       {
 037C           ;         DelayMs(200);
 037C           ;               OkFlag = 0;
 037C           ;       }
 037C           ; }
 037C           ; ////////////////////////////////////////////////////////////////////////////////
 037C           ; 
 037C           ; /*-----------------------------------------------------------------------*/
 037C           ; //////////////////////////         拨号         ///////////////////////////
 037C           ; /*-----------------------------------------------------------------------*/
 037C           ; void DialNum(void)
 037C           ; {
 037C                   .dbline 221
 037C           ;     unsigned char i,count=0,length=0;
 037C 6627              clr R22
 037E                   .dbline 221
 037E 4427              clr R20
 0380 01C0              rjmp L74
 0382           L73:
 0382                   .dbline 224
 0382                   .dbline 225
 0382 4395              inc R20
 0384                   .dbline 226
 0384           L74:
 0384                   .dbline 223
 0384           ; 
 0384           ;       while ((PhoneNum[count++] != 0))                  // 计算电话号码长度
 0384 262E              mov R2,R22
 0386 3324              clr R3
 0388 6F5F              subi R22,255    ; addi 1
 038A 80E0              ldi R24,<_PhoneNum
 038C 90E0              ldi R25,>_PhoneNum
 038E E22D              mov R30,R2
 0390 FF27              clr R31
 0392 E80F              add R30,R24
 0394 F91F              adc R31,R25
 0396 2080              ldd R2,z+0
 0398 2220              tst R2
 039A 99F7              brne L73
 039C                   .dbline 228
 039C           ;       {
 039C           ;           length++;
 039C           ;       }
 039C           ;       
 039C           ;       TxBuf[0] = 'A';
 039C 81E4              ldi R24,65
 039E 80930100          sts _TxBuf,R24
 03A2                   .dbline 229
 03A2           ;       TxBuf[1] = 'T';
 03A2 84E5              ldi R24,84
 03A4 80930200          sts _TxBuf+1,R24
 03A8                   .dbline 230
 03A8           ;       TxBuf[2] = 'D';
 03A8 84E4              ldi R24,68
 03AA 80930300          sts _TxBuf+2,R24
 03AE                   .dbline 232
 03AE           ;       
 03AE           ;       i = 3;
 03AE 83E0              ldi R24,3
 03B0 A82E              mov R10,R24
 03B2                   .dbline 233
 03B2           ;     for(count=0;count<length;count++)
 03B2 6627              clr R22
 03B4 14C0              rjmp L81
 03B6           L78:
 03B6                   .dbline 234
 03B6                   .dbline 235
 03B6 2A2C              mov R2,R10
 03B8 3324              clr R3
 03BA 822D              mov R24,R2
 03BC 8F5F              subi R24,255    ; addi 1
 03BE A82E              mov R10,R24
 03C0 80E0              ldi R24,<_PhoneNum
 03C2 90E0              ldi R25,>_PhoneNum
 03C4 E62F              mov R30,R22
 03C6 FF27              clr R31
 03C8 E80F              add R30,R24
 03CA F91F              adc R31,R25
 03CC 4080              ldd R4,z+0
 03CE 80E0              ldi R24,<_TxBuf
 03D0 90E0              ldi R25,>_TxBuf
 03D2 E22D              mov R30,R2
 03D4 FF27              clr R31
 03D6 E80F              add R30,R24
 03D8 F91F              adc R31,R25
 03DA 4082              std z+0,R4
 03DC                   .dbline 236
 03DC           L79:
 03DC                   .dbline 233
 03DC 6395              inc R22
 03DE           L81:
 03DE                   .dbline 233
 03DE 6417              cp R22,R20
 03E0 50F3              brlo L78
 03E2                   .dbline 238
 03E2           ;       {
 03E2           ;           TxBuf[i++] = PhoneNum[count];
 03E2           ;       }
 03E2           ;     
 03E2           ;       TxBuf[length+3] = ';';
 03E2 80E0              ldi R24,<_TxBuf+3
 03E4 90E0              ldi R25,>_TxBuf+3
 03E6 E42F              mov R30,R20
 03E8 FF27              clr R31
 03EA E80F              add R30,R24
 03EC F91F              adc R31,R25
 03EE 8BE3              ldi R24,59
 03F0 8083              std z+0,R24
 03F2                   .dbline 239
 03F2           ;       TxBuf[length+4] = 0x0D;
 03F2 80E0              ldi R24,<_TxBuf+4
 03F4 90E0              ldi R25,>_TxBuf+4
 03F6 E42F              mov R30,R20
 03F8 FF27              clr R31
 03FA E80F              add R30,R24
 03FC F91F              adc R31,R25
 03FE 8DE0              ldi R24,13
 0400 8083              std z+0,R24
 0402                   .dbline 241
 0402           ;       
 0402           ;     OkFlag = 0;
 0402 2224              clr R2
 0404 20920F00          sts _OkFlag,R2
 0408                   .dbline 242
 0408           ;     TxStatus = 0;
 0408 20920E00          sts _TxStatus,R2
 040C                   .dbline 243
 040C           ;       TxIndex = 1;                              // 发送指针偏移1
 040C 81E0              ldi R24,1
 040E 80930000          sts _TxIndex,R24
 0412                   .dbline 244
 0412           ;       TxEnable();                               // 激活发送
 0412 F0DE              rcall _TxEnable
 0414           L84:
 0414                   .dbline 245
 0414           L85:
 0414                   .dbline 245
 0414           ;     while(!TxStatus);                         // 等代发送结束,发送缓冲指针为零则可以发送
 0414 20900E00          lds R2,_TxStatus
 0418 2220              tst R2
 041A E1F3              breq L84
 041C                   .dbline 246
 041C           ;       DelayMs(20);
 041C 04E1              ldi R16,20
 041E 10E0              ldi R17,0
 0420 00D0              rcall _DelayMs
 0422                   .dbline 248
 0422           ;       //while(!OkFlag);                           // 收到模块返回OK,命令结束  
 0422           ;     OkFlag = 0;
 0422 2224              clr R2
 0424 20920F00          sts _OkFlag,R2
 0428                   .dbline -2
 0428           L72:
 0428 00D0              rcall pop_gset3
 042A                   .dbline 0 ; func end
 042A 0895              ret
 042C                   .dbsym r i 10 c
 042C                   .dbsym r length 20 c
 042C                   .dbsym r count 22 c
 042C                   .dbend
 042C                   .dbfunc e StringCompare _StringCompare fc
 042C           ;         strlen -> R20
 042C           ;           str2 -> R18,R19
 042C           ;           str1 -> R16,R17
                        .even
 042C           _StringCompare::
 042C 00D0              rcall push_gset1
 042E 4A81              ldd R20,y+2
 0430                   .dbline -1
 0430                   .dbline 255
 0430           ; } 
 0430           ; 
 0430           ; /*-----------------------------------------------------------------------*/
 0430           ; /////////////////////////////  比较两个串 /////////////////////////////////
 0430           ; /*-----------------------------------------------------------------------*/
 0430           ; unsigned char StringCompare(volatile unsigned char *str1,const unsigned char *str2,unsigned char strlen)
 0430           ; {
 0430 0CC0              rjmp L89
 0432           L88:
 0432                   .dbline 257
 0432           ;     while(strlen--)
 0432           ;       {
 0432                   .dbline 258
 0432           ;           if(*str1++ != *str2++) return(FALSE);    // 两个串不相等返回假
 0432 1901              movw R2,R18
 0434 2F5F              subi R18,255  ; offset = 1
 0436 3F4F              sbci R19,255
 0438 F101              movw R30,R2
 043A E491              lpm R30,Z
 043C D801              movw R26,R16
 043E 2D90              ld R2,X+
 0440 8D01              movw R16,R26
 0442 2E16              cp R2,R30
 0444 11F0              breq L91
 0446                   .dbline 258
 0446 0027              clr R16
 0448 06C0              rjmp L87
 044A           L91:
 044A                   .dbline 259
 044A           L89:
 044A                   .dbline 256

⌨️ 快捷键说明

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