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

📄 ds18b20_main.lis

📁 16个单片机c语言实验程序
💻 LIS
📖 第 1 页 / 共 5 页
字号:
 00E0 20900000          lds R2,_init_f
 00E4 27FE              sbrs R2,7
 00E6 01C0              rjmp L29
 00E8           X8:
 00E8                   .dbline 99
 00E8           ;   {   
 00E8                   .dbline 100
 00E8           ;   SEI();
 00E8 7894              sei
 00EA                   .dbline 101
 00EA           ;   }
 00EA           L29:
 00EA                   .dbline -2
 00EA           L22:
 00EA                   .dbline 0 ; func end
 00EA 4991              ld R20,y+
 00EC A990              ld R10,y+
 00EE 0895              ret
 00F0                   .dbsym r i 20 c
 00F0                   .dbsym r value 10 c
 00F0                   .dbend
 00F0                   .dbfunc e ds1820_start _ds1820_start fV
                        .even
 00F0           _ds1820_start::
 00F0                   .dbline -1
 00F0                   .dbline 106
 00F0           ; }
 00F0           ; 
 00F0           ; //启动ds1820转换
 00F0           ; void ds1820_start(void) 
 00F0           ; {
 00F0                   .dbline 107
 00F0           ;  ds1820_reset();
 00F0 9DDF              xcall _ds1820_reset
 00F2                   .dbline 108
 00F2           ;  ds1820_write_byte(0xCC); //勿略ROM
 00F2 0CEC              ldi R16,204
 00F4 DCDF              xcall _ds1820_write_byte
 00F6                   .dbline 109
 00F6           ;  ds1820_write_byte(0x44); //启动转换
 00F6 04E4              ldi R16,68
 00F8 DADF              xcall _ds1820_write_byte
 00FA                   .dbline -2
 00FA           L31:
 00FA                   .dbline 0 ; func end
 00FA 0895              ret
 00FC                   .dbend
 00FC                   .dbfunc e ds1820_read_temp _ds1820_read_temp fi
 00FC           ;            buf -> y+0
 00FC           ;              i -> R20,R21
                        .even
 00FC           _ds1820_read_temp::
 00FC 4A93              st -y,R20
 00FE 5A93              st -y,R21
 0100 2997              sbiw R28,9
 0102                   .dbline -1
 0102                   .dbline 114
 0102           ; }
 0102           ; 
 0102           ; //读温度
 0102           ; unsigned int ds1820_read_temp(void)
 0102           ;  {
 0102                   .dbline 117
 0102           ;  unsigned int i;
 0102           ;  unsigned char buf[9];
 0102           ;  ds1820_reset();
 0102 94DF              xcall _ds1820_reset
 0104                   .dbline 118
 0104           ;  ds1820_write_byte(0xCC); //勿略ROM
 0104 0CEC              ldi R16,204
 0106 D3DF              xcall _ds1820_write_byte
 0108                   .dbline 119
 0108           ;  ds1820_write_byte(0xBE); //读温度
 0108 0EEB              ldi R16,190
 010A D1DF              xcall _ds1820_write_byte
 010C                   .dbline 120
 010C           ;  for (i = 0; i < 9; i++) {
 010C 4427              clr R20
 010E 5527              clr R21
 0110 08C0              xjmp L36
 0112           L33:
 0112                   .dbline 120
 0112                   .dbline 121
 0112           ;   buf[i] = ds1820_read_byte();
 0112 A7DF              xcall _ds1820_read_byte
 0114 CE01              movw R24,R28
 0116 FA01              movw R30,R20
 0118 E80F              add R30,R24
 011A F91F              adc R31,R25
 011C 0083              std z+0,R16
 011E                   .dbline 122
 011E           ;   }
 011E           L34:
 011E                   .dbline 120
 011E 4F5F              subi R20,255  ; offset = 1
 0120 5F4F              sbci R21,255
 0122           L36:
 0122                   .dbline 120
 0122 4930              cpi R20,9
 0124 E0E0              ldi R30,0
 0126 5E07              cpc R21,R30
 0128 A0F3              brlo L33
 012A           X9:
 012A                   .dbline 123
 012A           ;  i = buf[1];
 012A 4981              ldd R20,y+1
 012C 5527              clr R21
 012E                   .dbline 124
 012E           ;  i <<= 8;
 012E 542F              mov R21,R20
 0130 4427              clr R20
 0132                   .dbline 125
 0132           ;  i |= buf[0];
 0132 2880              ldd R2,y+0
 0134 3324              clr R3
 0136 4229              or R20,R2
 0138 5329              or R21,R3
 013A                   .dbline 126
 013A           ;  return i;
 013A 8A01              movw R16,R20
 013C                   .dbline -2
 013C           L32:
 013C                   .dbline 0 ; func end
 013C 2996              adiw R28,9
 013E 5991              ld R21,y+
 0140 4991              ld R20,y+
 0142 0895              ret
 0144                   .dbsym l buf 0 A[9:9]c
 0144                   .dbsym r i 20 i
 0144                   .dbend
 0144                   .dbfile E:\产品\开发板\光盘\16实验程序\DS18B20\1602.h
 0144                   .dbfunc e s_ms _s_ms fV
 0144           ;             ms -> R16,R17
                        .even
 0144           _s_ms::
 0144                   .dbline -1
 0144                   .dbline 9
 0144           ; #define uchar unsigned char 
 0144           ; #define uint unsigned int 
 0144           ; 
 0144           ; #define RS 5
 0144           ; #define RW 6
 0144           ; #define EN 7
 0144           ; 
 0144           ; void s_ms(uint ms)
 0144           ; {
 0144                   .dbline 10
 0144           ;       for(;ms>1;ms--);
 0144 02C0              xjmp L42
 0146           L39:
 0146                   .dbline 10
 0146           L40:
 0146                   .dbline 10
 0146 0150              subi R16,1
 0148 1040              sbci R17,0
 014A           L42:
 014A                   .dbline 10
 014A 81E0              ldi R24,1
 014C 90E0              ldi R25,0
 014E 8017              cp R24,R16
 0150 9107              cpc R25,R17
 0152 C8F3              brlo L39
 0154           X10:
 0154                   .dbline -2
 0154           L38:
 0154                   .dbline 0 ; func end
 0154 0895              ret
 0156                   .dbsym r ms 16 i
 0156                   .dbend
 0156                   .dbfunc e busy _busy fV
 0156           ;           temp -> R20
                        .even
 0156           _busy::
 0156 4A93              st -y,R20
 0158                   .dbline -1
 0158                   .dbline 15
 0158           ; }     
 0158           ; 
 0158           ; //查忙
 0158           ; void busy(void)
 0158           ; {
 0158                   .dbline 17
 0158           ;     uchar temp;
 0158           ;       s_ms(500);
 0158 04EF              ldi R16,500
 015A 11E0              ldi R17,1
 015C F3DF              xcall _s_ms
 015E                   .dbline 18
 015E           ;       PORTA&=~(1<<RS);    //RS=0
 015E DD98              cbi 0x1b,5
 0160                   .dbline 19
 0160           ;       s_ms(500);
 0160 04EF              ldi R16,500
 0162 11E0              ldi R17,1
 0164 EFDF              xcall _s_ms
 0166                   .dbline 20
 0166           ;       PORTA|=(1<<RW);     //RW=1
 0166 DE9A              sbi 0x1b,6
 0168                   .dbline 21
 0168           ;       s_ms(500);
 0168 04EF              ldi R16,500
 016A 11E0              ldi R17,1
 016C EBDF              xcall _s_ms
 016E 1AC0              xjmp L45
 0170           L44:
 0170                   .dbline 23
 0170           ;       while(temp)
 0170           ;       {
 0170                   .dbline 24
 0170           ;               PORTA|=(1<<EN); //EN=1
 0170 DF9A              sbi 0x1b,7
 0172                   .dbline 25
 0172           ;               s_ms(500);
 0172 04EF              ldi R16,500
 0174 11E0              ldi R17,1
 0176 E6DF              xcall _s_ms
 0178                   .dbline 26
 0178           ;               DDRD=0x00;      //A口变输入
 0178 2224              clr R2
 017A 21BA              out 0x11,R2
 017C                   .dbline 27
 017C           ;               PORTD=0xff;     //上拉使能
 017C 8FEF              ldi R24,255
 017E 82BB              out 0x12,R24
 0180                   .dbline 28
 0180           ;               s_ms(500);
 0180 04EF              ldi R16,500
 0182 11E0              ldi R17,1
 0184 DFDF              xcall _s_ms
 0186                   .dbline 29
 0186           ;               temp = PIND&0x80;    //读取A口
 0186 40B3              in R20,0x10
 0188 4078              andi R20,128
 018A                   .dbline 30
 018A           ;               s_ms(500);      
 018A 04EF              ldi R16,500
 018C 11E0              ldi R17,1
 018E DADF              xcall _s_ms
 0190                   .dbline 31
 0190           ;               DDRD=0xff;      
 0190 8FEF              ldi R24,255
 0192 81BB              out 0x11,R24
 0194                   .dbline 32
 0194           ;               PORTD=0xff;        //A口变输出
 0194 82BB              out 0x12,R24
 0196                   .dbline 33
 0196           ;               s_ms(500);
 0196 04EF              ldi R16,500
 0198 11E0              ldi R17,1
 019A D4DF              xcall _s_ms
 019C                   .dbline 34
 019C           ;               PORTA&=~(1<<EN);   //EN=0
 019C DF98              cbi 0x1b,7
 019E                   .dbline 35
 019E           ;               s_ms(500);
 019E 04EF              ldi R16,500
 01A0 11E0              ldi R17,1
 01A2 D0DF              xcall _s_ms
 01A4                   .dbline 36
 01A4           ;       }
 01A4           L45:
 01A4                   .dbline 22
 01A4 4423              tst R20
 01A6 21F7              brne L44
 01A8           X11:
 01A8                   .dbline -2
 01A8           L43:
 01A8                   .dbline 0 ; func end
 01A8 4991              ld R20,y+
 01AA 0895              ret
 01AC                   .dbsym r temp 20 c
 01AC                   .dbend
 01AC                   .dbfunc e writecom _writecom fV
 01AC           ;            com -> R10
                        .even
 01AC           _writecom::
 01AC AA92              st -y,R10
 01AE A02E              mov R10,R16
 01B0                   .dbline -1
 01B0                   .dbline 41
 01B0           ; }
 01B0           ; 
 01B0           ; //写指令
 01B0           ; void writecom(uchar   com)
 01B0           ; {
 01B0                   .dbline 42
 01B0           ;       busy();
 01B0 D2DF              xcall _busy
 01B2                   .dbline 43
 01B2           ;       s_ms(500);
 01B2 04EF              ldi R16,500
 01B4 11E0              ldi R17,1
 01B6 C6DF              xcall _s_ms
 01B8                   .dbline 44
 01B8           ;       PORTA&=~(1<<RS);   //RS=0
 01B8 DD98              cbi 0x1b,5
 01BA                   .dbline 45
 01BA           ;       s_ms(500);
 01BA 04EF              ldi R16,500
 01BC 11E0              ldi R17,1
 01BE C2DF              xcall _s_ms
 01C0                   .dbline 46
 01C0           ;       PORTA&=~(1<<RW);   //RW=0
 01C0 DE98              cbi 0x1b,6
 01C2                   .dbline 47
 01C2           ;       s_ms(500);
 01C2 04EF              ldi R16,500
 01C4 11E0              ldi R17,1
 01C6 BEDF              xcall _s_ms
 01C8                   .dbline 48
 01C8           ;       PORTA|=(1<<EN);    //EN=1
 01C8 DF9A              sbi 0x1b,7
 01CA                   .dbline 49
 01CA           ;       s_ms(500);
 01CA 04EF              ldi R16,500
 01CC 11E0              ldi R17,1
 01CE BADF              xcall _s_ms
 01D0                   .dbline 50
 01D0           ;       PORTD = com;       //输出指令
 01D0 A2BA              out 0x12,R10
 01D2                   .dbline 51
 01D2           ;       s_ms(500);
 01D2 04EF              ldi R16,500
 01D4 11E0              ldi R17,1
 01D6 B6DF              xcall _s_ms
 01D8                   .dbline 52
 01D8           ;       PORTA&=~(1<<EN);   //EN=0
 01D8 DF98              cbi 0x1b,7
 01DA                   .dbline 53
 01DA           ;       s_ms(500);
 01DA 04EF              ldi R16,500
 01DC 11E0              ldi R17,1
 01DE B2DF              xcall _s_ms
 01E0                   .dbline -2
 01E0           L47:
 01E0                   .dbline 0 ; func end
 01E0 A990              ld R10,y+
 01E2 0895              ret
 01E4                   .dbsym r com 10 c
 01E4                   .dbend
 01E4                   .dbfunc e LcdInit _LcdInit fV
                        .even
 01E4           _LcdInit::
 01E4                   .dbline -1
 01E4                   .dbline 58

⌨️ 快捷键说明

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