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

📄 main.lis

📁 Proteus实例集锦(包括电路图.仿真程序,各种各样的电路
💻 LIS
📖 第 1 页 / 共 5 页
字号:
 007C 8333              cpi R24,51
 007E 79F4              brne L10
 0080 80912300          lds R24,_RxBuf+1
 0084 8D30              cpi R24,13
 0086 59F4              brne L10
 0088                   .dbline 45
 0088           ;     {
 0088                   .dbline 46
 0088           ;         BusyFlag = 1;                                // 置电话呼入标志
 0088 81E0              ldi R24,1
 008A 80931200          sts _BusyFlag,R24
 008E                   .dbline 47
 008E           ;           RxIndex = 0;
 008E 2224              clr R2
 0090 20922100          sts _RxIndex,R2
 0094                   .dbline 48
 0094           ;               RxStatus = 1;
 0094 80930D00          sts _RxStatus,R24
 0098                   .dbline 49
 0098           ;               OkFlag = 1;
 0098 80930F00          sts _OkFlag,R24
 009C                   .dbline 50
 009C           ;               return;  
 009C 38C0              rjmp L1
 009E           L10:
 009E                   .dbline 52
 009E           ;     }      
 009E           ;     else if((RxBuf[0] == 0x37) && (RxBuf[1] == 0x0D))  // 收到来电信号,来电标志置位
 009E 80912200          lds R24,_RxBuf
 00A2 8733              cpi R24,55
 00A4 79F4              brne L13
 00A6 80912300          lds R24,_RxBuf+1
 00AA 8D30              cpi R24,13
 00AC 59F4              brne L13
 00AE                   .dbline 53
 00AE           ;     {
 00AE                   .dbline 54
 00AE           ;         NoCarrierFlag = 1;                               // 置电话呼入标志  NO CARRIER
 00AE 81E0              ldi R24,1
 00B0 80931100          sts _NoCarrierFlag,R24
 00B4                   .dbline 55
 00B4           ;           RxIndex = 0;
 00B4 2224              clr R2
 00B6 20922100          sts _RxIndex,R2
 00BA                   .dbline 56
 00BA           ;               RxStatus = 1;
 00BA 80930D00          sts _RxStatus,R24
 00BE                   .dbline 57
 00BE           ;               OkFlag = 1;
 00BE 80930F00          sts _OkFlag,R24
 00C2                   .dbline 58
 00C2           ;               return;
 00C2 25C0              rjmp L1
 00C4           L13:
 00C4                   .dbline 60
 00C4           ;     }
 00C4           ;     else if((RxBuf[0] == 0x34) && (RxBuf[1] == 0x0D))  // 收到来电信号,来电标志置位
 00C4 80912200          lds R24,_RxBuf
 00C8 8433              cpi R24,52
 00CA 79F4              brne L16
 00CC 80912300          lds R24,_RxBuf+1
 00D0 8D30              cpi R24,13
 00D2 59F4              brne L16
 00D4                   .dbline 61
 00D4           ;     {
 00D4                   .dbline 62
 00D4           ;           RxIndex = 0;
 00D4 2224              clr R2
 00D6 20922100          sts _RxIndex,R2
 00DA                   .dbline 63
 00DA           ;               RxStatus = 1;
 00DA 81E0              ldi R24,1
 00DC 80930D00          sts _RxStatus,R24
 00E0                   .dbline 64
 00E0           ;               OkFlag = 1;
 00E0 80930F00          sts _OkFlag,R24
 00E4                   .dbline 65
 00E4           ;               error = 1;
 00E4 80931600          sts _error,R24
 00E8                   .dbline 66
 00E8           ;               return; 
 00E8 12C0              rjmp L1
 00EA           L16:
 00EA                   .dbline 69
 00EA           ;       }
 00EA           ;       else 
 00EA           ;     {
 00EA                   .dbline 71
 00EA           ;     
 00EA           ;     RxBuf[RxIndex++] = UDR;                 // 继续接收数据放入接收缓冲
 00EA 20902100          lds R2,_RxIndex
 00EE 3324              clr R3
 00F0 822D              mov R24,R2
 00F2 8F5F              subi R24,255    ; addi 1
 00F4 80932100          sts _RxIndex,R24
 00F8 80E0              ldi R24,<_RxBuf
 00FA 90E0              ldi R25,>_RxBuf
 00FC E22D              mov R30,R2
 00FE FF27              clr R31
 0100 E80F              add R30,R24
 0102 F91F              adc R31,R25
 0104 2CB0              in R2,0xc
 0106 2082              std z+0,R2
 0108                   .dbline 72
 0108           ;       RxStatus = 0;                         // 串口接收中
 0108 2224              clr R2
 010A 20920D00          sts _RxStatus,R2
 010E                   .dbline 74
 010E           ; //    return;                                                       // 结束接收,直接跳出
 010E           ;       }
 010E                   .dbline -2
 010E           L1:
 010E 2990              ld R2,y+
 0110 2FBE              out 0x3f,R2
 0112 F991              ld R31,y+
 0114 E991              ld R30,y+
 0116 9991              ld R25,y+
 0118 8991              ld R24,y+
 011A 0991              ld R16,y+
 011C 3990              ld R3,y+
 011E 2990              ld R2,y+
 0120                   .dbline 0 ; func end
 0120 1895              reti
 0122                   .dbsym r j 16 c
 0122                   .dbsym r i 16 c
 0122                   .dbend
                        .area vector(rom, abs)
                        .org 26
 001A 91C0              rjmp _uart0_tx_isr
                        .area text(rom, con, rel)
 0122                   .dbfile D:\MyProject\SMS-MC55\Code\窃听器delay\main.c
 0122                   .dbfunc e uart0_tx_isr _uart0_tx_isr fV
                        .even
 0122           _uart0_tx_isr::
 0122 2A92              st -y,R2
 0124 8A93              st -y,R24
 0126 9A93              st -y,R25
 0128 EA93              st -y,R30
 012A FA93              st -y,R31
 012C 2FB6              in R2,0x3f
 012E 2A92              st -y,R2
 0130                   .dbline -1
 0130                   .dbline 80
 0130           ; }
 0130           ; 
 0130           ; ////////////////////////////////////////////////////////////////////////////////
 0130           ; #pragma interrupt_handler uart0_tx_isr:14
 0130           ; void uart0_tx_isr(void)
 0130           ; {
 0130                   .dbline 82
 0130           ;     
 0130           ;     if(!TxStatus)                                   // 本帧数据未发完,则继续发送  
 0130 20900E00          lds R2,_TxStatus
 0134 2220              tst R2
 0136 49F4              brne L20
 0138                   .dbline 83
 0138           ;       {
 0138                   .dbline 85
 0138           ;           //while ( !(UCSRA & (1<<UDRE)) );             // 等待UDR空
 0138           ;           UDR = TxBuf[TxIndex];               
 0138 80E0              ldi R24,<_TxBuf
 013A 90E0              ldi R25,>_TxBuf
 013C E0910000          lds R30,_TxIndex
 0140 FF27              clr R31
 0142 E80F              add R30,R24
 0144 F91F              adc R31,R25
 0146 2080              ldd R2,z+0
 0148 2CB8              out 0xc,R2
 014A                   .dbline 86
 014A           ;       }
 014A           L20:
 014A                   .dbline 87
 014A           ;       if((TxBuf[TxIndex] == 0x0D) || (TxBuf[TxIndex] == 0x1A))  // 本帧数据发送结束
 014A 80E0              ldi R24,<_TxBuf
 014C 90E0              ldi R25,>_TxBuf
 014E E0910000          lds R30,_TxIndex
 0152 FF27              clr R31
 0154 E80F              add R30,R24
 0156 F91F              adc R31,R25
 0158 8081              ldd R24,z+0
 015A 8D30              cpi R24,13
 015C 51F0              breq L24
 015E 80E0              ldi R24,<_TxBuf
 0160 90E0              ldi R25,>_TxBuf
 0162 E0910000          lds R30,_TxIndex
 0166 FF27              clr R31
 0168 E80F              add R30,R24
 016A F91F              adc R31,R25
 016C 8081              ldd R24,z+0
 016E 8A31              cpi R24,26
 0170 41F4              brne L22
 0172           L24:
 0172                   .dbline 88
 0172           ;       {
 0172                   .dbline 89
 0172           ;               TxStatus = 1;                          // 发送完成状态标志置位
 0172 81E0              ldi R24,1
 0174 80930E00          sts _TxStatus,R24
 0178                   .dbline 90
 0178           ;               TxIndex = 0;                           // 发送缓冲区指针归零
 0178 2224              clr R2
 017A 20920000          sts _TxIndex,R2
 017E                   .dbline 91
 017E           ;               UCSRB &= ~((1<<TXCIE));//|(1<<TXEN));  // 关发送中断
 017E 5698              cbi 0xa,6
 0180                   .dbline 92
 0180           ;               return;
 0180 05C0              rjmp L19
 0182           L22:
 0182                   .dbline 94
 0182           ;       }
 0182           ;       TxIndex++;                              
 0182 80910000          lds R24,_TxIndex
 0186 8F5F              subi R24,255    ; addi 1
 0188 80930000          sts _TxIndex,R24
 018C                   .dbline -2
 018C           L19:
 018C 2990              ld R2,y+
 018E 2FBE              out 0x3f,R2
 0190 F991              ld R31,y+
 0192 E991              ld R30,y+
 0194 9991              ld R25,y+
 0196 8991              ld R24,y+
 0198 2990              ld R2,y+
 019A                   .dbline 0 ; func end
 019A 1895              reti
 019C                   .dbend
 019C                   .dbfunc e CheckRx _CheckRx fc
 019C           ;              j -> R18
 019C           ;              i -> R16
                        .even
 019C           _CheckRx::
 019C                   .dbline -1
 019C                   .dbline 97
 019C           ; }
 019C           ; unsigned char CheckRx(void)
 019C           ; {
 019C                   .dbline 99
 019C           ;     unsigned char i,j;
 019C           ;       i = RxIndex;
 019C 00912100          lds R16,_RxIndex
 01A0                   .dbline 100
 01A0           ;       j = RxIndex - 1;
 01A0 20912100          lds R18,_RxIndex
 01A4 2150              subi R18,1
 01A6                   .dbline 101
 01A6           ;     if(( RxBuf[j] == 0x30) && (RxBuf[i] == 0x0D))
 01A6 80E0              ldi R24,<_RxBuf
 01A8 90E0              ldi R25,>_RxBuf
 01AA E22F              mov R30,R18
 01AC FF27              clr R31
 01AE E80F              add R30,R24
 01B0 F91F              adc R31,R25
 01B2 8081              ldd R24,z+0
 01B4 8033              cpi R24,48
 01B6 71F4              brne L26
 01B8 80E0              ldi R24,<_RxBuf
 01BA 90E0              ldi R25,>_RxBuf
 01BC E02F              mov R30,R16
 01BE FF27              clr R31
 01C0 E80F              add R30,R24
 01C2 F91F              adc R31,R25
 01C4 8081              ldd R24,z+0
 01C6 8D30              cpi R24,13
 01C8 29F4              brne L26
 01CA                   .dbline 102
 01CA           ;       {
 01CA                   .dbline 103
 01CA           ;           RxIndex = 0;
 01CA 2224              clr R2
 01CC 20922100          sts _RxIndex,R2
 01D0                   .dbline 104
 01D0           ;               return (1);
 01D0 01E0              ldi R16,1
 01D2 01C0              rjmp L25
 01D4           L26:
 01D4                   .dbline 107
 01D4           ;       }
 01D4           ;       else
 01D4           ;       {
 01D4                   .dbline 108
 01D4           ;           return (0);
 01D4 0027              clr R16
 01D6                   .dbline -2
 01D6           L25:
 01D6                   .dbline 0 ; func end
 01D6 0895              ret
 01D8                   .dbsym r j 18 c
 01D8                   .dbsym r i 16 c
 01D8                   .dbend
 01D8                   .dbfunc e ClearRxBuf _ClearRxBuf fV
 01D8           ;              i -> R16
                        .even
 01D8           _ClearRxBuf::
 01D8                   .dbline -1
 01D8                   .dbline 115
 01D8           ;       }
 01D8           ; }
 01D8           ; /*-----------------------------------------------------------------------*/
 01D8           ; ///////////////////////////  清除接收缓冲  ////////////////////////////////
 01D8           ; /*-----------------------------------------------------------------------*/
 01D8           ; void ClearRxBuf(void)
 01D8           ; {
 01D8                   .dbline 117
 01D8           ;     unsigned char i;
 01D8           ;       for(i=0;i<128;i++)
 01D8 0027              clr R16
 01DA 09C0              rjmp L32
 01DC           L29:
 01DC                   .dbline 118
 01DC                   .dbline 119
 01DC 80E0              ldi R24,<_RxBuf
 01DE 90E0              ldi R25,>_RxBuf
 01E0 E02F              mov R30,R16
 01E2 FF27              clr R31
 01E4 E80F              add R30,R24
 01E6 F91F              adc R31,R25

⌨️ 快捷键说明

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