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

📄 sim340.lis

📁 本实例实现GSM模块的发送短消息
💻 LIS
📖 第 1 页 / 共 5 页
字号:
 013E           ;           Pdst -> R12,R13
 013E           ;           Psrc -> R14,R15
                        .even
 013E           _diandao::
 013E 0E940000          xcall push_gset5
 0142 6901              movw R12,R18
 0144 7801              movw R14,R16
 0146 AA84              ldd R10,y+10
 0148 BB84              ldd R11,y+11
 014A                   .dbline -1
 014A                   .dbline 115
 014A           ; }
 014A           ; /*
 014A           ; //删除短消息
 014A           ; int deleteSms(char pBuf[],short int index)
 014A           ; {
 014A           ;     pBuf[0] = 'A';
 014A           ;     pBuf[1] = 'T';
 014A           ;     pBuf[2] = '+';
 014A           ;     pBuf[3] = 'C';
 014A           ;     pBuf[4] = 'M';
 014A           ;     pBuf[5] = 'G';
 014A           ;     pBuf[6] = 'D';
 014A           ;     pBuf[7] = '=';
 014A           ;     pBuf[8] = (char)((index >> 8) & 0xff + 0x30);
 014A           ;     pBuf[9] = (char)(index & 0xff + 0x30);   
 014A           ;     pBuf[10] = 13;
 014A           ; 
 014A           ;     return 11;
 014A           ; }*/
 014A           ; //接收短消息
 014A           ; /*
 014A           ; int revSms(char pBuf[],char pOut[])
 014A           ; {
 014A           ;     pBuf[0] = 'A';
 014A           ;     pBuf[1] = 'T';
 014A           ;     pBuf[2] = '+';
 014A           ;     pBuf[3] = 'C';
 014A           ;     pBuf[4] = 'M';
 014A           ;     pBuf[5] = 'G';
 014A           ;     pBuf[6] = 'R';
 014A           ;     pBuf[7] = '=';
 014A           ;     pBuf[8] = (char)((index >> 8) & 0xff + 0x30);
 014A           ;     pBuf[9] = (char)(index & 0xff + 0x30);   
 014A           ;     pBuf[10] = 13;
 014A           ; 
 014A           ;     return 11;
 014A           ; }*/
 014A           ; //把电话号码转换为PDU格式
 014A           ; void diandao(char *Psrc,char *Pdst,int sca_len_temp)
 014A           ; {
 014A                   .dbline 116
 014A           ;  int i,j=4;
 014A 44E0              ldi R20,4
 014C 50E0              ldi R21,0
 014E                   .dbline 117
 014E           ;  for(i=0;i<sca_len_temp/2;i++)
 014E 6627              clr R22
 0150 7727              clr R23
 0152 22C0              xjmp L9
 0154           L6:
 0154                   .dbline 118
 0154                   .dbline 119
 0154 1A01              movw R2,R20
 0156 4F5F              subi R20,255  ; offset = 1
 0158 5F4F              sbci R21,255
 015A 02E0              ldi R16,2
 015C 10E0              ldi R17,0
 015E 9B01              movw R18,R22
 0160 0E940000          xcall empy16s
 0164 F801              movw R30,R16
 0166 EE0D              add R30,R14
 0168 FF1D              adc R31,R15
 016A 4180              ldd R4,z+1
 016C F101              movw R30,R2
 016E EC0D              add R30,R12
 0170 FD1D              adc R31,R13
 0172 4082              std z+0,R4
 0174                   .dbline 120
 0174 1A01              movw R2,R20
 0176 4F5F              subi R20,255  ; offset = 1
 0178 5F4F              sbci R21,255
 017A 02E0              ldi R16,2
 017C 10E0              ldi R17,0
 017E 9B01              movw R18,R22
 0180 0E940000          xcall empy16s
 0184 F801              movw R30,R16
 0186 EE0D              add R30,R14
 0188 FF1D              adc R31,R15
 018A 4080              ldd R4,z+0
 018C F101              movw R30,R2
 018E EC0D              add R30,R12
 0190 FD1D              adc R31,R13
 0192 4082              std z+0,R4
 0194                   .dbline 121
 0194           L7:
 0194                   .dbline 117
 0194 6F5F              subi R22,255  ; offset = 1
 0196 7F4F              sbci R23,255
 0198           L9:
 0198                   .dbline 117
 0198 22E0              ldi R18,2
 019A 30E0              ldi R19,0
 019C 8501              movw R16,R10
 019E 0E940000          xcall div16s
 01A2 6017              cp R22,R16
 01A4 7107              cpc R23,R17
 01A6 0CF4              brge X0
 01A8 D5CF              xjmp L6
 01AA           X0:
 01AA                   .dbline -2
 01AA           L5:
 01AA 0E940000          xcall pop_gset5
 01AE                   .dbline 0 ; func end
 01AE 0895              ret
 01B0                   .dbsym r j 20 I
 01B0                   .dbsym r i 22 I
 01B0                   .dbsym r sca_len_temp 10 I
 01B0                   .dbsym r Pdst 12 pc
 01B0                   .dbsym r Psrc 14 pc
 01B0                   .dbend
                        .area lit(rom, con, rel)
 0000           L11:
 0000 3038              .byte 48,56
 0002 3931              .byte 57,49
 0004 00000000000000000000      .word 0,0,0,0,0
 000E 00000000          .byte 0,0,0,0
 0012           L12:
 0012 3131              .byte 49,49
 0014 3030              .byte 48,48
 0016 3044              .byte 48,'D
                        .area text(rom, con, rel)
 01B0                   .dbfile C:\DOCUME~1\Administrator\桌面\sim340_e\sim340.c
 01B0                   .dbfunc e SendMsm _SendMsm fV
 01B0           ;            Len -> y+578
 01B0           ;           pBuf -> y+378
 01B0           ;   nContent_Len -> y+376
 01B0           ;        chrInfo -> y+370
 01B0           ;      nLen_temp -> y+368
 01B0           ;   strHead_temp -> y+354
 01B0           ;       nTempLen -> y+352
 01B0           ;        chrTemp -> y+252
 01B0           ;        strHead -> y+234
 01B0           ;              n -> y+232
 01B0           ;      phoneTemp -> y+212
 01B0           ;           nOff -> y+210
 01B0           ;          nTemp -> y+110
 01B0           ;        nOffset -> y+108
 01B0           ;         chrTmp -> y+8
 01B0           ;              i -> y+6
 01B0           ;        sca_len -> R20,R21
 01B0           ;            sca -> y+605
 01B0           ;          pOut2 -> R22,R23
 01B0           ;          pOut1 -> R10,R11
 01B0           ;        nTXLen2 -> R12,R13
 01B0           ;        nTXLen1 -> R14,R15
 01B0           ;           nLen -> y+595
 01B0           ;          pData -> y+593
 01B0           ;       phonelen -> y+591
 01B0           ;         pPhone -> y+589
                        .even
 01B0           _SendMsm::
 01B0 0E940000          xcall push_arg4
 01B4 0E940000          xcall push_gset5
 01B8 EF97              sbiw R28,63
 01BA EF97              sbiw R28,63
 01BC EF97              sbiw R28,63
 01BE EF97              sbiw R28,63
 01C0 EF97              sbiw R28,63
 01C2 EF97              sbiw R28,63
 01C4 EF97              sbiw R28,63
 01C6 EF97              sbiw R28,63
 01C8 EF97              sbiw R28,63
 01CA 2C97              sbiw R28,12  ; offset = 579
 01CC FE01              movw R30,R28
 01CE EB5A              subi R30,171  ; addi 597
 01D0 FD4F              sbci R31,253
 01D2 E080              ldd R14,z+0
 01D4 F180              ldd R15,z+1
 01D6 FE01              movw R30,R28
 01D8 E95A              subi R30,169  ; addi 599
 01DA FD4F              sbci R31,253
 01DC C080              ldd R12,z+0
 01DE D180              ldd R13,z+1
 01E0 FE01              movw R30,R28
 01E2 E75A              subi R30,167  ; addi 601
 01E4 FD4F              sbci R31,253
 01E6 A080              ldd R10,z+0
 01E8 B180              ldd R11,z+1
 01EA FE01              movw R30,R28
 01EC E55A              subi R30,165  ; addi 603
 01EE FD4F              sbci R31,253
 01F0 6081              ldd R22,z+0
 01F2 7181              ldd R23,z+1
 01F4 FE01              movw R30,R28
 01F6 E15A              subi R30,161  ; addi 607
 01F8 FD4F              sbci R31,253
 01FA 4081              ldd R20,z+0
 01FC 5181              ldd R21,z+1
 01FE                   .dbline -1
 01FE                   .dbline 126
 01FE           ;     { 
 01FE           ;        Pdst[j++]=Psrc[2*i+1];
 01FE           ;        Pdst[j++]=Psrc[2*i];
 01FE           ;       }
 01FE           ; }
 01FE           ; //发送短消息
 01FE           ; void SendMsm(char pPhone[],int phonelen,char pData[],int nLen,int *nTXLen1,
 01FE           ;              int *nTXLen2,char pOut1[],char pOut2[],char sca[],int sca_len)
 01FE           ;     {
 01FE                   .dbline 127
 01FE           ;     char strHead[18] = {'0','8','9','1'};
 01FE 80E0              ldi R24,<L11
 0200 90E0              ldi R25,>L11
 0202 FE01              movw R30,R28
 0204 E651              subi R30,22  ; offset = 234
 0206 FF4F              sbci R31,255
 0208 02E1              ldi R16,18
 020A 10E0              ldi R17,0
 020C FA93              st -y,R31
 020E EA93              st -y,R30
 0210 9A93              st -y,R25
 0212 8A93              st -y,R24
 0214 0E940000          xcall asgncblk
 0218                   .dbline 128
 0218           ;     char chrInfo[6] = {'1','1','0','0','0','D'};  //基本参数、消息基准值、目标地址个数
 0218 80E0              ldi R24,<L12
 021A 90E0              ldi R25,>L12
 021C FE01              movw R30,R28
 021E EE58              subi R30,142  ; offset = 370
 0220 FE4F              sbci R31,254
 0222 06E0              ldi R16,6
 0224 10E0              ldi R17,0
 0226 FA93              st -y,R31
 0228 EA93              st -y,R30
 022A 9A93              st -y,R25
 022C 8A93              st -y,R24
 022E 0E940000          xcall asgncblk
 0232                   .dbline 143
 0232           ;     int  nLen_temp;
 0232           ;     int  nContent_Len;
 0232           ;     int  nTempLen;
 0232           ;     int  nOff;
 0232           ;     int  nOffset;
 0232           ;     char chrTemp[100];
 0232           ;     char chrTmp[100];       //暂时存放电话号码
 0232           ;     char pBuf[200];
 0232           ;     char phoneTemp[20];    //转变后的电话号码
 0232           ;     char nTemp[100];
 0232           ;     char Len[1];
 0232           ;     int  i;
 0232           ;     int  n;
 0232           ;       char strHead_temp[14];
 0232           ;     diandao(sca,strHead_temp,sca_len);
 0232 5983              std y+1,R21
 0234 4883              std y+0,R20
 0236 9E01              movw R18,R28
 0238 2E59              subi R18,158  ; offset = 354
 023A 3E4F              sbci R19,254
 023C FE01              movw R30,R28
 023E E35A              subi R30,163  ; addi 605
 0240 FD4F              sbci R31,253
 0242 0081              ldd R16,z+0
 0244 1181              ldd R17,z+1
 0246 7BDF              xcall _diandao
 0248                   .dbline 144
 0248           ;       for(i=0;i<sca_len;i++)
 0248 2224              clr R2
 024A 3324              clr R3
 024C 3F82              std y+7,R3
 024E 2E82              std y+6,R2
 0250 15C0              xjmp L16
 0252           L13:
 0252                   .dbline 145
 0252                   .dbline 146
 0252 CE01              movw R24,R28
 0254 8E59              subi R24,158  ; offset = 354
 0256 9E4F              sbci R25,254
 0258 EE81              ldd R30,y+6
 025A FF81              ldd R31,y+7
 025C E80F              add R30,R24
 025E F91F              adc R31,R25
 0260 2080              ldd R2,z+0
 0262 CE01              movw R24,R28
 0264 8251              subi R24,18  ; offset = 238
 0266 9F4F              sbci R25,255
 0268 EE81              ldd R30,y+6
 026A FF81              ldd R31,y+7
 026C E80F              add R30,R24
 026E F91F              adc R31,R25
 0270 2082              std z+0,R2
 0272                   .dbline 147
 0272           L14:
 0272                   .dbline 144
 0272 8E81              ldd R24,y+6
 0274 9F81              ldd R25,y+7
 0276 0196              adiw R24,1
 0278 9F83              std y+7,R25
 027A 8E83              std y+6,R24
 027C           L16:
 027C                   .dbline 144
 027C 2E80              ldd R2,y+6
 027E 3F80              ldd R3,y+7
 0280 2416              cp R2,R20
 0282 3506              cpc R3,R21
 0284 34F3              brlt L13
 0286                   .dbline 148
 0286           ;          {
 0286           ;           strHead[i+4]=strHead_temp[i];
 0286           ;          }
 0286           ;     nOff = 0;
 0286 2224              clr R2
 0288 3324              clr R3
 028A FE01              movw R30,R28
 028C EE52              subi R30,46  ; addi 210
 028E FF4F              sbci R31,255
 0290 3182              std z+1,R3
 0292 2082              std z+0,R2
 0294                   .dbline 149
 0294           ;     nOffset = 0;
 0294 FE01              movw R30,R28
 0296 E459              subi R30,148  ; addi 108
 0298 FF4F              sbci R31,255
 029A 3182              std z+1,R3
 029C 2082              std z+0,R2
 029E                   .dbline 150
 029E           ;     for(i = 0;i < phonelen;i++)
 029E 3F82              std y+7,R3
 02A0 2E82              std y+6,R2
 02A2 16C0              xjmp L21
 02A4           L18:
 02A4                   .dbline 151
 02A4                   .dbline 152
 02A4 EE81              ldd R30,y+6
 02A6 FF81              ldd R31,y+7
 02A8 DE01              movw R26,R28
 02AA A35B              subi R26,179  ; addi 589
 02AC BD4F              sbci R27,253
 02AE 0D90              ld R0,x+
 02B0 1C90              ld R1,x

⌨️ 快捷键说明

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