⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ds1302_mega16.lis

📁 这是一个用温度计和时钟程序,芯片是ATmega16,电路稳定,绝对好用而且易懂
💻 LIS
📖 第 1 页 / 共 5 页
字号:
 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 + -