📄 ds1302_mega16.lis
字号:
01B0 90E0 ldi R25,0
01B2 8417 cp R24,R20
01B4 9507 cpc R25,R21
01B6 0CF4 brge X12
01B8 8AC0 xjmp L34
01BA X12:
01BA X9:
01BA 80E0 ldi R24,<L69
01BC 90E0 ldi R25,>L69
01BE FA01 movw R30,R20
01C0 EE0F lsl R30
01C2 FF1F rol R31
01C4 E80F add R30,R24
01C6 F91F adc R31,R25
01C8 2590 lpm R2,Z+
01CA 3490 lpm R3,Z
01CC F101 movw R30,R2
01CE 0994 ijmp
01D0 X10:
01D0 .dbfile E:\MyDesign\ICCAVR\ATmega16_DEV\DS1302\DS18B20.h
01D0 .dbline 30
01D0 ; {
01D0 L37:
01D0 .dbline 31
01D0 ; case 0 : LCD_write_string(12,2,".00");break;
01D0 80E0 ldi R24,<L38
01D2 90E0 ldi R25,>L38
01D4 9983 std y+1,R25
01D6 8883 std y+0,R24
01D8 22E0 ldi R18,2
01DA 0CE0 ldi R16,12
01DC 6CDF xcall _LCD_write_string
01DE .dbline 31
01DE 77C0 xjmp L35
01E0 L39:
01E0 .dbline 32
01E0 ; case 1 : LCD_write_string(12,2,".06");break;
01E0 80E0 ldi R24,<L40
01E2 90E0 ldi R25,>L40
01E4 9983 std y+1,R25
01E6 8883 std y+0,R24
01E8 22E0 ldi R18,2
01EA 0CE0 ldi R16,12
01EC 64DF xcall _LCD_write_string
01EE .dbline 32
01EE 6FC0 xjmp L35
01F0 L41:
01F0 .dbline 33
01F0 ; case 2 : LCD_write_string(12,2,".12");break;
01F0 80E0 ldi R24,<L42
01F2 90E0 ldi R25,>L42
01F4 9983 std y+1,R25
01F6 8883 std y+0,R24
01F8 22E0 ldi R18,2
01FA 0CE0 ldi R16,12
01FC 5CDF xcall _LCD_write_string
01FE .dbline 33
01FE 67C0 xjmp L35
0200 L43:
0200 .dbline 34
0200 ; case 3 : LCD_write_string(12,2,".18");break;
0200 80E0 ldi R24,<L44
0202 90E0 ldi R25,>L44
0204 9983 std y+1,R25
0206 8883 std y+0,R24
0208 22E0 ldi R18,2
020A 0CE0 ldi R16,12
020C 54DF xcall _LCD_write_string
020E .dbline 34
020E 5FC0 xjmp L35
0210 L45:
0210 .dbline 35
0210 ; case 4 : LCD_write_string(12,2,".25");break;
0210 80E0 ldi R24,<L46
0212 90E0 ldi R25,>L46
0214 9983 std y+1,R25
0216 8883 std y+0,R24
0218 22E0 ldi R18,2
021A 0CE0 ldi R16,12
021C 4CDF xcall _LCD_write_string
021E .dbline 35
021E 57C0 xjmp L35
0220 L47:
0220 .dbline 36
0220 ; case 5 : LCD_write_string(12,2,".31");break;
0220 80E0 ldi R24,<L48
0222 90E0 ldi R25,>L48
0224 9983 std y+1,R25
0226 8883 std y+0,R24
0228 22E0 ldi R18,2
022A 0CE0 ldi R16,12
022C 44DF xcall _LCD_write_string
022E .dbline 36
022E 4FC0 xjmp L35
0230 L49:
0230 .dbline 37
0230 ; case 6 : LCD_write_string(12,2,".37");break;
0230 80E0 ldi R24,<L50
0232 90E0 ldi R25,>L50
0234 9983 std y+1,R25
0236 8883 std y+0,R24
0238 22E0 ldi R18,2
023A 0CE0 ldi R16,12
023C 3CDF xcall _LCD_write_string
023E .dbline 37
023E 47C0 xjmp L35
0240 L51:
0240 .dbline 38
0240 ; case 7 : LCD_write_string(12,2,".43");break;
0240 80E0 ldi R24,<L52
0242 90E0 ldi R25,>L52
0244 9983 std y+1,R25
0246 8883 std y+0,R24
0248 22E0 ldi R18,2
024A 0CE0 ldi R16,12
024C 34DF xcall _LCD_write_string
024E .dbline 38
024E 3FC0 xjmp L35
0250 L53:
0250 .dbline 39
0250 ; case 8 : LCD_write_string(12,2,".50");break;
0250 80E0 ldi R24,<L54
0252 90E0 ldi R25,>L54
0254 9983 std y+1,R25
0256 8883 std y+0,R24
0258 22E0 ldi R18,2
025A 0CE0 ldi R16,12
025C 2CDF xcall _LCD_write_string
025E .dbline 39
025E 37C0 xjmp L35
0260 L55:
0260 .dbline 40
0260 ; case 9 : LCD_write_string(12,2,".56");break;
0260 80E0 ldi R24,<L56
0262 90E0 ldi R25,>L56
0264 9983 std y+1,R25
0266 8883 std y+0,R24
0268 22E0 ldi R18,2
026A 0CE0 ldi R16,12
026C 24DF xcall _LCD_write_string
026E .dbline 40
026E 2FC0 xjmp L35
0270 L57:
0270 .dbline 41
0270 ; case 10 : LCD_write_string(12,2,".61");break;
0270 80E0 ldi R24,<L58
0272 90E0 ldi R25,>L58
0274 9983 std y+1,R25
0276 8883 std y+0,R24
0278 22E0 ldi R18,2
027A 0CE0 ldi R16,12
027C 1CDF xcall _LCD_write_string
027E .dbline 41
027E 27C0 xjmp L35
0280 L59:
0280 .dbline 42
0280 ; case 11 : LCD_write_string(12,2,".68");break;
0280 80E0 ldi R24,<L60
0282 90E0 ldi R25,>L60
0284 9983 std y+1,R25
0286 8883 std y+0,R24
0288 22E0 ldi R18,2
028A 0CE0 ldi R16,12
028C 14DF xcall _LCD_write_string
028E .dbline 42
028E 1FC0 xjmp L35
0290 L61:
0290 .dbline 43
0290 ; case 12 : LCD_write_string(12,2,".75");break;
0290 80E0 ldi R24,<L62
0292 90E0 ldi R25,>L62
0294 9983 std y+1,R25
0296 8883 std y+0,R24
0298 22E0 ldi R18,2
029A 0CE0 ldi R16,12
029C 0CDF xcall _LCD_write_string
029E .dbline 43
029E 17C0 xjmp L35
02A0 L63:
02A0 .dbline 44
02A0 ; case 13 : LCD_write_string(12,2,".81");break;
02A0 80E0 ldi R24,<L64
02A2 90E0 ldi R25,>L64
02A4 9983 std y+1,R25
02A6 8883 std y+0,R24
02A8 22E0 ldi R18,2
02AA 0CE0 ldi R16,12
02AC 04DF xcall _LCD_write_string
02AE .dbline 44
02AE 0FC0 xjmp L35
02B0 L65:
02B0 .dbline 45
02B0 ; case 14 : LCD_write_string(12,2,".87");break;
02B0 80E0 ldi R24,<L66
02B2 90E0 ldi R25,>L66
02B4 9983 std y+1,R25
02B6 8883 std y+0,R24
02B8 22E0 ldi R18,2
02BA 0CE0 ldi R16,12
02BC FCDE xcall _LCD_write_string
02BE .dbline 45
02BE 07C0 xjmp L35
02C0 L67:
02C0 .dbline 46
02C0 ; case 15 : LCD_write_string(12,2,".93");break;
02C0 80E0 ldi R24,<L68
02C2 90E0 ldi R25,>L68
02C4 9983 std y+1,R25
02C6 8883 std y+0,R24
02C8 22E0 ldi R18,2
02CA 0CE0 ldi R16,12
02CC F4DE xcall _LCD_write_string
02CE .dbline 46
02CE L34:
02CE L35:
02CE .dbline -2
02CE L33:
02CE .dbline 0 ; func end
02CE 2296 adiw R28,2
02D0 0C940000 xjmp pop_xgsetF03C
02D4 .dbsym r temp_decimal 20 c
02D4 .dbsym r temp_num 12 c
02D4 .dbsym r temp_l 22 c
02D4 .dbsym r temp_h 10 c
02D4 .dbsym r Th 22 c
02D4 .dbsym r Tl 12 c
02D4 .dbend
02D4 .dbfunc e Temperature _Temperature fV
02D4 ; tl_l -> R14,R15
02D4 ; th_h -> R20,R21
02D4 ; temp_negative -> R20,R21
02D4 ; Tl -> R10
02D4 ; Th -> R12
.even
02D4 _Temperature::
02D4 0E940000 xcall push_xgset30FC
02D8 A22E mov R10,R18
02DA C02E mov R12,R16
02DC .dbline -1
02DC .dbline 52
02DC ; }
02DC ; }
02DC ; /************************************************
02DC ; ************************************************/
02DC ; void Temperature(uint8_t Th,uint8_t Tl)
02DC ; {
02DC .dbline 54
02DC ; uint16_t temp_negative,th_h,tl_l;
02DC ; if((Th&0x80)==0)//温度为正
02DC C7FC sbrc R12,7
02DE 0AC0 rjmp L71
02E0 X13:
02E0 .dbline 55
02E0 ; {
02E0 .dbline 56
02E0 ; LCD_set_xy(9,2);
02E0 22E0 ldi R18,2
02E2 09E0 ldi R16,9
02E4 D8DE xcall _LCD_set_xy
02E6 .dbline 57
02E6 ; Positive();
02E6 .dbline 57
02E6 2BE2 ldi R18,43
02E8 0027 clr R16
02EA AFDE xcall _LCD_write_byte
02EC .dbline 57
02EC .dbline 58
02EC ; Temp_display(Tl,Th);
02EC 2C2D mov R18,R12
02EE 0A2D mov R16,R10
02F0 37DF xcall _Temp_display
02F2 .dbline 59
02F2 ; }
02F2 19C0 xjmp L72
02F4 L71:
02F4 .dbline 61
02F4 ; else //温度为负
02F4 ; {
02F4 .dbline 62
02F4 ; LCD_set_xy(9,2);
02F4 22E0 ldi R18,2
02F6 09E0 ldi R16,9
02F8 CEDE xcall _LCD_set_xy
02FA .dbline 63
02FA ; Negative();
02FA .dbline 63
02FA 2DE2 ldi R18,45
02FC 0027 clr R16
02FE A5DE xcall _LCD_write_byte
0300 .dbline 63
0300 .dbline 64
0300 ; th_h=(uint16_t)Th;
0300 4C2D mov R20,R12
0302 5527 clr R21
0304 .dbline 65
0304 ; tl_l=(uint16_t)Tl;
0304 EA2C mov R14,R10
0306 FF24 clr R15
0308 .dbline 66
0308 ; th_h<<=8;
0308 542F mov R21,R20
030A 4427 clr R20
030C .dbline 67
030C ; temp_negative=(th_h|tl_l);
030C 4E29 or R20,R14
030E 5F29 or R21,R15
0310 .dbline 68
0310 ; temp_negative=~temp_negative+1;
0310 4095 com R20
0312 5095 com R21
0314 4F5F subi R20,255 ; offset = 1
0316 5F4F sbci R21,255
0318 .dbline 69
0318 ; Tl=(uint8_t)temp_negative;
0318 A42E mov R10,R20
031A .dbline 70
031A ; temp_negative>>=8;
031A 452F mov R20,R21
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -