📄 ds18b20.lst
字号:
0123 924A ST R4,-Y
0124 923A ST R3,-Y
0125 922A ST R2,-Y
0126 E206 LDI R16,0x26
0127 E010 LDI R17,0
0128 D0F3 RCALL lpm32
0129 933A ST R19,-Y
012A 932A ST R18,-Y
012B 931A ST R17,-Y
012C 930A ST R16,-Y
012D D1E9 RCALL cmp32f
012E F0B4 BLT 0x0145
012F 01FE MOVW R30,R28
0130 8025 LDD R2,Z+5
0131 8036 LDD R3,Z+6
0132 8047 LDD R4,Z+7
0133 8450 LDD R5,Z+8
0134 925A ST R5,-Y
0135 924A ST R4,-Y
0136 923A ST R3,-Y
0137 922A ST R2,-Y
0138 E206 LDI R16,0x26
0139 E010 LDI R17,0
013A D0E1 RCALL lpm32
013B 933A ST R19,-Y
013C 932A ST R18,-Y
013D 931A ST R17,-Y
013E 930A ST R16,-Y
013F D18A RCALL sub32f
0140 D0EF RCALL fp2int
0141 01B8 MOVW R22,R16
0142 5060 SUBI R22,0
0143 4870 SBCI R23,0x80
0144 C007 RJMP 0x014C
0145 01FE MOVW R30,R28
0146 8105 LDD R16,Z+5
0147 8116 LDD R17,Z+6
0148 8127 LDD R18,Z+7
0149 8530 LDD R19,Z+8
014A D0E5 RCALL fp2int
014B 01B8 MOVW R22,R16
014C 01AB MOVW R20,R22
(0154) temp[0]=temper_data%10+0x30;
014D E02A LDI R18,0xA
014E E030 LDI R19,0
014F 018A MOVW R16,R20
0150 D083 RCALL mod16u
0151 01C8 MOVW R24,R16
0152 96C0 ADIW R24,0x30
0153 8388 STD Y+0,R24
(0155) temp[1]=(temper_data/10)%10+0x30;
0154 E02A LDI R18,0xA
0155 E030 LDI R19,0
0156 018A MOVW R16,R20
0157 D07E RCALL div16u
0158 E02A LDI R18,0xA
0159 E030 LDI R19,0
015A D079 RCALL mod16u
015B 01C8 MOVW R24,R16
015C 96C0 ADIW R24,0x30
015D 8389 STD Y+1,R24
(0156) temp[2]=(temper_data/100)%10+0x30;
015E E624 LDI R18,0x64
015F E030 LDI R19,0
0160 018A MOVW R16,R20
0161 D074 RCALL div16u
0162 E02A LDI R18,0xA
0163 E030 LDI R19,0
0164 D06F RCALL mod16u
0165 01C8 MOVW R24,R16
0166 96C0 ADIW R24,0x30
0167 838A STD Y+2,R24
(0157) puts("当前温度是:");
0168 E603 LDI R16,0x63
0169 E010 LDI R17,0
016A D03B RCALL _puts
(0158) putchar(temp[2]);
016B 810A LDD R16,Y+2
016C D031 RCALL _putchar
(0159) putchar(temp[1]);
016D 8109 LDD R16,Y+1
016E D02F RCALL _putchar
(0160) putchar('.');
016F E20E LDI R16,0x2E
0170 D02D RCALL _putchar
(0161) putchar(temp[0]);
0171 8108 LDD R16,Y+0
0172 D02B RCALL _putchar
(0162) putchar('`');
0173 E600 LDI R16,0x60
0174 D029 RCALL _putchar
(0163) putchar('C');
0175 E403 LDI R16,0x43
0176 D027 RCALL _putchar
(0164) puts_hh(" ");
0177 E600 LDI R16,0x60
0178 E010 LDI R17,0
0179 D03A RCALL _puts_hh
017A CF77 RJMP 0x00F2
017B 9629 ADIW R28,0x9
017C 9508 RET
_delay_us:
i --> R20
n --> R16
017D D07E RCALL push_gset1
FILE: D:\开发板\source\ds18b20\uart.c
(0001) /******************************************/
(0002) /* 北京MCU学习之家 */
(0003) /* ADC通信演示程序 */
(0004) /* 作者:白如冰 */
(0005) /* 2005年10月1日 */
(0006) /* 目标MCU:MEGA8 晶振:外部(EXT) 8MHZ */
(0007) /******************************************/
(0008)
(0009) #include <iom8v.h>
(0010) #define fosc 8000000 //晶振8MHZ
(0011) #define baud 9600 //波特率
(0012)
(0013)
(0014) void delay_us(unsigned int n)
(0015) {
(0016) unsigned int i;
(0017) for(i=n;i>0;i--);
017E 01A8 MOVW R20,R16
017F C002 RJMP 0x0182
0180 5041 SUBI R20,1
0181 4050 SBCI R21,0
0182 3040 CPI R20,0
0183 0745 CPC R20,R21
0184 F7D9 BNE 0x0180
0185 D079 RCALL pop_gset1
0186 9508 RET
(0018) }
(0019)
(0020) void delay_1ms(void)
(0021) { unsigned int i;
(0022) for(i=1;i<(unsigned int)(1144-2);i++)
_delay_1ms:
i --> R16
0187 E001 LDI R16,1
0188 E010 LDI R17,0
0189 C002 RJMP 0x018C
018A 5F0F SUBI R16,0xFF
018B 4F1F SBCI R17,0xFF
018C 3706 CPI R16,0x76
018D E0E4 LDI R30,4
018E 071E CPC R17,R30
018F F3D0 BCS 0x018A
0190 9508 RET
_delay_ms:
i --> R20
n --> R22
0191 D068 RCALL push_gset2
0192 01B8 MOVW R22,R16
(0023) ;
(0024) }
(0025) void delay_ms(unsigned int n)
(0026) {
(0027) unsigned int i=0;
0193 2744 CLR R20
0194 2755 CLR R21
0195 C003 RJMP 0x0199
(0028) while(i<n)
(0029) {delay_1ms();
0196 DFF0 RCALL _delay_1ms
(0030) i++;
0197 5F4F SUBI R20,0xFF
0198 4F5F SBCI R21,0xFF
0199 1746 CP R20,R22
019A 0757 CPC R21,R23
019B F3D0 BCS 0x0196
019C D053 RCALL pop_gset2
019D 9508 RET
(0031) }
(0032) }
(0033) /* 字符输出函数 */
(0034) void putchar(unsigned char c)
(0035) {
(0036) while (!(UCSRA&(1<<UDRE)));
_putchar:
c --> R16
019E 9B5D SBIS 0x0B,5
019F CFFE RJMP _putchar
(0037) UDR=c;
01A0 B90C OUT 0x0C,R16
01A1 9508 RET
(0038) }
(0039) /* 字符输入函数 */
(0040) unsigned char getchar(void)
(0041) {
(0042) while(!(UCSRA& (1<<RXC)));
_getchar:
01A2 9B5F SBIS 0x0B,7
01A3 CFFE RJMP _getchar
(0043) return UDR;
01A4 B10C IN R16,0x0C
01A5 9508 RET
_puts:
s --> R20
01A6 D055 RCALL push_gset1
01A7 01A8 MOVW R20,R16
(0044) }
(0045) /* 字符串输出函数 */
(0046) void puts(char *s)
(0047) {
01A8 C005 RJMP 0x01AE
(0048) while (*s)
(0049) {
(0050) putchar(*s);
01A9 01FA MOVW R30,R20
01AA 8100 LDD R16,Z+0
01AB DFF2 RCALL _putchar
(0051) s++;
01AC 5F4F SUBI R20,0xFF
01AD 4F5F SBCI R21,0xFF
01AE 01FA MOVW R30,R20
01AF 8020 LDD R2,Z+0
01B0 2022 TST R2
01B1 F7B9 BNE 0x01A9
01B2 D04C RCALL pop_gset1
01B3 9508 RET
_puts_hh:
s --> R20
01B4 D047 RCALL push_gset1
01B5 01A8 MOVW R20,R16
(0052) }
(0053)
(0054) }
(0055) /* 字符串输出函数 */
(0056) void puts_hh(char *s)
(0057) {
01B6 C005 RJMP 0x01BC
(0058) while (*s)
(0059) {
(0060) putchar(*s);
01B7 01FA MOVW R30,R20
01B8 8100 LDD R16,Z+0
01B9 DFE4 RCALL _putchar
(0061) s++;
01BA 5F4F SUBI R20,0xFF
01BB 4F5F SBCI R21,0xFF
01BC 01FA MOVW R30,R20
01BD 8020 LDD R2,Z+0
01BE 2022 TST R2
01BF F7B9 BNE 0x01B7
(0062) }
(0063) putchar(0x0a);//回车换行
01C0 E00A LDI R16,0xA
01C1 DFDC RCALL _putchar
(0064) putchar(0x0d);
01C2 E00D LDI R16,0xD
01C3 DFDA RCALL _putchar
01C4 D03A RCALL pop_gset1
01C5 9508 RET
(0065) }
(0066)
(0067) /* UART初始化 */
(0068) void uart_init(void)
(0069) {
(0070) UCSRB=(1<<RXEN)|(1<<TXEN);//允许发送和接收
_uart_init:
01C6 E188 LDI R24,0x18
01C7 B98A OUT 0x0A,R24
(0071) UBRRL=(fosc/16/(baud+1))%256;
01C8 E384 LDI R24,0x34
01C9 B989 OUT 0x09,R24
(0072) UBRRH=(fosc/16/(baud+1))/256;
01CA 2422 CLR R2
01CB BC20 OUT 0x20,R2
(0073) UCSRC=(1<<URSEL)|(1<<UCSZ1)|(1<<UCSZ0);//8位数据+1位STOP位
FILE: <library>
01CC E886 LDI R24,0x86
01CD BD80 OUT 0x20,R24
01CE 9508 RET
push_arg4:
01CF 933A ST R19,-Y
01D0 932A ST R18,-Y
push_arg2:
01D1 931A ST R17,-Y
01D2 930A ST R16,-Y
01D3 9508 RET
mod16u:
01D4 9468 BSET 6
01D5 C001 RJMP xdiv16u
div16u:
01D6 94E8 BCLR 6
xdiv16u:
01D7 92EA ST R14,-Y
01D8 92FA ST R15,-Y
01D9 938A ST R24,-Y
01DA 24EE CLR R14
01DB 24FF CLR R15
01DC E180 LDI R24,0x10
01DD 0F00 LSL R16
01DE 1F11 ROL R17
01DF 1CEE ROL R14
01E0 1CFF ROL R15
01E1 16E2 CP R14,R18
01E2 06F3 CPC R15,R19
01E3 F018 BCS 0x01E7
01E4 1AE2 SUB R14,R18
01E5 0AF3 SBC R15,R19
01E6 9503 INC R16
01E7 958A DEC R24
01E8 F7A1 BNE 0x01DD
01E9 F416 BRTC 0x01EC
01EA 2D0E MOV R16,R14
01EB 2D1F MOV R17,R15
01EC 9189 LD R24,Y+
01ED 90F9 LD R15,Y+
01EE 90E9 LD R14,Y+
01EF 9508 RET
pop_gset2:
01F0 E0E2 LDI R30,2
01F1 C00E RJMP pop
pop_gset3:
01F2 E0E4 LDI R30,4
01F3 C00C RJMP pop
push_gset5:
01F4 92FA ST R15,-Y
01F5 92EA ST R14,-Y
push_gset4:
01F6 92DA ST R13,-Y
01F7 92CA ST R12,-Y
push_gset3:
01F8 92BA ST R11,-Y
01F9 92AA ST R10,-Y
push_gset2:
01FA 937A ST R23,-Y
01FB 936A ST R22,-Y
push_gset1:
01FC 935A ST R21,-Y
01FD 934A ST R20,-Y
01FE 9508 RET
pop_gset1:
01FF E0E1 LDI R30,1
pop:
0200 9149 LD R20,Y+
0201 9159 LD R21,Y+
0202 FDE0 SBRC R30,0
0203 9508 RET
0204 9169 LD R22,Y+
0205 9179 LD R23,Y+
0206 FDE1 SBRC R30,1
0207 9508 RET
0208 90A9 LD R10,Y+
0209 90B9 LD R11,Y+
020A FDE2 SBRC R30,2
020B 9508 RET
020C 90C9 LD R12,Y+
020D 90D9 LD R13,Y+
020E FDE3 SBRC R30,3
020F 9508 RET
0210 90E9 LD R14,Y+
0211 90F9 LD R15,Y+
0212 9508 RET
neg32:
0213 9500 COM R16
0214 9510 COM R17
0215 9520 COM R18
0216 9530 COM R19
0217 5F0F SUBI R16,0xFF
0218 4F1F SBCI R17,0xFF
0219 4F2F SBCI R18,0xFF
021A 4F3F SBCI R19,0xFF
021B 9508 RET
lpm32:
021C 93EA ST R30,-Y
021D 93FA ST R31,-Y
021E 920A ST R0,-Y
021F 2FE0 MOV R30,R16
0220 2FF1 MOV R31,R17
0221 95C8 LPM
0222 2D00 MOV R16,R0
0223 9631 ADIW R30,1
0224 95C8 LPM
0225 2D10 MOV R17,R0
0226 9631 ADIW R30,1
0227 95C8 LPM
0228 2D20 MOV R18,R0
0229 9631 ADIW R30,1
022A 95C8 LPM
022B 2D30 MOV R19,R0
022C 9009 LD R0,Y+
022D 91F9 LD R31,Y+
022E 91E9 LD R30,Y+
022F 9508 RET
fp2int:
0230 D15D RCALL savfacc1
0231 D00F RCALL FTOI
0232 2F02 MOV R16,R18
0233 2F13 MOV R17,R19
0234 FD87 SBRC R24,7
0235 C001 RJMP nojump1
0236 C15A RJMP restorefacc1
nojump1:
0237 9510 COM R17
0238 9501 NEG R16
0239 4F1F SBCI R17,0xFF
023A C156 RJMP restorefacc1
fp2long:
023B D152 RCALL savfacc1
023C D006 RCALL FTOL
023D FF87 SBRS R24,7
023E C001 RJMP nojump2
023F DFD3 RCALL neg32
nojump2:
0240 C150 RJMP restorefacc1
FTOI:
0241 E0BE LDI R27,0xE
0242 C001 RJMP 0x0244
FTOL:
0243 E1BE LDI R27,0x1E
0244 D14F RCALL unpackfacc1
0245 F059 BEQ 0x0251
0246 1BB3 SUB R27,R19
0247 F009 BEQ 0x0249
0248 F45A BPL 0x0254
0249 2388 TST R24
024A F01A BMI 0x024E
024B E010 LDI R17,0
024C E302 LDI R16,0x32
024D CFCE RJMP lpm32
024E E010 LDI R17,0
024F E308 LDI R16,0x38
0250 CFCB RJMP lpm32
0251 E010 LDI R17,0
0252 E306 LDI R16,0x36
0253 CFC8 RJMP lpm32
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -