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

📄 ds18b20.lst

📁 AVR ds18b20 源代码 对学习温度控制的人很有帮助
💻 LST
📖 第 1 页 / 共 3 页
字号:
    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 + -