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

📄 communication.lis

📁 基于PIC单片机
💻 LIS
📖 第 1 页 / 共 5 页
字号:
 01CA           L74:
 01CA                   .dbline 156
 01CA           L75:
 01CA                   .dbline 156
 01CA           ;    for(aaa=1000;aaa>0;aaa--);//等待PB3引脚稳定 1000
 01CA 4150              subi R20,1
 01CC 5040              sbci R21,0
 01CE                   .dbline 156
 01CE 2224              clr R2
 01D0 3324              clr R3
 01D2 2416              cp R2,R20
 01D4 3506              cpc R3,R21
 01D6 CCF3              brlt L74
 01D8           L78:
 01D8                   .dbline 158
 01D8           L79:
 01D8                   .dbline 157
 01D8           ;    while(!(UCSR0A&(1<<UDRE0)))
 01D8 5D9B              sbis 0xb,5
 01DA FECF              rjmp L78
 01DC                   .dbline 159
 01DC           ;    ;
 01DC           ;    if(i==1)
 01DC 2130              cpi R18,1
 01DE 11F4              brne L81
 01E0                   .dbline 160
 01E0           ;       UCSR0B|=(1<<TXB80);  //发送地址
 01E0 509A              sbi 0xa,0
 01E2 01C0              xjmp L82
 01E4           L81:
 01E4                   .dbline 162
 01E4           ;    else
 01E4           ;    {
 01E4                   .dbline 163
 01E4           ;       UCSR0B&=~(1<<TXB80); //发送数据
 01E4 5098              cbi 0xa,0
 01E6                   .dbline 164
 01E6           ;    }
 01E6           L82:
 01E6                   .dbline 165
 01E6           ;    UDR0=data;
 01E6 0CB9              out 0xc,R16
 01E8           L83:
 01E8                   .dbline 167
 01E8           L84:
 01E8                   .dbline 166
 01E8           ;    while(!(UCSR0A&(1<<TXC0)))
 01E8 5E9B              sbis 0xb,6
 01EA FECF              rjmp L83
 01EC                   .dbline 168
 01EC           ;    ;
 01EC           ;    UCSR0A|=1<<TXC0;
 01EC 5E9A              sbi 0xb,6
 01EE                   .dbline 169
 01EE           ;    cs_485_receive();
 01EE 1A9A              sbi 0x3,2
 01F0                   .dbline -2
 01F0           L73:
 01F0 0E940000          xcall pop_gset1
 01F4                   .dbline 0 ; func end
 01F4 0895              ret
 01F6                   .dbsym r aaa 20 I
 01F6                   .dbsym r i 18 c
 01F6                   .dbsym r data 16 c
 01F6                   .dbend
 01F6                   .dbfunc e usart_transmits _usart_transmits fV
 01F6           ;            bbb -> R22,R23
 01F6           ;             pr -> R20,R21
 01F6           ;              p -> R18,R19
 01F6           ;              n -> R16
                        .even
 01F6           _usart_transmits::
 01F6 0E940000          xcall push_gset2
 01FA                   .dbline -1
 01FA                   .dbline 173
 01FA           ; } 
 01FA           ; //发送多个字节函数
 01FA           ; void usart_transmits(unsigned char n, unsigned char *p)
 01FA           ; {
 01FA                   .dbline 174
 01FA           ;     uchar *pr;int bbb=0;
 01FA 6627              clr R22
 01FC 7727              clr R23
 01FE                   .dbline 175
 01FE           ;     cs_485_send(); 
 01FE 83B1              in R24,0x3
 0200 8B7F              andi R24,251
 0202 83B9              out 0x3,R24
 0204                   .dbline 176
 0204 68EE              ldi R22,1000
 0206 73E0              ldi R23,3
 0208           L87:
 0208                   .dbline 176
 0208           L88:
 0208                   .dbline 176
 0208           ;     for(bbb=1000;bbb>0;bbb--);//等待PB3引脚稳定 
 0208 6150              subi R22,1
 020A 7040              sbci R23,0
 020C                   .dbline 176
 020C 2224              clr R2
 020E 3324              clr R3
 0210 2616              cp R2,R22
 0212 3706              cpc R3,R23
 0214 CCF3              brlt L87
 0216                   .dbline 177
 0216           ;     for(pr=p;pr<(p+n);pr++)
 0216 A901              movw R20,R18
 0218 07C0              xjmp L94
 021A           X0:
 021A                   .dbline 178
 021A           ;     {
 021A           L95:
 021A                   .dbline 180
 021A           L96:
 021A                   .dbline 179
 021A 5D9B              sbis 0xb,5
 021C FECF              rjmp L95
 021E                   .dbline 181
 021E FA01              movw R30,R20
 0220 2080              ldd R2,z+0
 0222 2CB8              out 0xc,R2
 0224                   .dbline 182
 0224           L92:
 0224                   .dbline 177
 0224 4F5F              subi R20,255  ; offset = 1
 0226 5F4F              sbci R21,255
 0228           L94:
 0228                   .dbline 177
 0228 202E              mov R2,R16
 022A 3324              clr R3
 022C 220E              add R2,R18
 022E 331E              adc R3,R19
 0230 4215              cp R20,R2
 0232 5305              cpc R21,R3
 0234 90F3              brlo L96
 0236           L98:
 0236                   .dbline 184
 0236           L99:
 0236                   .dbline 183
 0236           ;         while(!(UCSR0A&(1<<UDRE0)))
 0236           ;           ;
 0236           ;           UDR0= *pr;
 0236           ;     }
 0236           ;     while(!(UCSR0A&(1<<TXC0))) 
 0236 5E9B              sbis 0xb,6
 0238 FECF              rjmp L98
 023A                   .dbline 185
 023A           ;     ;
 023A           ;     UCSR0A|=1<<TXC0;
 023A 5E9A              sbi 0xb,6
 023C                   .dbline 186
 023C           ;     cs_485_receive(); 
 023C 1A9A              sbi 0x3,2
 023E                   .dbline -2
 023E           L86:
 023E 0E940000          xcall pop_gset2
 0242                   .dbline 0 ; func end
 0242 0895              ret
 0244                   .dbsym r bbb 22 I
 0244                   .dbsym r pr 20 pc
 0244                   .dbsym r p 18 pc
 0244                   .dbsym r n 16 c
 0244                   .dbend
 0244                   .dbfunc e Usart_Receive_Data _Usart_Receive_Data fc
 0244           ;              j -> R20
 0244           ;       tcounter -> R22,R23
 0244           ;          flag5 -> R10,R11
                        .even
 0244           _Usart_Receive_Data::
 0244 0E940000          xcall push_gset3
 0248                   .dbline -1
 0248                   .dbline 190
 0248           ; }
 0248           ; //8位数据单字节接收函数Usart_Receive_Data()
 0248           ; uchar Usart_Receive_Data(void)
 0248           ; {
 0248                   .dbline 191
 0248           ;      int flag5=0;uchar j=0;int tcounter=0;
 0248 AA24              clr R10
 024A BB24              clr R11
 024C                   .dbline 191
 024C 4427              clr R20
 024E                   .dbline 191
 024E 6627              clr R22
 0250 7727              clr R23
 0252 19C0              xjmp L103
 0254           L102:
 0254                   .dbline 193
 0254           ;      while(!(UCSR0A&(1<<RXC0)))
 0254           ;      {
 0254                   .dbline 194
 0254           ;           flag5++; 
 0254 C501              movw R24,R10
 0256 0196              adiw R24,1
 0258 5C01              movw R10,R24
 025A                   .dbline 196
 025A           ;               //wdr();
 025A           ;           if(flag5>5000)
 025A 88E8              ldi R24,5000
 025C 93E1              ldi R25,19
 025E 8A15              cp R24,R10
 0260 9B05              cpc R25,R11
 0262 34F4              brge L105
 0264                   .dbline 197
 0264           ;           {
 0264                   .dbline 198
 0264           ;                   wdr();
 0264 0E940000          xcall _wdr
 0268                   .dbline 199
 0268           ;                   flag5=0; 
 0268 AA24              clr R10
 026A BB24              clr R11
 026C                   .dbline 200
 026C           ;               tcounter++;
 026C 6F5F              subi R22,255  ; offset = 1
 026E 7F4F              sbci R23,255
 0270                   .dbline 201
 0270           ;           }    
 0270           L105:
 0270                   .dbline 202
 0270           ;               if(tcounter>2)       //原来是3
 0270 82E0              ldi R24,2
 0272 90E0              ldi R25,0
 0274 8617              cp R24,R22
 0276 9707              cpc R25,R23
 0278 34F4              brge L107
 027A                   .dbline 203
 027A           ;           {  
 027A                   .dbline 204
 027A           ;                tcounter=0;
 027A 6627              clr R22
 027C 7727              clr R23
 027E                   .dbline 205
 027E           ;                errorflag=1;    //最多等待50s还没有数据传上来说明节点断开
 027E 81E0              ldi R24,1
 0280 80930000          sts _errorflag,R24
 0284                   .dbline 206
 0284           ;                break;          //errorflag 为未接受到数据 标识
 0284 02C0              xjmp L104
 0286           L107:
 0286                   .dbline 208
 0286           L103:
 0286                   .dbline 192
 0286 5F9B              sbis 0xb,7
 0288 E5CF              rjmp L102
 028A           L104:
 028A                   .dbline 209
 028A           ;           }            
 028A           ;      }         
 028A           ;      j=UCSR0B;
 028A 4AB1              in R20,0xa
 028C                   .dbline 210
 028C           ;      return UDR0;  
 028C 0CB1              in R16,0xc
 028E                   .dbline -2
 028E           L101:
 028E 0E940000          xcall pop_gset3
 0292                   .dbline 0 ; func end
 0292 0895              ret
 0294                   .dbsym r j 20 c
 0294                   .dbsym r tcounter 22 I
 0294                   .dbsym r flag5 10 I
 0294                   .dbend
 0294                   .dbfunc e Usart2_Receive_Data _Usart2_Receive_Data fc
 0294           ;              j -> R20
 0294           ;       tcounter -> R22,R23
 0294           ;          flag5 -> R10,R11
                        .even
 0294           _Usart2_Receive_Data::
 0294 0E940000          xcall push_gset3
 0298                   .dbline -1
 0298                   .dbline 214
 0298           ; }   
 0298           ; //8位数据单字节接收函数Usart2_Receive_Data() 调零专用
 0298           ; uchar Usart2_Receive_Data(void)
 0298           ; {
 0298                   .dbline 215
 0298           ;      int flag5=0;uchar j=0;int tcounter=0;
 0298 AA24              clr R10
 029A BB24              clr R11
 029C                   .dbline 215
 029C 4427              clr R20
 029E                   .dbline 215
 029E 6627              clr R22
 02A0 7727              clr R23
 02A2 1BC0              xjmp L111
 02A4           L110:
 02A4                   .dbline 217
 02A4           ;      while(!(UCSR0A&(1<<RXC0)))
 02A4           ;      {
 02A4                   .dbline 218
 02A4           ;           flag5++; 
 02A4 C501              movw R24,R10
 02A6 0196              adiw R24,1
 02A8 5C01              movw R10,R24
 02AA                   .dbline 219
 02AA           ;           if(flag5>5000)
 02AA 88E8              ldi R24,5000
 02AC 93E1              ldi R25,19
 02AE 8A15              cp R24,R10
 02B0 9B05              cpc R25,R11
 02B2 34F4              brge L113
 02B4                   .dbline 220
 02B4           ;           {
 02B4                   .dbline 221
 02B4           ;                   wdr();
 02B4 0E940000          xcall _wdr
 02B8                   .dbline 222
 02B8           ;                   flag5=0; 
 02B8 AA24              clr R10
 02BA BB24              clr R11
 02BC                   .dbline 223
 02BC           ;               tcounter++;
 02BC 6F5F              subi R22,255  ; offset = 1
 02BE 7F4F              sbci R23,255
 02C0                   .dbline 224
 02C0           ;           }    
 02C0           L113:
 02C0                   .dbline 225
 02C0           ;               if(tcounter>500)        //
 02C0 84EF              ldi R24,500
 02C2 91E0              ldi R25,1
 02C4 8617              cp R24,R22

⌨️ 快捷键说明

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