📄 温度测量.lis
字号:
0176 ; DDRA|=0x01;
0176 D09A sbi 0x1a,0
0178 .dbline 127
0178 ; for (j=0;j<=7;j++)
0178 AA24 clr R10
017A 1BC0 xjmp L35
017C L32:
017C .dbline 128
017C ; {
017C .dbline 129
017C ; i=wdata&0x01;
017C 642F mov R22,R20
017E 6170 andi R22,1
0180 .dbline 130
0180 ; if(i==0x01)
0180 6130 cpi R22,1
0182 59F4 brne L36
0184 X7:
0184 .dbline 131
0184 ; {
0184 .dbline 132
0184 ; PORTA&=0xfe;
0184 8BB3 in R24,0x1b
0186 8E7F andi R24,254
0188 8BBB out 0x1b,R24
018A .dbline 133
018A ; delay_18B20(10);
018A 0AE0 ldi R16,10
018C 10E0 ldi R17,0
018E A8DF xcall _delay_18B20
0190 .dbline 134
0190 ; PORTA|=0x01;
0190 D89A sbi 0x1b,0
0192 .dbline 135
0192 ; delay_18B20(100);
0192 04E6 ldi R16,100
0194 10E0 ldi R17,0
0196 A4DF xcall _delay_18B20
0198 .dbline 136
0198 ; }
0198 0AC0 xjmp L37
019A L36:
019A .dbline 138
019A ; else
019A ; {
019A .dbline 139
019A ; PORTA&=0xfe;
019A 8BB3 in R24,0x1b
019C 8E7F andi R24,254
019E 8BBB out 0x1b,R24
01A0 .dbline 140
01A0 ; delay_18B20(100);
01A0 04E6 ldi R16,100
01A2 10E0 ldi R17,0
01A4 9DDF xcall _delay_18B20
01A6 .dbline 141
01A6 ; PORTA|=0x01;
01A6 D89A sbi 0x1b,0
01A8 .dbline 142
01A8 ; delay_18B20(10);
01A8 0AE0 ldi R16,10
01AA 10E0 ldi R17,0
01AC 99DF xcall _delay_18B20
01AE .dbline 143
01AE ; }
01AE L37:
01AE .dbline 144
01AE ; wdata=wdata>>1;
01AE 4695 lsr R20
01B0 .dbline 145
01B0 ; }
01B0 L33:
01B0 .dbline 127
01B0 A394 inc R10
01B2 L35:
01B2 .dbline 127
01B2 87E0 ldi R24,7
01B4 8A15 cp R24,R10
01B6 10F7 brsh L32
01B8 X8:
01B8 .dbline -2
01B8 L31:
01B8 .dbline 0 ; func end
01B8 0C940000 xjmp pop_xgsetF00C
01BC .dbsym r i 22 c
01BC .dbsym r j 10 c
01BC .dbsym r wdata 20 c
01BC .dbend
01BC .dbfunc e ds1820disp _ds1820disp fV
01BC ; flagdat -> R20
.even
01BC _ds1820disp::
01BC 4A93 st -y,R20
01BE .dbline -1
01BE .dbline 150
01BE ; }
01BE ;
01BE ; /******************************************************************/
01BE ; void ds1820disp()//温度值显示
01BE ; {
01BE .dbline 152
01BE ; uchar flagdat;
01BE ; DDRB|=0xFF;
01BE 87B3 in R24,0x17
01C0 8F6F ori R24,255
01C2 87BB out 0x17,R24
01C4 .dbline 153
01C4 ; DDRC|=(1<<3)|(1<<4)|(1<<5);
01C4 84B3 in R24,0x14
01C6 8863 ori R24,56
01C8 84BB out 0x14,R24
01CA .dbline 154
01CA ; adata[0]=tvalue/1000+0x30;//百位数
01CA 28EE ldi R18,1000
01CC 33E0 ldi R19,3
01CE 00910100 lds R16,_tvalue
01D2 10910200 lds R17,_tvalue+1
01D6 0E940000 xcall div16u
01DA C801 movw R24,R16
01DC C096 adiw R24,48
01DE 80930400 sts _adata,R24
01E2 .dbline 155
01E2 ; adata[1]=tvalue%1000/100+0x30;//十位数
01E2 28EE ldi R18,1000
01E4 33E0 ldi R19,3
01E6 00910100 lds R16,_tvalue
01EA 10910200 lds R17,_tvalue+1
01EE 0E940000 xcall mod16u
01F2 24E6 ldi R18,100
01F4 30E0 ldi R19,0
01F6 0E940000 xcall div16u
01FA C801 movw R24,R16
01FC C096 adiw R24,48
01FE 80930500 sts _adata+1,R24
0202 .dbline 156
0202 ; adata[2]=tvalue%100/10+0x30;//个位数
0202 24E6 ldi R18,100
0204 30E0 ldi R19,0
0206 00910100 lds R16,_tvalue
020A 10910200 lds R17,_tvalue+1
020E 0E940000 xcall mod16u
0212 2AE0 ldi R18,10
0214 30E0 ldi R19,0
0216 0E940000 xcall div16u
021A C801 movw R24,R16
021C C096 adiw R24,48
021E 80930600 sts _adata+2,R24
0222 .dbline 157
0222 ; adata[3]=tvalue%10+0x30;//小数位
0222 2AE0 ldi R18,10
0224 30E0 ldi R19,0
0226 00910100 lds R16,_tvalue
022A 10910200 lds R17,_tvalue+1
022E 0E940000 xcall mod16u
0232 C801 movw R24,R16
0234 C096 adiw R24,48
0236 80930700 sts _adata+3,R24
023A .dbline 158
023A ; if(tflag==0)
023A 20900000 lds R2,_tflag
023E 2220 tst R2
0240 11F4 brne L42
0242 X9:
0242 .dbline 159
0242 ; flagdat=0x20;//正温度不显示符号
0242 40E2 ldi R20,32
0244 01C0 xjmp L43
0246 L42:
0246 .dbline 161
0246 ; else
0246 ; flagdat=0x2d;//负温度显示负号:-
0246 4DE2 ldi R20,45
0248 L43:
0248 .dbline 162
0248 ; if(adata[0]==0x30)
0248 80910400 lds R24,_adata
024C 8033 cpi R24,48
024E 51F4 brne L44
0250 X10:
0250 .dbline 163
0250 ; {
0250 .dbline 164
0250 ; adata[0]=0x20;//如果百位为0,不显示
0250 80E2 ldi R24,32
0252 80930400 sts _adata,R24
0256 .dbline 165
0256 ; if(adata[1]==0x30)
0256 80910500 lds R24,_adata+1
025A 8033 cpi R24,48
025C 19F4 brne L46
025E X11:
025E .dbline 166
025E ; {
025E .dbline 167
025E ; adata[1]=0x20;//如果百位为0,十位为0也不显示
025E 80E2 ldi R24,32
0260 80930500 sts _adata+1,R24
0264 .dbline 168
0264 ; }
0264 L46:
0264 .dbline 169
0264 ; }
0264 L44:
0264 .dbline 170
0264 ; if(n==0)
0264 20900300 lds R2,_n
0268 2220 tst R2
026A 31F4 brne L50
026C X12:
026C .dbline 171
026C ; {
026C .dbline 172
026C ; wr_com(0x80);
026C 00E8 ldi R16,128
026E DCDE xcall _wr_com
0270 .dbline 173
0270 ; display(str1);
0270 00E0 ldi R16,<_str1
0272 10E0 ldi R17,>_str1
0274 22DF xcall _display
0276 .dbline 174
0276 ; }
0276 1DC0 xjmp L51
0278 L50:
0278 .dbline 175
0278 ; else if(n==1)
0278 80910300 lds R24,_n
027C 8130 cpi R24,1
027E 31F4 brne L52
0280 X13:
0280 .dbline 176
0280 ; {
0280 .dbline 177
0280 ; wr_com(0x80);
0280 00E8 ldi R16,128
0282 D2DE xcall _wr_com
0284 .dbline 178
0284 ; display(str2);
0284 00E0 ldi R16,<_str2
0286 10E0 ldi R17,>_str2
0288 18DF xcall _display
028A .dbline 179
028A ; }
028A 13C0 xjmp L53
028C L52:
028C .dbline 180
028C ; else if(n==2)
028C 80910300 lds R24,_n
0290 8230 cpi R24,2
0292 31F4 brne L54
0294 X14:
0294 .dbline 181
0294 ; {
0294 .dbline 182
0294 ; wr_com(0x80);
0294 00E8 ldi R16,128
0296 C8DE xcall _wr_com
0298 .dbline 183
0298 ; display(str3);
0298 00E0 ldi R16,<_str3
029A 10E0 ldi R17,>_str3
029C 0EDF xcall _display
029E .dbline 184
029E ; }
029E 09C0 xjmp L55
02A0 L54:
02A0 .dbline 185
02A0 ; else if(n==3)
02A0 80910300 lds R24,_n
02A4 8330 cpi R24,3
02A6 29F4 brne L56
02A8 X15:
02A8 .dbline 186
02A8 ; {
02A8 .dbline 187
02A8 ; wr_com(0x80);
02A8 00E8 ldi R16,128
02AA BEDE xcall _wr_com
02AC .dbline 188
02AC ; display(str4);
02AC 00E0 ldi R16,<_str4
02AE 10E0 ldi R17,>_str4
02B0 04DF xcall _display
02B2 .dbline 189
02B2 ; }
02B2 L56:
02B2 L55:
02B2 L53:
02B2 L51:
02B2 .dbline 190
02B2 ; wr_com(0xc0);
02B2 00EC ldi R16,192
02B4 B9DE xcall _wr_com
02B6 .dbline 191
02B6 ; wr_dat(flagdat);//显示符号位
02B6 042F mov R16,R20
02B8 CADE xcall _wr_dat
02BA .dbline 192
02BA ; wr_com(0xc1);
02BA 01EC ldi R16,193
02BC B5DE xcall _wr_com
02BE .dbline 193
02BE ; wr_dat(adata[0]);//显示百位
02BE 00910400 lds R16,_adata
02C2 C5DE xcall _wr_dat
02C4 .dbline 194
02C4 ; wr_com(0xc2);
02C4 02EC ldi R16,194
02C6 B0DE xcall _wr_com
02C8 .dbline 195
02C8 ; wr_dat(adata[1]);//显示十位
02C8 00910500 lds R16,_adata+1
02CC C0DE xcall _wr_dat
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -