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

📄 ds18b20_main.lis

📁 16个单片机c语言实验程序
💻 LIS
📖 第 1 页 / 共 5 页
字号:
 0426           L77:
 0426                   .dbline 229
 0426           ;       {
 0426                   .dbline 230
 0426           ;               t = *pBuffer;
 0426 FA01              movw R30,R20
 0428 C080              ldd R12,z+0
 042A                   .dbline 231
 042A           ;               s_ms(500);
 042A 04EF              ldi R16,500
 042C 11E0              ldi R17,1
 042E 89DE              xcall _s_ms
 0430                   .dbline 232
 0430           ;               PORTD = t;
 0430 C2BA              out 0x12,R12
 0432                   .dbline 233
 0432           ;               s_ms(500);
 0432 04EF              ldi R16,500
 0434 11E0              ldi R17,1
 0436 85DE              xcall _s_ms
 0438                   .dbline 234
 0438           ;               PORTA|=(1<<EN);
 0438 DF9A              sbi 0x1b,7
 043A                   .dbline 235
 043A           ;               s_ms(500);
 043A 04EF              ldi R16,500
 043C 11E0              ldi R17,1
 043E 81DE              xcall _s_ms
 0440                   .dbline 236
 0440           ;               PORTA&=~(1<<EN);                
 0440 DF98              cbi 0x1b,7
 0442                   .dbline 237
 0442           ;               s_ms(500);              
 0442 04EF              ldi R16,500
 0444 11E0              ldi R17,1
 0446 7DDE              xcall _s_ms
 0448                   .dbline 238
 0448           ;               pBuffer++;
 0448 4F5F              subi R20,255  ; offset = 1
 044A 5F4F              sbci R21,255
 044C                   .dbline 239
 044C           ;       }
 044C           L78:
 044C                   .dbline 228
 044C AA94              dec R10
 044E           L80:
 044E                   .dbline 228
 044E AA20              tst R10
 0450 51F7              brne L77
 0452           X20:
 0452                   .dbline -2
 0452           L74:
 0452                   .dbline 0 ; func end
 0452 0C940000          xjmp pop_xgsetF03C
 0456                   .dbsym r t 12 c
 0456                   .dbsym r i 10 c
 0456                   .dbsym r pBuffer 20 pc
 0456                   .dbsym l num 8 i
 0456                   .dbsym r col 10 c
 0456                   .dbsym r row 22 c
 0456                   .dbend
                        .area data(ram, con, rel)
 0000                   .dbfile E:\单片机\16实验程序\DS18B20\DS18B20\1602.h
 0000           _adc_0::
 0000                   .blkb 13
                        .area idata
 0000 54656D70657261747572653A00        .byte 'T,'e,'m,'p,'e,'r,'a,'t,'u,'r,'e,58,0
                        .area data(ram, con, rel)
 000D                   .dbfile E:\单片机\16实验程序\DS18B20\DS18B20\1602.h
 000D                   .dbfile E:\单片机\16实验程序\DS18B20\DS18B20\DS18B20_main.c
 000D                   .dbsym e adc_0 _adc_0 A[13:13]c
 000D           _adc_1::
 000D                   .blkb 2
                        .area idata
 000D DF43              .byte 223,'C
                        .area data(ram, con, rel)
 000F                   .dbfile E:\单片机\16实验程序\DS18B20\DS18B20\DS18B20_main.c
 000F                   .dbsym e adc_1 _adc_1 A[2:2]c
                        .area text(rom, con, rel)
 0456                   .dbfile E:\单片机\16实验程序\DS18B20\DS18B20\DS18B20_main.c
 0456                   .dbfunc e s_1ms _s_1ms fV
 0456           ;             aa -> R20,R21
 0456           ;             ms -> R16,R17
                        .even
 0456           _s_1ms::
 0456 4A93              st -y,R20
 0458 5A93              st -y,R21
 045A                   .dbline -1
 045A                   .dbline 14
 045A           ; //温度传感器DS18B20试验
 045A           ; //间隔2s采集一次温度值
 045A           ; //使用1602的液晶作为显示
 045A           ; #include <iom16v.h>     
 045A           ; #include <macros.h>
 045A           ; #include "18B20.h"
 045A           ; #include "1602.h"
 045A           ; 
 045A           ; uchar adc_0[]={"Temperature:"};
 045A           ; uchar adc_1[]={0xdf,0x43};   //温度ascii代码
 045A           ; 
 045A           ; //延时函数在16M时延时1ms
 045A           ; void s_1ms(unsigned int ms)
 045A           ; {
 045A                   .dbline 16
 045A           ;     unsigned int aa;
 045A           ;       for(;ms>=1;ms--)
 045A 0CC0              xjmp L85
 045C           L82:
 045C                   .dbline 17
 045C           ;       {
 045C                   .dbline 18
 045C           ;       for(aa=0;aa<=2000;aa++)
 045C 4427              clr R20
 045E 5527              clr R21
 0460 02C0              xjmp L89
 0462           L86:
 0462                   .dbline 19
 0462           ;       {;}
 0462                   .dbline 19
 0462                   .dbline 19
 0462           L87:
 0462                   .dbline 18
 0462 4F5F              subi R20,255  ; offset = 1
 0464 5F4F              sbci R21,255
 0466           L89:
 0466                   .dbline 18
 0466 80ED              ldi R24,2000
 0468 97E0              ldi R25,7
 046A 8417              cp R24,R20
 046C 9507              cpc R25,R21
 046E C8F7              brsh L86
 0470           X21:
 0470                   .dbline 20
 0470           ;       }
 0470           L83:
 0470                   .dbline 16
 0470 0150              subi R16,1
 0472 1040              sbci R17,0
 0474           L85:
 0474                   .dbline 16
 0474 0130              cpi R16,1
 0476 E0E0              ldi R30,0
 0478 1E07              cpc R17,R30
 047A 80F7              brsh L82
 047C           X22:
 047C                   .dbline -2
 047C           L81:
 047C                   .dbline 0 ; func end
 047C 5991              ld R21,y+
 047E 4991              ld R20,y+
 0480 0895              ret
 0482                   .dbsym r aa 20 i
 0482                   .dbsym r ms 16 i
 0482                   .dbend
 0482                   .dbfunc e main _main fV
 0482           ;           tem3 -> <dead>
 0482           ;           tem1 -> R10,R11
 0482           ;           tem2 -> R12,R13
 0482           ;              i -> R10,R11
                        .even
 0482           _main::
 0482 2497              sbiw R28,4
 0484                   .dbline -1
 0484                   .dbline 25
 0484           ; }     
 0484           ;  
 0484           ; 
 0484           ; void main()
 0484           ; { 
 0484                   .dbline 28
 0484           ; unsigned int i,tem3,tem2,tem1;
 0484           ; //端口初始化
 0484           ; DDRA = 0xff;      
 0484 8FEF              ldi R24,255
 0486 8ABB              out 0x1a,R24
 0488                   .dbline 29
 0488           ; PORTA = 0x00;      
 0488 2224              clr R2
 048A 2BBA              out 0x1b,R2
 048C                   .dbline 30
 048C           ; DDRB = 0xFF;    
 048C 87BB              out 0x17,R24
 048E                   .dbline 31
 048E           ; PORTB = 0xF0;       
 048E 80EF              ldi R24,240
 0490 88BB              out 0x18,R24
 0492                   .dbline 32
 0492           ; DDRC = 0x00; 
 0492 24BA              out 0x14,R2
 0494                   .dbline 33
 0494           ; PORTC = 0xFF; 
 0494 8FEF              ldi R24,255
 0496 85BB              out 0x15,R24
 0498                   .dbline 34
 0498           ; DDRD = 0xff; 
 0498 81BB              out 0x11,R24
 049A                   .dbline 35
 049A           ; PORTD = 0xff;
 049A 82BB              out 0x12,R24
 049C                   .dbline 38
 049C           ;  
 049C           ; //延时200ms
 049C           ; s_1ms(200); 
 049C 08EC              ldi R16,200
 049E 10E0              ldi R17,0
 04A0 DADF              xcall _s_1ms
 04A2                   .dbline 40
 04A2           ; //DS18B20复位
 04A2           ; ds1820_reset();      
 04A2 C4DD              xcall _ds1820_reset
 04A4                   .dbline 42
 04A4           ; //1602 初始化
 04A4           ; LcdInit();   
 04A4 9EDE              xcall _LcdInit
 04A6                   .dbline 43
 04A6           ; WriteChar(1,0,12,adc_0);
 04A6 80E0              ldi R24,<_adc_0
 04A8 90E0              ldi R25,>_adc_0
 04AA 9B83              std y+3,R25
 04AC 8A83              std y+2,R24
 04AE 8CE0              ldi R24,12
 04B0 90E0              ldi R25,0
 04B2 9983              std y+1,R25
 04B4 8883              std y+0,R24
 04B6 2227              clr R18
 04B8 01E0              ldi R16,1
 04BA 9BDF              xcall _WriteChar
 04BC                   .dbline 44
 04BC           ; WriteChar(1,14,2,adc_1);
 04BC 80E0              ldi R24,<_adc_1
 04BE 90E0              ldi R25,>_adc_1
 04C0 9B83              std y+3,R25
 04C2 8A83              std y+2,R24
 04C4 82E0              ldi R24,2
 04C6 90E0              ldi R25,0
 04C8 9983              std y+1,R25
 04CA 8883              std y+0,R24
 04CC 2EE0              ldi R18,14
 04CE 01E0              ldi R16,1
 04D0 90DF              xcall _WriteChar
 04D2 37C0              xjmp L92
 04D4           L91:
 04D4                   .dbline 47
 04D4           ; 
 04D4           ; while (1) 
 04D4           ;   {
 04D4                   .dbline 49
 04D4           ;   //进行一次转换
 04D4           ;   ds1820_start();    
 04D4 0DDE              xcall _ds1820_start
 04D6                   .dbline 50
 04D6           ;   s_1ms(1000);     
 04D6 08EE              ldi R16,1000
 04D8 13E0              ldi R17,3
 04DA BDDF              xcall _s_1ms
 04DC                   .dbline 51
 04DC           ;   i = ds1820_read_temp();   //读取温度数值
 04DC 0EDE              xcall _ds1820_read_temp
 04DE 5801              movw R10,R16
 04E0                   .dbline 52
 04E0           ;   i = (i * 10) / 16;        //数值处理     数值*0.625
 04E0 0AE0              ldi R16,10
 04E2 10E0              ldi R17,0
 04E4 9501              movw R18,R10
 04E6 0E940000          xcall empy16s
 04EA 5801              movw R10,R16
 04EC B694              lsr R11
 04EE A794              ror R10
 04F0 B694              lsr R11
 04F2 A794              ror R10
 04F4 B694              lsr R11
 04F6 A794              ror R10
 04F8 B694              lsr R11
 04FA A794              ror R10
 04FC                   .dbline 54
 04FC           ;   //第3位没有显示
 04FC           ;   i = i % 1000;  
 04FC 28EE              ldi R18,1000
 04FE 33E0              ldi R19,3
 0500 8501              movw R16,R10
 0502 0E940000          xcall mod16u
 0506 5801              movw R10,R16
 0508                   .dbline 56
 0508           ;   //显示第2位
 0508           ;   tem2= i / 100;
 0508 24E6              ldi R18,100
 050A 30E0              ldi R19,0
 050C 0E940000          xcall div16u
 0510 6801              movw R12,R16
 0512                   .dbline 57
 0512           ;   WriteNum(1,12,tem2); 
 0512 D982              std y+1,R13
 0514 C882              std y+0,R12
 0516 2CE0              ldi R18,12
 0518 30E0              ldi R19,0
 051A 01E0              ldi R16,1
 051C 10E0              ldi R17,0
 051E 21DF              xcall _WriteNum
 0520                   .dbline 58
 0520           ;   i = i % 100;  
 0520 24E6              ldi R18,100
 0522 30E0              ldi R19,0
 0524 8501              movw R16,R10
 0526 0E940000          xcall mod16u
 052A                   .dbline 60
 052A           ;   //显示第1位
 052A           ;   tem1= i / 10;
 052A 2AE0              ldi R18,10
 052C 30E0              ldi R19,0
 052E 0E940000          xcall div16u
 0532 5801              movw R10,R16
 0534                   .dbline 61
 0534           ;   WriteNum(1,13,tem1);
 0534 B982              std y+1,R11
 0536 A882              std y+0,R10
 0538 2DE0              ldi R18,13
 053A 30E0              ldi R19,0
 053C 01E0              ldi R16,1
 053E 10E0              ldi R17,0
 0540 10DF              xcall _WriteNum
 0542                   .dbline 62
 0542           ;   } 
 0542           L92:
 0542                   .dbline 46
 0542 C8CF              xjmp L91
 0544           X23:
 0544                   .dbline -2
 0544           L90:
 0544                   .dbline 0 ; func end
 0544 2496              adiw R28,4
 0546 0895              ret
 0548                   .dbsym l tem3 5 i
 0548                   .dbsym r tem1 10 i
 0548                   .dbsym r tem2 12 i
 0548                   .dbsym r i 10 i
 0548                   .dbend
                        .area bss(ram, con, rel)
 0000                   .dbfile E:\单片机\16实验程序\DS18B20\DS18B20\DS18B20_main.c
 0000           _init_f::
 0000                   .blkb 1
 0001                   .dbfile E:\单片机\16实验程序\DS18B20\DS18B20\18B20.h
 0001                   .dbsym e init_f _init_f c
 0001           ; }

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -