📄 uart_to_twi_m8.lis
字号:
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 + -