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

📄 ds18b20_main.lis

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

⌨️ 快捷键说明

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