📄 ds18b20.lis
字号:
0342 0ED0 rcall _delay_10us
0344 .dbline 231
0344 ;
0344 ; }
0344 L48:
0344 .dbline 217
0344 6395 inc R22
0346 L50:
0346 .dbline 217
0346 6830 cpi R22,8
0348 50F3 brlo L47
034A X22:
034A .dbline 232
034A ; DRC(1);
034A 389A sbi 0x7,0
034C .dbline 233
034C ; DQ(1);
034C 409A sbi 0x8,0
034E .dbline 235
034E ;
034E ; if (flag & 0x80)
034E 20900D00 lds R2,_flag
0352 27FE sbrs R2,7
0354 01C0 rjmp L53
0356 X23:
0356 .dbline 236
0356 ; {SEI(); /*恢复中断状态*/
0356 .dbline 236
0356 7894 sei
0358 .dbline 237
0358 ; }
0358 L53:
0358 .dbline 238
0358 ; return(data);
0358 042F mov R16,R20
035A .dbline -2
035A L46:
035A .dbline 0 ; func end
035A 6991 ld R22,y+
035C 4991 ld R20,y+
035E 0895 ret
0360 .dbsym r data 20 c
0360 .dbsym r i 22 c
0360 .dbend
0360 .dbfunc e delay_10us _delay_10us fV
0360 ; i -> R10
0360 ; j -> R20
0360 ; n -> R16
.even
0360 _delay_10us::
0360 AA92 st -y,R10
0362 4A93 st -y,R20
0364 .dbline -1
0364 .dbline 245
0364 ; }
0364 ; /********************************************************/
0364 ;
0364 ; /* n*10us
0364 ; 通过AVR Studio仿真*/
0364 ; void delay_10us(uchar n)
0364 ; {uchar i,j;
0364 .dbline 246
0364 ; for(i=0;i<n;i++)
0364 AA24 clr R10
0366 06C0 rjmp L59
0368 L56:
0368 .dbline 247
0368 ; for(j=0;j<38;j++);
0368 4427 clr R20
036A 01C0 rjmp L63
036C L60:
036C .dbline 247
036C L61:
036C .dbline 247
036C 4395 inc R20
036E L63:
036E .dbline 247
036E 4632 cpi R20,38
0370 E8F3 brlo L60
0372 X24:
0372 L57:
0372 .dbline 246
0372 A394 inc R10
0374 L59:
0374 .dbline 246
0374 A016 cp R10,R16
0376 C0F3 brlo L56
0378 X25:
0378 .dbline -2
0378 L55:
0378 .dbline 0 ; func end
0378 4991 ld R20,y+
037A A990 ld R10,y+
037C 0895 ret
037E .dbsym r i 10 c
037E .dbsym r j 20 c
037E .dbsym r n 16 c
037E .dbend
037E .dbfunc e delay_1us _delay_1us fV
037E ; i -> R16
.even
037E _delay_1us::
037E .dbline -1
037E .dbline 251
037E ; }
037E ; /* 1.75us */
037E ; void delay_1us(void)
037E ; {uchar i;
037E .dbline 252
037E ; for(i=0;i<4;i++);
037E 0027 clr R16
0380 01C0 rjmp L68
0382 L65:
0382 .dbline 252
0382 L66:
0382 .dbline 252
0382 0395 inc R16
0384 L68:
0384 .dbline 252
0384 0430 cpi R16,4
0386 E8F3 brlo L65
0388 X26:
0388 .dbline -2
0388 L64:
0388 .dbline 0 ; func end
0388 0895 ret
038A .dbsym r i 16 c
038A .dbend
038A .dbfunc e UartRece_int _UartRece_int fV
.even
038A _UartRece_int::
038A 2A92 st -y,R2
038C 3A92 st -y,R3
038E 8A93 st -y,R24
0390 9A93 st -y,R25
0392 EA93 st -y,R30
0394 FA93 st -y,R31
0396 2FB6 IN R2,63
0398 2A92 st -y,R2
039A .dbline -1
039A .dbline 256
039A ; }
039A ; /********************************通信部分*************************/
039A ; void UartRece_int(void)
039A ; {if(count3<2)Rece[count3++]=UDR0;
039A .dbline 256
039A 80910C00 lds R24,_count3
039E 8230 cpi R24,2
03A0 78F4 brsh L70
03A2 X27:
03A2 .dbline 256
03A2 282E mov R2,R24
03A4 3324 clr R3
03A6 8F5F subi R24,255 ; addi 1
03A8 80930C00 sts _count3,R24
03AC 80E0 ldi R24,<_Rece
03AE 90E0 ldi R25,>_Rece
03B0 E22D mov R30,R2
03B2 FF27 clr R31
03B4 E80F add R30,R24
03B6 F91F adc R31,R25
03B8 2090C600 lds R2,198
03BC 2082 std z+0,R2
03BE 06C0 rjmp L71
03C0 L70:
03C0 .dbline 258
03C0 ; else
03C0 ; {count3=0;
03C0 .dbline 258
03C0 2224 clr R2
03C2 20920C00 sts _count3,R2
03C6 .dbline 259
03C6 ; flag1=1;
03C6 81E0 ldi R24,1
03C8 80930D00 sts _flag1,R24
03CC .dbline 260
03CC ; }
03CC L71:
03CC .dbline -2
03CC L69:
03CC .dbline 0 ; func end
03CC 2990 ld R2,y+
03CE 2FBE OUT 63,R2
03D0 F991 ld R31,y+
03D2 E991 ld R30,y+
03D4 9991 ld R25,y+
03D6 8991 ld R24,y+
03D8 3990 ld R3,y+
03DA 2990 ld R2,y+
03DC 1895 reti
03DE .dbend
03DE .dbfunc e UartInit _UartInit fV
.even
03DE _UartInit::
03DE .dbline -1
03DE .dbline 264
03DE ; }
03DE ; /**************串口初始化函数*****************/
03DE ; void UartInit(void)
03DE ; {
03DE .dbline 266
03DE ; /* 设置波特率*/
03DE ; UBRR0H = 0x00; /*9600 U2X0=0 103*/
03DE 2224 clr R2
03E0 2092C500 sts 197,R2
03E4 .dbline 267
03E4 ; UBRR0L = 0x67;
03E4 87E6 ldi R24,103
03E6 8093C400 sts 196,R24
03EA .dbline 269
03EA ; /* 接收中断使能 接收器与发送器使能*/
03EA ; UCSR0B = (1<<RXCIE0)|(1<<RXEN0)|(1<<TXEN0);
03EA 88E9 ldi R24,152
03EC 8093C100 sts 193,R24
03F0 .dbline 271
03F0 ; /* 设置帧格式: 8 个数据位, 1 个停止位 */
03F0 ; UCSR0C = (3<<UCSZ00);
03F0 86E0 ldi R24,6
03F2 8093C200 sts 194,R24
03F6 .dbline -2
03F6 L72:
03F6 .dbline 0 ; func end
03F6 0895 ret
03F8 .dbend
03F8 .dbfunc e UartSend _UartSend fV
03F8 ; i -> R10
03F8 ; length -> R18
03F8 ; a -> R16,R17
.even
03F8 _UartSend::
03F8 AA92 st -y,R10
03FA .dbline -1
03FA .dbline 275
03FA ; }
03FA ; /****************串行发送函数****************/
03FA ; void UartSend(uchar a[],uchar length)
03FA ; {uchar i;
03FA .dbline 276
03FA ; for(i=0;i<length;i++)
03FA AA24 clr R10
03FC 0CC0 rjmp L77
03FE L78:
03FE .dbline 278
03FE ; {/* 等待发送缓冲器为空*/
03FE ; while ( !( UCSR0A & (1<<UDRE0)) );
03FE L79:
03FE .dbline 278
03FE 2090C000 lds R2,192
0402 25FE sbrs R2,5
0404 FCCF rjmp L78
0406 X28:
0406 .dbline 280
0406 ; /* 将数据放入缓冲器,发送数据*/
0406 ; UDR0=a[i];
0406 EA2D mov R30,R10
0408 FF27 clr R31
040A E00F add R30,R16
040C F11F adc R31,R17
040E 2080 ldd R2,z+0
0410 2092C600 sts 198,R2
0414 .dbline 281
0414 ; }
0414 L75:
0414 .dbline 276
0414 A394 inc R10
0416 L77:
0416 .dbline 276
0416 A216 cp R10,R18
0418 90F3 brlo L79
041A X29:
041A .dbline -2
041A L73:
041A .dbline 0 ; func end
041A A990 ld R10,y+
041C 0895 ret
041E .dbsym r i 10 c
041E .dbsym r length 18 c
041E .dbsym r a 16 pc
041E .dbend
.area bss(ram, con, rel)
0000 .dbfile E:\VB01D6~1\ComTest\DS18b20\ds18b20.c
0000 _Send::
0000 .blkb 3
0003 .dbsym e Send _Send A[3:3]c
0003 _Rece::
0003 .blkb 2
0005 .dbsym e Rece _Rece A[2:2]c
0005 _timeb6::
0005 .blkb 1
0006 .dbsym e timeb6 _timeb6 c
0006 _timeb5::
0006 .blkb 1
0007 .dbsym e timeb5 _timeb5 c
0007 _timeb4::
0007 .blkb 1
0008 .dbsym e timeb4 _timeb4 c
0008 _timeb3::
0008 .blkb 1
0009 .dbsym e timeb3 _timeb3 c
0009 _timeb2::
0009 .blkb 1
000A .dbsym e timeb2 _timeb2 c
000A _timeb1::
000A .blkb 1
000B .dbsym e timeb1 _timeb1 c
000B _time2::
000B .blkb 1
000C .dbsym e time2 _time2 c
000C _time1::
000C .blkb 1
000D .dbsym e time1 _time1 c
000D _flag::
000D .blkb 1
000E .dbsym e flag _flag c
000E ; }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -