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

📄 uart_to_twi_m8.lis

📁 AVR单片机的T_TO_TWI通讯方式
💻 LIS
📖 第 1 页 / 共 4 页
字号:
 01F4           _show_data::
 01F4 00D0              rcall push_gset2
 01F6 402F              mov R20,R16
 01F8                   .dbline -1
 01F8                   .dbline 188
 01F8           ; }
 01F8           ; /************************************************************************
 01F8           ; 通用的,,用来显示一个变量的值,,送到串口来
 01F8           ; *************************************************************************/
 01F8           ; void show_data(unsigned char dat)
 01F8           ; {
 01F8                   .dbline 191
 01F8           ;     unsigned char dat_buff;
 01F8           ;       
 01F8           ;     dat_buff = dat;
 01F8 642F              mov R22,R20
 01FA                   .dbline 192
 01FA           ;       dat >>= 4;
 01FA 842F              mov R24,R20
 01FC 8295              swap R24
 01FE 8F70              andi R24,#0x0F
 0200 482F              mov R20,R24
 0202                   .dbline 193
 0202           ;       dat = dat & 0x0f;
 0202 4F70              andi R20,15
 0204                   .dbline 194
 0204           ;       dat = general_hex_to_ascii( dat );
 0204 042F              mov R16,R20
 0206 ECDF              rcall _general_hex_to_ascii
 0208                   .dbline 195
 0208           ;       USART_TransmitByte(dat);
 0208 00D0              rcall _USART_TransmitByte
 020A                   .dbline 196
 020A           ;       dat = dat_buff;
 020A 462F              mov R20,R22
 020C                   .dbline 197
 020C           ;       dat = dat & 0x0f;
 020C 4F70              andi R20,15
 020E                   .dbline 198
 020E           ;       dat = general_hex_to_ascii( dat );
 020E 042F              mov R16,R20
 0210 E7DF              rcall _general_hex_to_ascii
 0212 402F              mov R20,R16
 0214                   .dbline 199
 0214           ;       USART_TransmitByte(dat);
 0214 00D0              rcall _USART_TransmitByte
 0216                   .dbline -2
 0216           L53:
 0216 00D0              rcall pop_gset2
 0218                   .dbline 0 ; func end
 0218 0895              ret
 021A                   .dbsym r dat_buff 22 c
 021A                   .dbsym r dat 20 c
 021A                   .dbend
 021A                   .dbfunc e twi_transmint _twi_transmint fV
 021A           ;      dat1_buff -> <dead>
 021A           ;           dat1 -> R20
 021A           ;           dat2 -> R20
                        .even
 021A           _twi_transmint::
 021A 00D0              rcall push_gset1
 021C 2197              sbiw R28,1
 021E                   .dbline -1
 021E                   .dbline 203
 021E           ; }
 021E           ; //>>>>>>>>>>>>>>>>做包
 021E           ; void twi_transmint(void)
 021E           ;  {
 021E                   .dbline 207
 021E           ;     unsigned char dat1,dat2;
 021E           ;       unsigned char dat1_buff;
 021E           ;   
 021E           ;     if(Twi_Hex_Data_Flag == true)
 021E 80910400          lds R24,_Twi_Hex_Data_Flag
 0222 8130              cpi R24,1
 0224 09F0              breq X3
 0226 3FC0              rjmp L55
 0228           X3:
 0228                   .dbline 208
 0228           ;     {
 0228                   .dbline 210
 0228           ;           
 0228           ;           Twi_Hex_Data_Flag = false;
 0228 2224              clr R2
 022A 20920400          sts _Twi_Hex_Data_Flag,R2
 022E                   .dbline 211
 022E           ;               if(Twi_Write_Flag == true)
 022E 80910700          lds R24,_Twi_Write_Flag
 0232 8130              cpi R24,1
 0234 D1F4              brne L57
 0236                   .dbline 212
 0236           ;               {
 0236                   .dbline 213
 0236           ;                   Twi_Write_Flag = false;
 0236 20920700          sts _Twi_Write_Flag,R2
 023A                   .dbline 214
 023A           ;               dat1 = twi_write_byte(Twi_Hex_Data[0],Twi_Hex_Data[1],Twi_Hex_Data[2]);
 023A 20901000          lds R2,_Twi_Hex_Data+2
 023E 2882              std y+0,R2
 0240 20910F00          lds R18,_Twi_Hex_Data+1
 0244 00910E00          lds R16,_Twi_Hex_Data
 0248 00D0              rcall _twi_write_byte
 024A 402F              mov R20,R16
 024C                   .dbline 222
 024C           ;               
 024C           ;                   #ifdef test
 024C           ;                       //显示TWI状态字
 024C           ;                       show_data(dat1);
 024C           ;                       USART_Transmit("this is write!");
 024C           ;                       #endif
 024C           ;               
 024C           ;                       if(Write_Succsee_Flag == true)
 024C 80910000          lds R24,_Write_Succsee_Flag
 0250 8130              cpi R24,1
 0252 39F4              brne L61
 0254                   .dbline 223
 0254           ;                       {
 0254                   .dbline 224
 0254           ;                               Write_Succsee_Flag = false;
 0254 2224              clr R2
 0256 20920000          sts _Write_Succsee_Flag,R2
 025A                   .dbline 226
 025A           ;                               
 025A           ;                               USART_Transmit(UART_TX_buff);//写成功
 025A 00E0              ldi R16,<_UART_TX_buff
 025C 10E0              ldi R17,>_UART_TX_buff
 025E 00D0              rcall _USART_Transmit
 0260                   .dbline 230
 0260           ;                               #ifdef test
 0260           ;                               USART_Transmit("write successfully!");
 0260           ;                               #endif
 0260           ;                       }
 0260 03C0              rjmp L62
 0262           L61:
 0262                   .dbline 232
 0262           ;                       else
 0262           ;                       {
 0262                   .dbline 233
 0262           ;                               USART_Transmit(Write_Error);//写不成功
 0262 00E0              ldi R16,<_Write_Error
 0264 10E0              ldi R17,>_Write_Error
 0266 00D0              rcall _USART_Transmit
 0268                   .dbline 237
 0268           ;                               #ifdef test
 0268           ;                           USART_Transmit("write error!");
 0268           ;                               #endif
 0268           ;                       }
 0268           L62:
 0268                   .dbline 238
 0268           ;                       WDR();
 0268 A895              wdr
 026A                   .dbline 239
 026A           ;               }
 026A           L57:
 026A                   .dbline 240
 026A           ;               if(Twi_Read_Flag == true)
 026A 80910600          lds R24,_Twi_Read_Flag
 026E 8130              cpi R24,1
 0270 D1F4              brne L63
 0272                   .dbline 241
 0272           ;         {
 0272                   .dbline 242
 0272           ;                       Twi_Read_Flag = false;
 0272 2224              clr R2
 0274 20920600          sts _Twi_Read_Flag,R2
 0278                   .dbline 243
 0278           ;                       dat2 = twi_read_byte(Twi_Hex_Data[0],Twi_Hex_Data[1]);
 0278 20910F00          lds R18,_Twi_Hex_Data+1
 027C 00910E00          lds R16,_Twi_Hex_Data
 0280 00D0              rcall _twi_read_byte
 0282 402F              mov R20,R16
 0284                   .dbline 249
 0284           ;                       #ifdef test
 0284           ;                       show_data(dat2);
 0284           ;                       USART_Transmit("this is read!");
 0284           ;                       #endif
 0284           ;                       
 0284           ;                       if(Read_Succsee_Flag  != true)
 0284 80910000          lds R24,_Read_Succsee_Flag
 0288 8130              cpi R24,1
 028A 21F0              breq L66
 028C                   .dbline 250
 028C           ;                       {
 028C                   .dbline 251
 028C           ;                               USART_Transmit(Read_Error);//读失败
 028C 00E0              ldi R16,<_Read_Error
 028E 10E0              ldi R17,>_Read_Error
 0290 00D0              rcall _USART_Transmit
 0292                   .dbline 255
 0292           ;                               #ifdef test
 0292           ;                               USART_Transmit("read error!");
 0292           ;                               #endif
 0292           ;                       }
 0292 08C0              rjmp L67
 0294           L66:
 0294                   .dbline 257
 0294           ;                       else
 0294           ;                       {
 0294                   .dbline 258
 0294           ;                               Read_Succsee_Flag  = false;
 0294 2224              clr R2
 0296 20920000          sts _Read_Succsee_Flag,R2
 029A                   .dbline 260
 029A           ;                               
 029A           ;                               hex_to_ascii(dat2);//读成功 且读的数在dat2中                            
 029A 042F              mov R16,R20
 029C 82DF              rcall _hex_to_ascii
 029E                   .dbline 261
 029E           ;                               USART_Transmit(UART_TX_buff);
 029E 00E0              ldi R16,<_UART_TX_buff
 02A0 10E0              ldi R17,>_UART_TX_buff
 02A2 00D0              rcall _USART_Transmit
 02A4                   .dbline 265
 02A4           ;                               #ifdef test
 02A4           ;                               USART_Transmit("read successfully!");
 02A4           ;                               #endif
 02A4           ;                       }
 02A4           L67:
 02A4                   .dbline 266
 02A4           ;                       WDR();
 02A4 A895              wdr
 02A6                   .dbline 267
 02A6           ;               }
 02A6           L63:
 02A6                   .dbline 268
 02A6           L55:
 02A6                   .dbline -2
 02A6           L54:
 02A6 2196              adiw R28,1
 02A8 00D0              rcall pop_gset1
 02AA                   .dbline 0 ; func end
 02AA 0895              ret
 02AC                   .dbsym l dat1_buff 2 c
 02AC                   .dbsym r dat1 20 c
 02AC                   .dbsym r dat2 20 c
 02AC                   .dbend
 02AC                   .dbfunc e init_data _init_data fV
                        .even
 02AC           _init_data::
 02AC                   .dbline -1
 02AC                   .dbline 272
 02AC           ;       }
 02AC           ;  }
 02AC           ; 
 02AC           ; void init_data(void)
 02AC           ; {
 02AC                   .dbline 273
 02AC           ;    Twi_Write_Flag     = false;
 02AC 2224              clr R2
 02AE 20920700          sts _Twi_Write_Flag,R2
 02B2                   .dbline 274
 02B2           ;    Twi_Read_Flag      = false;
 02B2 20920600          sts _Twi_Read_Flag,R2
 02B6                   .dbline 275
 02B6           ;    Twi_Hex_Data_Flag  = false;      
 02B6 20920400          sts _Twi_Hex_Data_Flag,R2
 02BA                   .dbline 276
 02BA           ;    Twi_ASCI_Data_Flag = false;
 02BA 20920500          sts _Twi_ASCI_Data_Flag,R2
 02BE                   .dbline 277
 02BE           ;    Slave_Led_Status   = LED_OFF;
 02BE 20920300          sts _Slave_Led_Status,R2
 02C2                   .dbline 278
 02C2           ;    Main_Led_Status    = LED_OFF;
 02C2 20920200          sts _Main_Led_Status,R2
 02C6                   .dbline 279
 02C6           ;    Cur_Main_Led_Status= LED_OFF;
 02C6 20920100          sts _Cur_Main_Led_Status,R2
 02CA                   .dbline 280
 02CA           ;    Count_10ms         = 0;
 02CA 20920000          sts _Count_10ms,R2
 02CE                   .dbline 281
 02CE           ;    WDR();
 02CE A895              wdr
 02D0                   .dbline -2
 02D0           L68:
 02D0                   .dbline 0 ; func end
 02D0 0895              ret
 02D2                   .dbend
 02D2                   .dbfunc e port_init _port_init fV
                        .even
 02D2           _port_init::
 02D2                   .dbline -1
 02D2                   .dbline 284
 02D2           ; }
 02D2           ; void port_init(void)
 02D2           ; {
 02D2                   .dbline 285
 02D2           ;  PORTB = 0x3F;
 02D2 8FE3              ldi R24,63
 02D4 88BB              out 0x18,R24
 02D6                   .dbline 286
 02D6           ;  DDRB  = 0x00;
 02D6 2224              clr R2
 02D8 27BA              out 0x17,R2
 02DA                   .dbline 287
 02DA           ;  PORTC = 0x4F; //m103 output only
 02DA 8FE4              ldi R24,79
 02DC 85BB              out 0x15,R24
 02DE                   .dbline 288
 02DE           ;  DDRC  = 0x00;
 02DE 24BA              out 0x14,R2
 02E0                   .dbline 289
 02E0           ;  PORTD = 0xFC;
 02E0 8CEF              ldi R24,252
 02E2 82BB              out 0x12,R24
 02E4                   .dbline 290
 02E4           ;  DDRD  = 0x00;
 02E4 21BA              out 0x11,R2

⌨️ 快捷键说明

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