?? ds18b20.lis
字號:
.module DS18B20.c
.area text(rom, con, rel)
0000 .dbfile E:\CRAZY\調試AVR_C\電升06~1\DS18B20.c
0000 .dbfunc e process _process fV
0000 ; p -> R10,R11
0000 ; i -> y+6
.even
0000 _process::
0000 00D0 rcall push_arg4
0002 00D0 rcall push_gset3
0004 AA84 ldd R10,y+10
0006 BB84 ldd R11,y+11
0008 .dbline -1
0008 .dbline 20
0008 ; #include <iom8v.h>
0008 ; #include <macros.h>
0008 ;
0008 ; #define LCM_Data PORTB
0008 ; #define Busy 0x80
0008 ;
0008 ; #define Set_DQ1 DDRC |= 0x08; PORTC |= 0x08; //總線拉高
0008 ; #define Set_DQ0 DDRC |= 0x08; PORTC &= 0xf7; //總線置低
0008 ; #define Read_DQ PINC&0x08 //讀總線
0008 ; #define MatchROM 0xcc //匹配ROM
0008 ; #define WriteMode 0x4e //寫模式
0008 ; #define TH 0x64 //設置溫度上限100
0008 ; #define TL 0x8a //設置溫度下限-10
0008 ; #define MatchTemp 0x7f //寫溫度匹配寄存器,12bit
0008 ; #define ConverTem 0x44 //DS18B20溫度轉換命令
0008 ; #define Get_Value 0xbe //讀取溫度寄存器值
0008 ; uchar data[5];
0008 ;
0008 ; void process(long int i,uchar*p)
0008 ; {
0008 .dbline 21
0008 ; p[0]=i/1000;
0008 48EE ldi R20,232
000A 53E0 ldi R21,3
000C 60E0 ldi R22,0
000E 70E0 ldi R23,0
0010 FE01 movw R30,R28
0012 2680 ldd R2,z+6
0014 3780 ldd R3,z+7
0016 4084 ldd R4,z+8
0018 5184 ldd R5,z+9
001A 7A93 st -y,R23
001C 6A93 st -y,R22
001E 5A93 st -y,R21
0020 4A93 st -y,R20
0022 8101 movw R16,R2
0024 9201 movw R18,R4
0026 00D0 rcall div32s
0028 F501 movw R30,R10
002A 0083 std z+0,R16
002C .dbline 22
002C ; i=i%1000;
002C 48EE ldi R20,232
002E 53E0 ldi R21,3
0030 60E0 ldi R22,0
0032 70E0 ldi R23,0
0034 FE01 movw R30,R28
0036 2680 ldd R2,z+6
0038 3780 ldd R3,z+7
003A 4084 ldd R4,z+8
003C 5184 ldd R5,z+9
003E 7A93 st -y,R23
0040 6A93 st -y,R22
0042 5A93 st -y,R21
0044 4A93 st -y,R20
0046 8101 movw R16,R2
0048 9201 movw R18,R4
004A 00D0 rcall mod32s
004C FE01 movw R30,R28
004E 0683 std z+6,R16
0050 1783 std z+7,R17
0052 2087 std z+8,R18
0054 3187 std z+9,R19
0056 .dbline 23
0056 ; p[1]=i/100;
0056 44E6 ldi R20,100
0058 50E0 ldi R21,0
005A 60E0 ldi R22,0
005C 70E0 ldi R23,0
005E FE01 movw R30,R28
0060 2680 ldd R2,z+6
0062 3780 ldd R3,z+7
0064 4084 ldd R4,z+8
0066 5184 ldd R5,z+9
0068 7A93 st -y,R23
006A 6A93 st -y,R22
006C 5A93 st -y,R21
006E 4A93 st -y,R20
0070 8101 movw R16,R2
0072 9201 movw R18,R4
0074 00D0 rcall div32s
0076 F501 movw R30,R10
0078 0183 std z+1,R16
007A .dbline 24
007A ; i=i%100;
007A 44E6 ldi R20,100
007C 50E0 ldi R21,0
007E 60E0 ldi R22,0
0080 70E0 ldi R23,0
0082 FE01 movw R30,R28
0084 2680 ldd R2,z+6
0086 3780 ldd R3,z+7
0088 4084 ldd R4,z+8
008A 5184 ldd R5,z+9
008C 7A93 st -y,R23
008E 6A93 st -y,R22
0090 5A93 st -y,R21
0092 4A93 st -y,R20
0094 8101 movw R16,R2
0096 9201 movw R18,R4
0098 00D0 rcall mod32s
009A FE01 movw R30,R28
009C 0683 std z+6,R16
009E 1783 std z+7,R17
00A0 2087 std z+8,R18
00A2 3187 std z+9,R19
00A4 .dbline 25
00A4 ; p[2]=i/10;
00A4 4AE0 ldi R20,10
00A6 50E0 ldi R21,0
00A8 60E0 ldi R22,0
00AA 70E0 ldi R23,0
00AC FE01 movw R30,R28
00AE 2680 ldd R2,z+6
00B0 3780 ldd R3,z+7
00B2 4084 ldd R4,z+8
00B4 5184 ldd R5,z+9
00B6 7A93 st -y,R23
00B8 6A93 st -y,R22
00BA 5A93 st -y,R21
00BC 4A93 st -y,R20
00BE 8101 movw R16,R2
00C0 9201 movw R18,R4
00C2 00D0 rcall div32s
00C4 F501 movw R30,R10
00C6 0283 std z+2,R16
00C8 .dbline 26
00C8 ; i=i%10;
00C8 4AE0 ldi R20,10
00CA 50E0 ldi R21,0
00CC 60E0 ldi R22,0
00CE 70E0 ldi R23,0
00D0 FE01 movw R30,R28
00D2 2680 ldd R2,z+6
00D4 3780 ldd R3,z+7
00D6 4084 ldd R4,z+8
00D8 5184 ldd R5,z+9
00DA 7A93 st -y,R23
00DC 6A93 st -y,R22
00DE 5A93 st -y,R21
00E0 4A93 st -y,R20
00E2 8101 movw R16,R2
00E4 9201 movw R18,R4
00E6 00D0 rcall mod32s
00E8 FE01 movw R30,R28
00EA 0683 std z+6,R16
00EC 1783 std z+7,R17
00EE 2087 std z+8,R18
00F0 3187 std z+9,R19
00F2 .dbline 27
00F2 ; p[3]=i;
00F2 FE01 movw R30,R28
00F4 2680 ldd R2,z+6
00F6 3780 ldd R3,z+7
00F8 F501 movw R30,R10
00FA 2382 std z+3,R2
00FC .dbline 28
00FC ; for(i=0;i<4;i++)
00FC 40E0 ldi R20,0
00FE 50E0 ldi R21,0
0100 60E0 ldi R22,0
0102 70E0 ldi R23,0
0104 FE01 movw R30,R28
0106 4683 std z+6,R20
0108 5783 std z+7,R21
010A 6087 std z+8,R22
010C 7187 std z+9,R23
010E L2:
010E .dbline 29
010E FE01 movw R30,R28
0110 2680 ldd R2,z+6
0112 3780 ldd R3,z+7
0114 2A0C add R2,R10
0116 3B1C adc R3,R11
0118 F101 movw R30,R2
011A 8081 ldd R24,z+0
011C 805D subi R24,208 ; addi 48
011E 8083 std z+0,R24
0120 L3:
0120 .dbline 28
0120 41E0 ldi R20,1
0122 50E0 ldi R21,0
0124 60E0 ldi R22,0
0126 70E0 ldi R23,0
0128 FE01 movw R30,R28
012A 2680 ldd R2,z+6
012C 3780 ldd R3,z+7
012E 4084 ldd R4,z+8
0130 5184 ldd R5,z+9
0132 240E add R2,R20
0134 351E adc R3,R21
0136 461E adc R4,R22
0138 571E adc R5,R23
013A FE01 movw R30,R28
013C 2682 std z+6,R2
013E 3782 std z+7,R3
0140 4086 std z+8,R4
0142 5186 std z+9,R5
0144 .dbline 28
0144 44E0 ldi R20,4
0146 50E0 ldi R21,0
0148 60E0 ldi R22,0
014A 70E0 ldi R23,0
014C FE01 movw R30,R28
014E 2680 ldd R2,z+6
0150 3780 ldd R3,z+7
0152 4084 ldd R4,z+8
0154 5184 ldd R5,z+9
0156 2416 cp R2,R20
0158 3506 cpc R3,R21
015A 4606 cpc R4,R22
015C 5706 cpc R5,R23
015E 0CF4 brge X0
0160 D6CF rjmp L2
0162 X0:
0162 .dbline 30
0162 ; p[i]+=0x30;
0162 ; p[4]='$';
0162 84E2 ldi R24,36
0164 F501 movw R30,R10
0166 8483 std z+4,R24
0168 .dbline -2
0168 L1:
0168 00D0 rcall pop_gset3
016A 2496 adiw R28,4
016C .dbline 0 ; func end
016C 0895 ret
016E .dbsym r p 10 pc
016E .dbsym l i 6 L
016E .dbend
016E .dbfunc e delayms _delayms fV
016E ; j -> R20,R21
016E ; i -> R16,R17
.even
016E _delayms::
016E 00D0 rcall push_gset1
0170 .dbline -1
0170 .dbline 35
0170 ; }
0170 ;
0170 ;
0170 ; void delayms(uint i)
0170 ; {
0170 .dbline 37
0170 ; uint j;
0170 ; for(;i!=0;i--)
0170 0BC0 rjmp L10
0172 L7:
0172 .dbline 38
0172 ; for(j=0;j<8000;j++)
0172 4427 clr R20
0174 5527 clr R21
0176 02C0 rjmp L14
0178 L11:
0178 .dbline 39
0178 L12:
0178 .dbline 38
0178 4F5F subi R20,255 ; offset = 1
017A 5F4F sbci R21,255
017C L14:
017C .dbline 38
017C 4034 cpi R20,64
017E EFE1 ldi R30,31
0180 5E07 cpc R21,R30
0182 D0F3 brlo L11
0184 L8:
0184 .dbline 37
0184 0150 subi R16,1
0186 1040 sbci R17,0
0188 L10:
0188 .dbline 37
0188 0030 cpi R16,0
018A 0107 cpc R16,R17
018C 91F7 brne L7
018E X1:
018E .dbline -2
018E L6:
018E 00D0 rcall pop_gset1
0190 .dbline 0 ; func end
0190 0895 ret
0192 .dbsym r j 20 i
0192 .dbsym r i 16 i
0192 .dbend
0192 .dbfunc e delayus _delayus fV
0192 ; i -> R16,R17
.even
0192 _delayus::
0192 .dbline -1
0192 .dbline 43
0192 ; ;
0192 ; }
0192 ;
0192 ; void delayus(uint i)
0192 ; {
0192 .dbline 44
0192 ; for(;i!=0;i--)
0192 02C0 rjmp L19
0194 L16:
0194 .dbline 45
0194 L17:
0194 .dbline 44
0194 0150 subi R16,1
0196 1040 sbci R17,0
0198 L19:
0198 .dbline 44
0198 0030 cpi R16,0
019A 0107 cpc R16,R17
019C D9F7 brne L16
019E X2:
019E .dbline -2
019E L15:
019E .dbline 0 ; func end
019E 0895 ret
01A0 .dbsym r i 16 i
01A0 .dbend
01A0 .dbfunc e port_init _port_init fV
.even
01A0 _port_init::
01A0 .dbline -1
01A0 .dbline 52
01A0 ; ;
01A0 ; }
01A0 ;
01A0 ;
01A0 ;
01A0 ;
01A0 ; void port_init(void)
01A0 ; {
01A0 .dbline 53
01A0 ; DDRD = 0xfe;
01A0 8EEF ldi R24,254
01A2 81BB out 0x11,R24
01A4 .dbline 54
01A4 ; PORTD = 0xff;
01A4 8FEF ldi R24,255
01A6 82BB out 0x12,R24
01A8 .dbline 55
01A8 ; DDRB = 0xff;
01A8 87BB out 0x17,R24
01AA .dbline 56
01AA ; PORTB = 0xff;
01AA 88BB out 0x18,R24
01AC .dbline 57
01AC ; DDRC = 0xff;
01AC 84BB out 0x14,R24
01AE .dbline 58
01AE ; PORTC = 0xff;
01AE 85BB out 0x15,R24
01B0 .dbline -2
01B0 L20:
01B0 .dbline 0 ; func end
01B0 0895 ret
01B2 .dbend
01B2 .dbfunc e WriteDataLCM _WriteDataLCM fV
01B2 ; WDLCM -> R20
.even
01B2 _WriteDataLCM::
01B2 00D0 rcall push_gset1
01B4 402F mov R20,R16
01B6 .dbline -1
01B6 .dbline 65
01B6 ; }
01B6 ;
01B6 ;
01B6 ; /**********************************************************/
01B6 ; //寫數據
01B6 ; void WriteDataLCM(unsigned char WDLCM)
01B6 ; {
01B6 .dbline 67
01B6 ; //ReadStatusLCM(); //檢測忙
01B6 ; LCM_Data = WDLCM;
01B6 48BB out 0x18,R20
01B8 .dbline 70
01B8 ; //PORTC=0B00000100;
01B8 ; //PORTC=0B00000100;
01B8 ; delayms(1);
01B8 01E0 ldi R16,1
01BA 10E0 ldi R17,0
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -