📄 ds1302_mega16.lis
字号:
031C 5527 clr R21
031E .dbline 71
031E ; Th=(uint8_t)temp_negative;
031E C42E mov R12,R20
0320 .dbline 72
0320 ; Temp_display(Tl,Th);
0320 2C2D mov R18,R12
0322 0A2D mov R16,R10
0324 1DDF xcall _Temp_display
0326 .dbline 73
0326 ; }
0326 L72:
0326 .dbline -2
0326 L70:
0326 .dbline 0 ; func end
0326 0C940000 xjmp pop_xgset30FC
032A .dbsym r tl_l 14 i
032A .dbsym r th_h 20 i
032A .dbsym r temp_negative 20 i
032A .dbsym r Tl 10 c
032A .dbsym r Th 12 c
032A .dbend
032A .dbfunc e Delay_us _Delay_us fV
032A ; us -> R16,R17
.even
032A _Delay_us::
032A .dbline -1
032A .dbline 83
032A ; }
032A ; /*************************************************
032A ; 函 数 名:Delay_us
032A ; 功 能:软件延时1.1us
032A ; 入口参数:us 延时时间
032A ; 出口参数:无
032A ; 修改时间:2007.02.16
032A ; *************************************************/
032A ; void Delay_us(uint16_t us)
032A ; {
032A 02C0 xjmp L75
032C L74:
032C .dbline 85
032C ; while(us>1)
032C ; {
032C .dbline 86
032C ; us--;
032C 0150 subi R16,1
032E 1040 sbci R17,0
0330 .dbline 87
0330 ; }
0330 L75:
0330 .dbline 84
0330 81E0 ldi R24,1
0332 90E0 ldi R25,0
0334 8017 cp R24,R16
0336 9107 cpc R25,R17
0338 C8F3 brlo L74
033A X14:
033A .dbline -2
033A L73:
033A .dbline 0 ; func end
033A 0895 ret
033C .dbsym r us 16 i
033C .dbend
033C .dbfunc e Init_18b20 _Init_18b20 fc
033C ; exist -> R20
.even
033C _Init_18b20::
033C 4A93 st -y,R20
033E .dbline -1
033E .dbline 97
033E ; }
033E ; /*************************************************
033E ; 函 数 名:Reset_18b20
033E ; 功 能:复位DS18B20
033E ; 入口参数:无
033E ; 出口参数:exist : exist=1,存在;exist=0,不存在
033E ; 修改日期:2007.02.16
033E ; *************************************************/
033E ; uint8_t Init_18b20(void)
033E ; {
033E .dbline 98
033E ; uint8_t exist=1;
033E 41E0 ldi R20,1
0340 .dbline 99
0340 ; Set_low(); //设置成输出模式
0340 .dbline 99
0340 8F9A sbi 0x11,7
0342 .dbline 99
0342 9798 cbi 0x12,7
0344 .dbline 99
0344 .dbline 100
0344 ; Delay_us(600); //复位低电平480us~960us
0344 08E5 ldi R16,600
0346 12E0 ldi R17,2
0348 F0DF xcall _Delay_us
034A .dbline 101
034A ; Set_high(); //拉高电平
034A .dbline 101
034A 8F9A sbi 0x11,7
034C .dbline 101
034C 979A sbi 0x12,7
034E .dbline 101
034E .dbline 102
034E ; Read(); //设置成输入模式
034E .dbline 102
034E 8F98 cbi 0x11,7
0350 .dbline 102
0350 .dbline 103
0350 ; Delay_us(100); //延时100us
0350 04E6 ldi R16,100
0352 10E0 ldi R17,0
0354 EADF xcall _Delay_us
0356 .dbline 104
0356 ; exist=~(DS18B20_PIN&DS18B20_IO); //读端口电平
0356 40B3 in R20,0x10
0358 4078 andi R20,128
035A 4095 com R20
035C .dbline 105
035C ; Delay_us(480); //延时480us
035C 00EE ldi R16,480
035E 11E0 ldi R17,1
0360 E4DF xcall _Delay_us
0362 .dbline 106
0362 ; DDRA|=0X10; //设置成输出模式
0362 D49A sbi 0x1a,4
0364 .dbline 107
0364 ; return (exist); //返回exist的值
0364 042F mov R16,R20
0366 .dbline -2
0366 L77:
0366 .dbline 0 ; func end
0366 4991 ld R20,y+
0368 0895 ret
036A .dbsym r exist 20 c
036A .dbend
036A .dbfunc e Read_1_byte _Read_1_byte fc
036A ; r_data -> R10
036A ; temp -> R22
036A ; i -> R20
.even
036A _Read_1_byte::
036A 0E940000 xcall push_xgsetF00C
036E .dbline -1
036E .dbline 117
036E ; }
036E ; /*************************************************
036E ; 函 数 名:Read_1_byte
036E ; 功 能:从DS18B20读取一个字节的数据
036E ; 入口参数:无
036E ; 出口参数:r_data
036E ; 修改日期:2007.02.16
036E ; *************************************************/
036E ; uint8_t Read_1_byte(void)
036E ; {
036E .dbline 118
036E ; uint8_t i,r_data=0x00,temp;
036E AA24 clr R10
0370 .dbline 119
0370 ; for(i=0;i<8;i++)
0370 4427 clr R20
0372 1FC0 xjmp L82
0374 L79:
0374 .dbline 120
0374 ; {
0374 .dbline 121
0374 ; Set_low();
0374 .dbline 121
0374 8F9A sbi 0x11,7
0376 .dbline 121
0376 9798 cbi 0x12,7
0378 .dbline 121
0378 .dbline 122
0378 ; Delay_us(3);
0378 03E0 ldi R16,3
037A 10E0 ldi R17,0
037C D6DF xcall _Delay_us
037E .dbline 123
037E ; Read();
037E .dbline 123
037E 8F98 cbi 0x11,7
0380 .dbline 123
0380 .dbline 124
0380 ; Delay_us(8);
0380 08E0 ldi R16,8
0382 10E0 ldi R17,0
0384 D2DF xcall _Delay_us
0386 .dbline 125
0386 ; temp=(DS18B20_PIN&DS18B20_IO);
0386 60B3 in R22,0x10
0388 6078 andi R22,128
038A .dbline 126
038A ; if(temp)
038A 31F0 breq L83
038C X15:
038C .dbline 127
038C ; {
038C .dbline 128
038C ; r_data|=(1<<i);
038C 01E0 ldi R16,1
038E 142F mov R17,R20
0390 0E940000 xcall lsl8
0394 A02A or R10,R16
0396 .dbline 129
0396 ; }
0396 07C0 xjmp L84
0398 L83:
0398 .dbline 131
0398 ; else
0398 ; {
0398 .dbline 132
0398 ; r_data&=~(1<<i);
0398 01E0 ldi R16,1
039A 142F mov R17,R20
039C 0E940000 xcall lsl8
03A0 202E mov R2,R16
03A2 2094 com R2
03A4 A220 and R10,R2
03A6 .dbline 133
03A6 ; }
03A6 L84:
03A6 .dbline 134
03A6 ; Delay_us(50);
03A6 02E3 ldi R16,50
03A8 10E0 ldi R17,0
03AA BFDF xcall _Delay_us
03AC .dbline 135
03AC ; Set_high();
03AC .dbline 135
03AC 8F9A sbi 0x11,7
03AE .dbline 135
03AE 979A sbi 0x12,7
03B0 .dbline 135
03B0 .dbline 136
03B0 ; }
03B0 L80:
03B0 .dbline 119
03B0 4395 inc R20
03B2 L82:
03B2 .dbline 119
03B2 4830 cpi R20,8
03B4 F8F2 brlo L79
03B6 X16:
03B6 .dbline 137
03B6 ; return (r_data);
03B6 0A2D mov R16,R10
03B8 .dbline -2
03B8 L78:
03B8 .dbline 0 ; func end
03B8 0C940000 xjmp pop_xgsetF00C
03BC .dbsym r r_data 10 c
03BC .dbsym r temp 22 c
03BC .dbsym r i 20 c
03BC .dbend
03BC .dbfunc e Write_1_byte _Write_1_byte fV
03BC ; temp -> R22
03BC ; i -> R20
03BC ; cmd -> R10
.even
03BC _Write_1_byte::
03BC 0E940000 xcall push_xgsetF00C
03C0 A02E mov R10,R16
03C2 .dbline -1
03C2 .dbline 147
03C2 ; }
03C2 ; /*************************************************
03C2 ; 函 数 名:Write_1_byte
03C2 ; 功 能:写一个字节到DS18B20
03C2 ; 入口参数:cmd
03C2 ; 出口参数:无
03C2 ; 修改日期:2007.02.16
03C2 ; *************************************************/
03C2 ; void Write_1_byte(uint8_t cmd)
03C2 ; {
03C2 .dbline 149
03C2 ; uint8_t i,temp;
03C2 ; for(i=0;i<8;i++)
03C2 4427 clr R20
03C4 0BC0 xjmp L89
03C6 L86:
03C6 .dbline 150
03C6 ; {
03C6 .dbline 151
03C6 ; temp=(cmd>>i);
03C6 0A2D mov R16,R10
03C8 142F mov R17,R20
03CA 0E940000 xcall lsr8
03CE 602F mov R22,R16
03D0 .dbline 152
03D0 ; temp&=0x01;
03D0 6170 andi R22,1
03D2 .dbline 153
03D2 ; if(temp)
03D2 11F0 breq L90
03D4 X17:
03D4 .dbline 154
03D4 ; {
03D4 .dbline 155
03D4 ; Write_1();
03D4 07D0 xcall _Write_1
03D6 .dbline 156
03D6 ; }
03D6 01C0 xjmp L91
03D8 L90:
03D8 .dbline 158
03D8 ; else
03D8 ; {
03D8 .dbline 159
03D8 ; Write_0();
03D8 10D0 xcall _Write_0
03DA .dbline 160
03DA ; }
03DA L91:
03DA .dbline 161
03DA ; }
03DA L87:
03DA .dbline 149
03DA 4395 inc R20
03DC L89:
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -