📄 lm1602.lis
字号:
021E D1DF xcall _DisNum
0220 .dbline 221
0220 ; DisNum(1, 7, minute%16);
0220 10E1 ldi R17,16
0222 042F mov R16,R20
0224 0E940000 xcall mod8u
0228 0883 std y+0,R16
022A 27E0 ldi R18,7
022C 01E0 ldi R16,1
022E C9DF xcall _DisNum
0230 .dbline 222
0230 ; DisString(1, 8,":");
0230 80E0 ldi R24,<L49
0232 90E0 ldi R25,>L49
0234 9983 std y+1,R25
0236 8883 std y+0,R24
0238 28E0 ldi R18,8
023A 01E0 ldi R16,1
023C A5DF xcall _DisString
023E .dbline 224
023E ;
023E ; DisNum(1, 10, second & 0x0f);
023E 8E81 ldd R24,y+6
0240 8F70 andi R24,15
0242 8883 std y+0,R24
0244 2AE0 ldi R18,10
0246 01E0 ldi R16,1
0248 BCDF xcall _DisNum
024A .dbline 225
024A ; DisNum(1, 9, (second >> 4) &0x07);
024A 8E81 ldd R24,y+6
024C 8295 swap R24
024E 8F70 andi R24,#0x0F
0250 8770 andi R24,7
0252 8883 std y+0,R24
0254 29E0 ldi R18,9
0256 01E0 ldi R16,1
0258 B4DF xcall _DisNum
025A .dbline -2
025A L48:
025A 2296 adiw R28,2
025C 0E940000 xcall pop_gset2
0260 .dbline 0 ; func end
0260 0895 ret
0262 .dbsym l second 6 c
0262 .dbsym r minute 20 c
0262 .dbsym r hour 22 c
0262 .dbend
0262 .dbfunc e LCD_Dis_Float _LCD_Dis_Float fV
0262 ; tempdata -> y+1
0262 ; i -> R20
0262 ; bvalue -> y+11
0262 ; ucol -> R22
0262 ; urow -> R10
.even
0262 _LCD_Dis_Float::
0262 0E940000 xcall push_gset3
0266 622F mov R22,R18
0268 A02E mov R10,R16
026A 2597 sbiw R28,5
026C .dbline -1
026C .dbline 230
026C ; }
026C ;
026C ;
026C ; void LCD_Dis_Float(byte urow,byte ucol,byte bvalue)
026C ; {
026C .dbline 234
026C ; byte i;
026C ; byte tempdata[4];
026C ;
026C ; tempdata[0] = (bvalue)/100;
026C 14E6 ldi R17,100
026E 0B85 ldd R16,y+11
0270 0E940000 xcall div8u
0274 0983 std y+1,R16
0276 .dbline 235
0276 ; if(tempdata[0]== 0) tempdata[0]= ' '-'0';
0276 0023 tst R16
0278 11F4 brne L51
027A .dbline 235
027A 80EF ldi R24,240
027C 8983 std y+1,R24
027E L51:
027E .dbline 236
027E ; tempdata[1] = (bvalue)%100/10;
027E 14E6 ldi R17,100
0280 0B85 ldd R16,y+11
0282 0E940000 xcall mod8u
0286 1AE0 ldi R17,10
0288 0E940000 xcall div8u
028C 0A83 std y+2,R16
028E .dbline 237
028E ; if((tempdata[0] == 0x00)&&(tempdata[1] == 0x00))
028E 2980 ldd R2,y+1
0290 2220 tst R2
0292 21F4 brne L54
0294 0023 tst R16
0296 11F4 brne L54
0298 .dbline 238
0298 ; {
0298 .dbline 239
0298 ; tempdata[1] = ' '-'0';
0298 80EF ldi R24,240
029A 8A83 std y+2,R24
029C .dbline 240
029C ; }
029C L54:
029C .dbline 241
029C ; tempdata[2] = (bvalue)%10;
029C 1AE0 ldi R17,10
029E 0B85 ldd R16,y+11
02A0 0E940000 xcall mod8u
02A4 0B83 std y+3,R16
02A6 .dbline 242
02A6 ; tempdata[3] = '.'-'0';
02A6 8EEF ldi R24,254
02A8 8C83 std y+4,R24
02AA .dbline 244
02AA ;
02AA ; for(i = 0;i<4;i++)
02AA 4427 clr R20
02AC 0DC0 xjmp L63
02AE L60:
02AE .dbline 245
02AE CE01 movw R24,R28
02B0 0196 adiw R24,1
02B2 E42F mov R30,R20
02B4 FF27 clr R31
02B6 E80F add R30,R24
02B8 F91F adc R31,R25
02BA 2080 ldd R2,z+0
02BC 2882 std y+0,R2
02BE 262F mov R18,R22
02C0 240F add R18,R20
02C2 0A2D mov R16,R10
02C4 7EDF xcall _DisNum
02C6 L61:
02C6 .dbline 244
02C6 4395 inc R20
02C8 L63:
02C8 .dbline 244
02C8 4430 cpi R20,4
02CA 88F3 brlo L60
02CC .dbline -2
02CC L50:
02CC 2596 adiw R28,5
02CE 0E940000 xcall pop_gset3
02D2 .dbline 0 ; func end
02D2 0895 ret
02D4 .dbsym l tempdata 1 A[4:4]c
02D4 .dbsym r i 20 c
02D4 .dbsym l bvalue 11 c
02D4 .dbsym r ucol 22 c
02D4 .dbsym r urow 10 c
02D4 .dbend
02D4 .dbfunc e LCD_Dis_Temperature _LCD_Dis_Temperature fV
02D4 ; rValue -> R10,R11
02D4 ; ucol -> R22
02D4 ; urow -> R20
.even
02D4 _LCD_Dis_Temperature::
02D4 0E940000 xcall push_gset3
02D8 622F mov R22,R18
02DA 402F mov R20,R16
02DC 2297 sbiw R28,2
02DE A884 ldd R10,y+8
02E0 B984 ldd R11,y+9
02E2 .dbline -1
02E2 .dbline 249
02E2 ; DisNum(urow,ucol+i,tempdata[i]);
02E2 ; }
02E2 ;
02E2 ; void LCD_Dis_Temperature(byte urow,byte ucol, unsigned int rValue) //温度数据转换和显示函数
02E2 ; {
02E2 .dbline 250
02E2 ; ClearLcd();
02E2 E2DE xcall _ClearLcd
02E4 .dbline 251
02E4 ; DisString(0,1,"Temperature is:");
02E4 80E0 ldi R24,<L65
02E6 90E0 ldi R25,>L65
02E8 9983 std y+1,R25
02EA 8883 std y+0,R24
02EC 21E0 ldi R18,1
02EE 0027 clr R16
02F0 4BDF xcall _DisString
02F2 .dbline 252
02F2 ; if((rValue &0xf800) == 0xf800)
02F2 C501 movw R24,R10
02F4 8070 andi R24,0
02F6 987F andi R25,248
02F8 8030 cpi R24,0
02FA E8EF ldi R30,248
02FC 9E07 cpc R25,R30
02FE C1F4 brne L66
0300 .dbline 253
0300 ; {
0300 .dbline 254
0300 ; DisString(urow,ucol,"-");
0300 80E0 ldi R24,<L68
0302 90E0 ldi R25,>L68
0304 9983 std y+1,R25
0306 8883 std y+0,R24
0308 262F mov R18,R22
030A 042F mov R16,R20
030C 3DDF xcall _DisString
030E .dbline 255
030E ; LCD_Dis_Float(urow,ucol+1,((byte)(~((rValue>>3)-1)))>>1);
030E C501 movw R24,R10
0310 9695 lsr R25
0312 8795 ror R24
0314 9695 lsr R25
0316 8795 ror R24
0318 9695 lsr R25
031A 8795 ror R24
031C 0197 sbiw R24,1
031E 8095 com R24
0320 9095 com R25
0322 8695 lsr R24
0324 8883 std y+0,R24
0326 262F mov R18,R22
0328 2F5F subi R18,255 ; addi 1
032A 042F mov R16,R20
032C 9ADF xcall _LCD_Dis_Float
032E .dbline 256
032E ; }
032E 16C0 xjmp L67
0330 L66:
0330 .dbline 258
0330 ; else
0330 ; {
0330 .dbline 259
0330 ; DisString(urow,ucol," ");
0330 80E0 ldi R24,<L69
0332 90E0 ldi R25,>L69
0334 9983 std y+1,R25
0336 8883 std y+0,R24
0338 262F mov R18,R22
033A 042F mov R16,R20
033C 25DF xcall _DisString
033E .dbline 260
033E ; LCD_Dis_Float(urow,ucol+1,(rValue>>4)&0xff);
033E C501 movw R24,R10
0340 9695 lsr R25
0342 8795 ror R24
0344 9695 lsr R25
0346 8795 ror R24
0348 9695 lsr R25
034A 8795 ror R24
034C 9695 lsr R25
034E 8795 ror R24
0350 9070 andi R25,0
0352 8883 std y+0,R24
0354 262F mov R18,R22
0356 2F5F subi R18,255 ; addi 1
0358 042F mov R16,R20
035A 83DF xcall _LCD_Dis_Float
035C .dbline 261
035C ; }
035C L67:
035C .dbline 262
035C ; if((rValue&0x08)==0x08)
035C C501 movw R24,R10
035E 8870 andi R24,8
0360 9070 andi R25,0
0362 8830 cpi R24,8
0364 E0E0 ldi R30,0
0366 9E07 cpc R25,R30
0368 49F4 brne L70
036A .dbline 263
036A ; DisString(urow,ucol+5,"5");
036A 80E0 ldi R24,<L72
036C 90E0 ldi R25,>L72
036E 9983 std y+1,R25
0370 8883 std y+0,R24
0372 262F mov R18,R22
0374 2B5F subi R18,251 ; addi 5
0376 042F mov R16,R20
0378 07DF xcall _DisString
037A 08C0 xjmp L71
037C L70:
037C .dbline 265
037C ; else
037C ; DisString(urow,ucol+5,"0");
037C 80E0 ldi R24,<L73
037E 90E0 ldi R25,>L73
0380 9983 std y+1,R25
0382 8883 std y+0,R24
0384 262F mov R18,R22
0386 2B5F subi R18,251 ; addi 5
0388 042F mov R16,R20
038A FEDE xcall _DisString
038C L71:
038C .dbline 266
038C ; DisCGRAM(urow, ucol+6, 0x00);
038C 2224 clr R2
038E 2882 std y+0,R2
0390 262F mov R18,R22
0392 2A5F subi R18,250 ; addi 6
0394 042F mov R16,R20
0396 ECDE xcall _DisCGRAM
0398 .dbline -2
0398 L64:
0398 2296 adiw R28,2
039A 0E940000 xcall pop_gset3
039E .dbline 0 ; func end
039E 0895 ret
03A0 .dbsym r rValue 10 i
03A0 .dbsym r ucol 22 c
03A0 .dbsym r urow 20 c
03A0 .dbend
03A0 .dbfunc e LcdInit _LcdInit fV
.even
03A0 _LcdInit::
03A0 2197 sbiw R28,1
03A2 .dbline -1
03A2 .dbline 272
03A2 ; }
03A2 ;
03A2 ;
03A2 ;
03A2 ; void LcdInit(void)
03A2 ; {
03A2 .dbline 273
03A2 ; ClearLcd();
03A2 82DE xcall _ClearLcd
03A4 .dbline 274
03A4 ; CurReturn();
03A4 84DE xcall _CurReturn
03A6 .dbline 275
03A6 ; SetInputMode(1, 0);
03A6 2227 clr R18
03A8 01E0 ldi R16,1
03AA 84DE xcall _SetInputMode
03AC .dbline 276
03AC ; SetDisMode(1, 0, 0);
03AC 2224 clr R2
03AE 2882 std y+0,R2
03B0 2227 clr R18
03B2 01E0 ldi R16,1
03B4 94DE xcall _SetDisMode
03B6 .dbline 278
03B6 ; // SetShift(0, 0);
03B6 ; SetFunction(1, 1, 1);
03B6 81E0 ldi R24,1
03B8 8883 std y+0,R24
03BA 21E0 ldi R18,1
03BC 01E0 ldi R16,1
03BE AADE xcall _SetFunction
03C0 .dbline 280
03C0 ; // SetCGRAMAddr();
03C0 ; LCD_WriteCGRAM(CGRAMtab,8);
03C0 28E0 ldi R18,8
03C2 00E0 ldi R16,<_CGRAMtab
03C4 10E0 ldi R17,>_CGRAMtab
03C6 5CDE xcall _LCD_WriteCGRAM
03C8 .dbline -2
03C8 L74:
03C8 2196 adiw R28,1
03CA .dbline 0 ; func end
03CA 0895 ret
03CC .dbend
.area data(ram, con, rel)
0008 .dbfile F:\avr最小系统板\程序代码\ex15_ds18b20_1602\lm1602.c
0008 L73:
0008 .blkb 2
.area idata
0008 3000 .byte 48,0
.area data(ram, con, rel)
000A .dbfile F:\avr最小系统板\程序代码\ex15_ds18b20_1602\lm1602.c
000A L72:
000A .blkb 2
.area idata
000A 3500 .byte 53,0
.area data(ram, con, rel)
000C .dbfile F:\avr最小系统板\程序代码\ex15_ds18b20_1602\lm1602.c
000C L69:
000C .blkb 2
.area idata
000C 2000 .byte 32,0
.area data(ram, con, rel)
000E .dbfile F:\avr最小系统板\程序代码\ex15_ds18b20_1602\lm1602.c
000E L68:
000E .blkb 2
.area idata
000E 2D00 .byte 45,0
.area data(ram, con, rel)
0010 .dbfile F:\avr最小系统板\程序代码\ex15_ds18b20_1602\lm1602.c
0010 L65:
0010 .blkb 16
.area idata
0010 54656D70657261747572652069733A00 .byte 'T,'e,'m,'p,'e,'r,'a,'t,'u,'r,'e,32,'i,'s,58,0
.area data(ram, con, rel)
0020 .dbfile F:\avr最小系统板\程序代码\ex15_ds18b20_1602\lm1602.c
0020 L49:
0020 .blkb 2
.area idata
0020 3A00 .byte 58,0
.area data(ram, con, rel)
0022 .dbfile F:\avr最小系统板\程序代码\ex15_ds18b20_1602\lm1602.c
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -