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

📄 main.lss

📁 proteus仿真实例大全
💻 LSS
📖 第 1 页 / 共 5 页
字号:
     c4c:	e0 91 dc 00 	lds	r30, 0x00DC
     c50:	f0 91 dd 00 	lds	r31, 0x00DD
     c54:	20 95       	com	r18
     c56:	80 81       	ld	r24, Z
     c58:	82 23       	and	r24, r18
     c5a:	80 83       	st	Z, r24

   SREG=sreg; // sei();
     c5c:	4f bf       	out	0x3f, r20	; 63
	
   return b;
 }
     c5e:	83 2f       	mov	r24, r19
     c60:	99 27       	eor	r25, r25
     c62:	08 95       	ret

00000c64 <ow_byte_wr>:


uint8_t ow_byte_wr( uint8_t b )
 { uint8_t i = 8, j;
     c64:	1f 93       	push	r17
     c66:	cf 93       	push	r28
     c68:	c8 2f       	mov	r28, r24
     c6a:	18 e0       	ldi	r17, 0x08	; 8
   do 
    { j = ow_bit_io( b & 1 );
     c6c:	8c 2f       	mov	r24, r28
     c6e:	81 70       	andi	r24, 0x01	; 1
     c70:	0e 94 ef 05 	call	0xbde
      b >>= 1;
     c74:	c6 95       	lsr	r28
      if( j ) b |= 0x80;
     c76:	81 11       	cpse	r24, r1
     c78:	c0 68       	ori	r28, 0x80	; 128
    } 
     c7a:	11 50       	subi	r17, 0x01	; 1
     c7c:	b9 f7       	brne	.-18     	; 0xc6c
   while( --i );
   return b;
 }
     c7e:	8c 2f       	mov	r24, r28
     c80:	99 27       	eor	r25, r25
     c82:	cf 91       	pop	r28
     c84:	1f 91       	pop	r17
     c86:	08 95       	ret

00000c88 <ow_byte_rd>:


uint8_t ow_byte_rd( void )
 { // read by sending 0xff (a dontcare?)
   return ow_byte_wr( 0xFF ); 
     c88:	8f ef       	ldi	r24, 0xFF	; 255
     c8a:	0e 94 32 06 	call	0xc64
 }
     c8e:	99 27       	eor	r25, r25
     c90:	08 95       	ret

00000c92 <ow_rom_search>:


uint8_t ow_rom_search( uint8_t diff, uint8_t *id )
 { uint8_t i, j, next_diff;
     c92:	df 92       	push	r13
     c94:	ef 92       	push	r14
     c96:	ff 92       	push	r15
     c98:	0f 93       	push	r16
     c9a:	1f 93       	push	r17
     c9c:	cf 93       	push	r28
     c9e:	df 93       	push	r29
     ca0:	e8 2e       	mov	r14, r24
     ca2:	eb 01       	movw	r28, r22
   uint8_t b;

   if( ow_reset() ) 
     ca4:	0e 94 61 05 	call	0xac2
     ca8:	18 2f       	mov	r17, r24
     caa:	88 23       	and	r24, r24
     cac:	19 f0       	breq	.+6      	; 0xcb4
      return OW_PRESENCE_ERR;       // error, no device found
     cae:	8f ef       	ldi	r24, 0xFF	; 255
     cb0:	90 e0       	ldi	r25, 0x00	; 0
     cb2:	32 c0       	rjmp	.+100    	; 0xd18

   ow_byte_wr( OW_SEARCH_ROM );     // ROM search command
     cb4:	80 ef       	ldi	r24, 0xF0	; 240
     cb6:	0e 94 32 06 	call	0xc64
   next_diff = OW_LAST_DEVICE;      // unchanged on last device
     cba:	d1 2e       	mov	r13, r17

   i = OW_ROMCODE_SIZE * 8;         // 8 bytes
     cbc:	00 e4       	ldi	r16, 0x40	; 64
   do 
    {	j = 8;                        // 8 bits
     cbe:	88 e0       	ldi	r24, 0x08	; 8
     cc0:	f8 2e       	mov	r15, r24
		do 
       { b = ow_bit_io( 1 );			// read bit
     cc2:	81 e0       	ldi	r24, 0x01	; 1
     cc4:	0e 94 ef 05 	call	0xbde
     cc8:	18 2f       	mov	r17, r24
         if( ow_bit_io( 1 ) ) 
     cca:	81 e0       	ldi	r24, 0x01	; 1
     ccc:	0e 94 ef 05 	call	0xbde
     cd0:	88 23       	and	r24, r24
     cd2:	29 f0       	breq	.+10     	; 0xcde
          { // read complement bit
            if( b )                 // 11
     cd4:	11 23       	and	r17, r17
     cd6:	71 f0       	breq	.+28     	; 0xcf4
               return OW_DATA_ERR;  // data error
     cd8:	8e ef       	ldi	r24, 0xFE	; 254
     cda:	90 e0       	ldi	r25, 0x00	; 0
     cdc:	1d c0       	rjmp	.+58     	; 0xd18
          }
         else 
          { if( !b ) 
     cde:	11 23       	and	r17, r17
     ce0:	49 f4       	brne	.+18     	; 0xcf4
             { // 00 = 2 devices
               if( diff > i || ((*id & 1) && diff != i) ) 
     ce2:	0e 15       	cp	r16, r14
     ce4:	28 f0       	brcs	.+10     	; 0xcf0
     ce6:	88 81       	ld	r24, Y
     ce8:	80 ff       	sbrs	r24, 0
     cea:	04 c0       	rjmp	.+8      	; 0xcf4
     cec:	e0 16       	cp	r14, r16
     cee:	11 f0       	breq	.+4      	; 0xcf4
                { b = 1;               // now 1
     cf0:	11 e0       	ldi	r17, 0x01	; 1
                  next_diff = i;       // next pass 0
     cf2:	d0 2e       	mov	r13, r16
                }
             }
          }
         ow_bit_io( b );               // write bit
     cf4:	81 2f       	mov	r24, r17
     cf6:	0e 94 ef 05 	call	0xbde
         *id >>= 1;
     cfa:	88 81       	ld	r24, Y
     cfc:	86 95       	lsr	r24
     cfe:	88 83       	st	Y, r24
         if( b ) *id |= 0x80;			// store bit
     d00:	11 23       	and	r17, r17
     d02:	11 f0       	breq	.+4      	; 0xd08
     d04:	80 68       	ori	r24, 0x80	; 128
     d06:	88 83       	st	Y, r24
         i--;
     d08:	01 50       	subi	r16, 0x01	; 1
       } 
     d0a:	fa 94       	dec	r15
     d0c:	d1 f6       	brne	.-76     	; 0xcc2
      while( --j );
      id++;                            // next byte
     d0e:	21 96       	adiw	r28, 0x01	; 1
    } 
     d10:	00 23       	and	r16, r16
     d12:	a9 f6       	brne	.-86     	; 0xcbe
   while( i );
   return next_diff;                  // to continue search
     d14:	8d 2d       	mov	r24, r13
     d16:	99 27       	eor	r25, r25
     d18:	df 91       	pop	r29
     d1a:	cf 91       	pop	r28
     d1c:	1f 91       	pop	r17
     d1e:	0f 91       	pop	r16
     d20:	ff 90       	pop	r15
     d22:	ef 90       	pop	r14
     d24:	df 90       	pop	r13
     d26:	08 95       	ret

00000d28 <ow_command>:
 }


void ow_command( uint8_t command, uint8_t *id )
 { uint8_t i;
     d28:	0f 93       	push	r16
     d2a:	1f 93       	push	r17
     d2c:	cf 93       	push	r28
     d2e:	df 93       	push	r29
     d30:	08 2f       	mov	r16, r24
     d32:	eb 01       	movw	r28, r22

   ow_reset();
     d34:	0e 94 61 05 	call	0xac2
   if( id ) 
     d38:	20 97       	sbiw	r28, 0x00	; 0
     d3a:	51 f0       	breq	.+20     	; 0xd50
    { ow_byte_wr( OW_MATCH_ROM );			// to a single device
     d3c:	85 e5       	ldi	r24, 0x55	; 85
     d3e:	0e 94 32 06 	call	0xc64
      i = OW_ROMCODE_SIZE;
     d42:	18 e0       	ldi	r17, 0x08	; 8
      do 
       { ow_byte_wr( *id );
     d44:	89 91       	ld	r24, Y+
     d46:	0e 94 32 06 	call	0xc64
         id++;
       } 
     d4a:	11 50       	subi	r17, 0x01	; 1
     d4c:	d9 f7       	brne	.-10     	; 0xd44
     d4e:	03 c0       	rjmp	.+6      	; 0xd56
      while( --i );
    } 
   else
      ow_byte_wr( OW_SKIP_ROM );			// to all devices
     d50:	8c ec       	ldi	r24, 0xCC	; 204
     d52:	0e 94 32 06 	call	0xc64

   ow_byte_wr( command );
     d56:	80 2f       	mov	r24, r16
     d58:	0e 94 32 06 	call	0xc64
     d5c:	df 91       	pop	r29
     d5e:	cf 91       	pop	r28
     d60:	1f 91       	pop	r17
     d62:	0f 91       	pop	r16
     d64:	08 95       	ret

00000d66 <delayloop32>:

#include "delay.h"

void delayloop32(uint32_t loops) 
 { __asm__ volatile (  "cp  %A0,__zero_reg__ \n\t"  \
     d66:	dc 01       	movw	r26, r24
     d68:	cb 01       	movw	r24, r22
     d6a:	81 15       	cp	r24, r1
     d6c:	91 05       	cpc	r25, r1
     d6e:	a1 05       	cpc	r26, r1
     d70:	b1 05       	cpc	r27, r1
     d72:	29 f0       	breq	.+10     	; 0xd7e

00000d74 <L_LOOP_5>:
     d74:	81 50       	subi	r24, 0x01	; 1
     d76:	90 40       	sbci	r25, 0x00	; 0
     d78:	a0 40       	sbci	r26, 0x00	; 0
     d7a:	b0 40       	sbci	r27, 0x00	; 0
     d7c:	d9 f7       	brne	.-10     	; 0xd74

00000d7e <L_Exit_5>:
     d7e:	08 95       	ret

00000d80 <DS18X20_uart_put_temp>:
#include "uart.h"

void DS18X20_uart_put_temp(const uint8_t subzero, 
   const uint8_t cel, 	const uint8_t cel_frac_bits)
 { uint8_t buffer[sizeof(int)*8+1];
     d80:	ef 92       	push	r14
     d82:	ff 92       	push	r15
     d84:	0f 93       	push	r16
     d86:	1f 93       	push	r17
     d88:	cf 93       	push	r28
     d8a:	df 93       	push	r29
     d8c:	cd b7       	in	r28, 0x3d	; 61
     d8e:	de b7       	in	r29, 0x3e	; 62
     d90:	61 97       	sbiw	r28, 0x11	; 17
     d92:	0f b6       	in	r0, 0x3f	; 63
     d94:	f8 94       	cli
     d96:	de bf       	out	0x3e, r29	; 62
     d98:	0f be       	out	0x3f, r0	; 63
     d9a:	cd bf       	out	0x3d, r28	; 61
     d9c:	16 2f       	mov	r17, r22
     d9e:	04 2f       	mov	r16, r20
   int i;

   uart_putc((subzero)?'-':'+');
     da0:	88 23       	and	r24, r24
     da2:	11 f0       	breq	.+4      	; 0xda8
     da4:	8d e2       	ldi	r24, 0x2D	; 45
     da6:	01 c0       	rjmp	.+2      	; 0xdaa
     da8:	8b e2       	ldi	r24, 0x2B	; 43
     daa:	0e 94 73 0b 	call	0x16e6
   uart_puti((int)cel);
     dae:	81 2f       	mov	r24, r17
     db0:	99 27       	eor	r25, r25
     db2:	0e 94 a6 0b 	call	0x174c
   uart_puts_P(".");
     db6:	8e ed       	ldi	r24, 0xDE	; 222
     db8:	93 e0       	ldi	r25, 0x03	; 3
     dba:	0e 94 94 0b 	call	0x1728
   itoa(cel_frac_bits*DS18X20_FRACCONV,buffer,10);
     dbe:	20 2f       	mov	r18, r16
     dc0:	33 27       	eor	r19, r19
     dc2:	4a e0       	ldi	r20, 0x0A	; 10
     dc4:	50 e0       	ldi	r21, 0x00	; 0
     dc6:	be 01       	movw	r22, r28
     dc8:	6f 5f       	subi	r22, 0xFF	; 255
     dca:	7f 4f       	sbci	r23, 0xFF	; 255
     dcc:	81 e7       	ldi	r24, 0x71	; 113
     dce:	92 e0       	ldi	r25, 0x02	; 2
     dd0:	28 9f       	mul	r18, r24
     dd2:	f0 01       	movw	r30, r0
     dd4:	29 9f       	mul	r18, r25
     dd6:	f0 0d       	add	r31, r0
     dd8:	38 9f       	mul	r19, r24
     dda:	f0 0d       	add	r31, r0
     ddc:	11 24       	eor	r1, r1
     dde:	cf 01       	movw	r24, r30
     de0:	0e 94 f6 0b 	call	0x17ec
   for (i=0;i<4-strlen(buffer);i++) uart_puts_P("0");
     de4:	8e 01       	movw	r16, r28
     de6:	0f 5f       	subi	r16, 0xFF	; 255
     de8:	1f 4f       	sbci	r17, 0xFF	; 255
     dea:	f8 01       	movw	r30, r16
     dec:	01 90       	ld	r0, Z+
     dee:	00 20       	and	r0, r0
     df0:	e9 f7       	brne	.-6      	; 0xdec
     df2:	35 97       	sbiw	r30, 0x05	; 5
     df4:	ee 24       	eor	r14, r14
     df6:	ff 24       	eor	r15, r15
     df8:	e0 17       	cp	r30, r16
     dfa:	f1 07       	cpc	r31, r17
     dfc:	a9 f0       	breq	.+42     	; 0xe28
     dfe:	80 ee       	ldi	r24, 0xE0	; 224
     e00:	93 e0       	ldi	r25, 0x03	; 3
     e02:	0e 94 94 0b 	call	0x1728
     e06:	08 94       	sec
     e08:	e1 1c       	adc	r14, r1
     e0a:	f1 1c       	adc	r15, r1
     e0c:	f8 01       	movw	r30, r16
     e0e:	01 90       	ld	r0, Z+
     e10:	00 20       	and	r0, r0
     e12:	e9 f7       	brne	.-6      	; 0xe0e
     e14:	31 97       	sbiw	r30, 0x01	; 1
     e16:	e0 1b       	sub	r30, r16
     e18:	f1 0b       	sbc	r31, r17
     e1a:	84 e0       	ldi	r24, 0x04	; 4
     e1c:	90 e0       	ldi	r25, 0x00	; 0
     e1e:	8e 1b       	sub	r24, r30
     e20:	9f 0b       	sbc	r25, r31
     e22:	e8 16       	cp	r14, r24
     e24:	f9 06       	cpc	r15, r25
     e26:	58 f3       	brcs	.-42     	; 0xdfe
   uart_puts(buffer);
     e28:	ce 01       	movw	r24, r28
     e2a:	01 96       	adiw	r24, 0x01	; 1
     e2c:	0e 94 85 0b 	call	0x170a
   uart_puts_P("癈");
     e30:	82 ee       	ldi	r24, 0xE2	; 226
     e32:	93 e0       	ldi	r25, 0x03	; 3
     e34:	0e 94 94 0b 	call	0x1728
     e38:	61 96       	adiw	r28, 0x11	; 17
     e3a:	0f b6       	in	r0, 0x3f	; 63
     e3c:	f8 94       	cli
     e3e:	de bf       	out	0x3e, r29	; 62
     e40:	0f be       	out	0x3f, r0	; 63
     e42:	cd bf       	out	0x3d, r28	; 61
     e44:	df 91       	pop	r29
     e46:	cf 91       	pop	r28
     e48:	1f 91       	pop	r17
     e4a:	0f 91       	pop	r16
     e4c:	ff 90       	pop	r15
     e4e:	ef 90       	pop	r14
     e50:	08 95       	ret

00000e52 <DS18X20_show_id_uart>:
 }

void D

⌨️ 快捷键说明

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