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

📄 pran.lss

📁 asm file for download
💻 LSS
📖 第 1 页 / 共 2 页
字号:

pran.elf:     file format elf32-avr

Sections:
Idx Name          Size      VMA       LMA       File off  Algn
  0 .text         0000049c  00000000  00000000  00000094  2**1
                  CONTENTS, ALLOC, LOAD, READONLY, CODE
  1 .data         00000006  00800060  0000049c  00000530  2**0
                  CONTENTS, ALLOC, LOAD, DATA
  2 .bss          0000000a  00800066  00800066  00000536  2**0
                  ALLOC
  3 .stab         00000de0  00000000  00000000  00000538  2**2
                  CONTENTS, READONLY, DEBUGGING
  4 .stabstr      00000c82  00000000  00000000  00001318  2**0
                  CONTENTS, READONLY, DEBUGGING
Disassembly of section .text:

00000000 <__vectors>:
   0:	28 c0       	rjmp	.+80     	; 0x52
   2:	53 c0       	rjmp	.+166    	; 0xaa
   4:	41 c0       	rjmp	.+130    	; 0x88
   6:	40 c0       	rjmp	.+128    	; 0x88
   8:	3f c0       	rjmp	.+126    	; 0x88
   a:	3e c0       	rjmp	.+124    	; 0x88
   c:	08 c1       	rjmp	.+528    	; 0x21e
   e:	3c c0       	rjmp	.+120    	; 0x88
  10:	74 c1       	rjmp	.+744    	; 0x2fa
  12:	3a c0       	rjmp	.+116    	; 0x88
  14:	39 c0       	rjmp	.+114    	; 0x88
  16:	38 c0       	rjmp	.+112    	; 0x88
  18:	37 c0       	rjmp	.+110    	; 0x88
  1a:	36 c0       	rjmp	.+108    	; 0x88
  1c:	35 c0       	rjmp	.+106    	; 0x88
  1e:	34 c0       	rjmp	.+104    	; 0x88
  20:	33 c0       	rjmp	.+102    	; 0x88
  22:	32 c0       	rjmp	.+100    	; 0x88
  24:	31 c0       	rjmp	.+98     	; 0x88
  26:	30 c0       	rjmp	.+96     	; 0x88
  28:	2f c0       	rjmp	.+94     	; 0x88
  2a:	a5 c1       	rjmp	.+842    	; 0x376
  2c:	a6 c1       	rjmp	.+844    	; 0x37a
  2e:	a7 c1       	rjmp	.+846    	; 0x37e
  30:	a8 c1       	rjmp	.+848    	; 0x382
  32:	a9 c1       	rjmp	.+850    	; 0x386
  34:	aa c1       	rjmp	.+852    	; 0x38a
  36:	ab c1       	rjmp	.+854    	; 0x38e
  38:	ac c1       	rjmp	.+856    	; 0x392
  3a:	ad c1       	rjmp	.+858    	; 0x396
  3c:	ae c1       	rjmp	.+860    	; 0x39a
  3e:	bc c1       	rjmp	.+888    	; 0x3b8
  40:	bd c1       	rjmp	.+890    	; 0x3bc
  42:	be c1       	rjmp	.+892    	; 0x3c0
  44:	bf c1       	rjmp	.+894    	; 0x3c4
  46:	c0 c1       	rjmp	.+896    	; 0x3c8
  48:	c1 c1       	rjmp	.+898    	; 0x3cc
  4a:	c2 c1       	rjmp	.+900    	; 0x3d0
  4c:	c3 c1       	rjmp	.+902    	; 0x3d4
  4e:	c4 c1       	rjmp	.+904    	; 0x3d8
  50:	c5 c1       	rjmp	.+906    	; 0x3dc

00000052 <__ctors_end>:
  52:	11 24       	eor	r1, r1
  54:	1f be       	out	0x3f, r1	; 63
  56:	cf e5       	ldi	r28, 0x5F	; 95
  58:	d2 e0       	ldi	r29, 0x02	; 2
  5a:	de bf       	out	0x3e, r29	; 62
  5c:	cd bf       	out	0x3d, r28	; 61

0000005e <__do_copy_data>:
  5e:	10 e0       	ldi	r17, 0x00	; 0
  60:	a0 e6       	ldi	r26, 0x60	; 96
  62:	b0 e0       	ldi	r27, 0x00	; 0
  64:	ec e9       	ldi	r30, 0x9C	; 156
  66:	f4 e0       	ldi	r31, 0x04	; 4
  68:	02 c0       	rjmp	.+4      	; 0x6e

0000006a <.do_copy_data_loop>:
  6a:	05 90       	lpm	r0, Z+
  6c:	0d 92       	st	X+, r0

0000006e <.do_copy_data_start>:
  6e:	a6 36       	cpi	r26, 0x66	; 102
  70:	b1 07       	cpc	r27, r17
  72:	d9 f7       	brne	.-10     	; 0x6a

00000074 <__do_clear_bss>:
  74:	10 e0       	ldi	r17, 0x00	; 0
  76:	a6 e6       	ldi	r26, 0x66	; 102
  78:	b0 e0       	ldi	r27, 0x00	; 0
  7a:	01 c0       	rjmp	.+2      	; 0x7e

0000007c <.do_clear_bss_loop>:
  7c:	1d 92       	st	X+, r1

0000007e <.do_clear_bss_start>:
  7e:	a0 37       	cpi	r26, 0x70	; 112
  80:	b1 07       	cpc	r27, r17
  82:	e1 f7       	brne	.-8      	; 0x7c
  84:	d5 d1       	rcall	.+938    	; 0x430
  86:	09 c2       	rjmp	.+1042   	; 0x49a

00000088 <__bad_interrupt>:
  88:	bb cf       	rjmp	.-138    	; 0x0

0000008a <io_init>:

static void io_init(void)
{
	// PortB		//output port
	PORTB = 0xff;
  8a:	8f ef       	ldi	r24, 0xFF	; 255
  8c:	88 bb       	out	0x18, r24	; 24
	DDRB = 0xff;
  8e:	87 bb       	out	0x17, r24	; 23
	// PortC		//output port
	PORTC = 0xff;
  90:	85 bb       	out	0x15, r24	; 21
	DDRC = 0xff;
  92:	84 bb       	out	0x14, r24	; 20
	// PortA		//input port
	PORTA = 0xff;
  94:	8b bb       	out	0x1b, r24	; 27
	DDRA = 0x0;	
  96:	1a ba       	out	0x1a, r1	; 26
	// PortD	//output port(PORTD2) and input port as interrupt is to be recieved
	PORTD = 0x0;		
  98:	12 ba       	out	0x12, r1	; 18
	DDRD = 0xfb;
  9a:	8b ef       	ldi	r24, 0xFB	; 251
  9c:	81 bb       	out	0x11, r24	; 17
}
  9e:	08 95       	ret

000000a0 <extint_init>:

void extint_init(void)
{
	// INT0 Enabled, Mode: Falling Edge
	MCUCR = 0x02;
  a0:	82 e0       	ldi	r24, 0x02	; 2
  a2:	85 bf       	out	0x35, r24	; 53
	GICR = 0x40;	
  a4:	80 e4       	ldi	r24, 0x40	; 64
  a6:	8b bf       	out	0x3b, r24	; 59
}
  a8:	08 95       	ret

000000aa <__vector_1>:

ISR(SIG_INTERRUPT0)
{
  aa:	1f 92       	push	r1
  ac:	0f 92       	push	r0
  ae:	0f b6       	in	r0, 0x3f	; 63
  b0:	0f 92       	push	r0
  b2:	11 24       	eor	r1, r1
  b4:	2f 93       	push	r18
  b6:	3f 93       	push	r19
  b8:	4f 93       	push	r20
  ba:	5f 93       	push	r21
  bc:	6f 93       	push	r22
  be:	7f 93       	push	r23
  c0:	8f 93       	push	r24
  c2:	9f 93       	push	r25
  c4:	af 93       	push	r26
  c6:	bf 93       	push	r27
  c8:	cf 93       	push	r28
  ca:	df 93       	push	r29
  cc:	ef 93       	push	r30
  ce:	ff 93       	push	r31
	int led;	

	/*
	All input switches will connected to their corresponding port lines, and also all 
	switches will be connnected to PORTD2 (pin no. 16).
	*/
	
	// INT0 Enabled, Mode: Falling Edge		
	led = PINA;
  d0:	89 b3       	in	r24, 0x19	; 25
  d2:	c8 2f       	mov	r28, r24
  d4:	dd 27       	eor	r29, r29
	MCUCR = 0x02;
  d6:	82 e0       	ldi	r24, 0x02	; 2
  d8:	85 bf       	out	0x35, r24	; 53
	GICR = 0x40;	
  da:	80 e4       	ldi	r24, 0x40	; 64
  dc:	8b bf       	out	0x3b, r24	; 59

	if(led == 254)		//if switch to 'increase the count' is pressed, PORTA0 (pin no. 40)
  de:	ce 3f       	cpi	r28, 0xFE	; 254
  e0:	d1 05       	cpc	r29, r1
  e2:	81 f4       	brne	.+32     	; 0x104
	{
		if(count != 9)   {
  e4:	80 91 66 00 	lds	r24, 0x0066
  e8:	90 91 67 00 	lds	r25, 0x0067
  ec:	89 30       	cpi	r24, 0x09	; 9
  ee:	91 05       	cpc	r25, r1
  f0:	31 f0       	breq	.+12     	; 0xfe
		   count++;
  f2:	01 96       	adiw	r24, 0x01	; 1
  f4:	90 93 67 00 	sts	0x0067, r25
  f8:	80 93 66 00 	sts	0x0066, r24
		   decode_count(count);
  fc:	73 d1       	rcall	.+742    	; 0x3e4
		}
		sei();		
  fe:	78 94       	sei
		PORTA = 0xff;
 100:	8f ef       	ldi	r24, 0xFF	; 255
 102:	8b bb       	out	0x1b, r24	; 27
	}		
	
	if(led == 253)		//if switch to 'decrease the count' is pressed, PORTA1 (pin no. 39)
 104:	cd 3f       	cpi	r28, 0xFD	; 253
 106:	d1 05       	cpc	r29, r1
 108:	79 f4       	brne	.+30     	; 0x128
	{
		if(count != 0)   {
 10a:	80 91 66 00 	lds	r24, 0x0066
 10e:	90 91 67 00 	lds	r25, 0x0067
 112:	00 97       	sbiw	r24, 0x00	; 0
 114:	31 f0       	breq	.+12     	; 0x122
		   count--;
 116:	01 97       	sbiw	r24, 0x01	; 1
 118:	90 93 67 00 	sts	0x0067, r25
 11c:	80 93 66 00 	sts	0x0066, r24
		   decode_count(count);
 120:	61 d1       	rcall	.+706    	; 0x3e4
		}
		sei();	
 122:	78 94       	sei
		PORTA = 0xff;	
 124:	8f ef       	ldi	r24, 0xFF	; 255
 126:	8b bb       	out	0x1b, r24	; 27
	}		
	
	if(led == 251)			//if switch to 'start the timer' is pressed, PORTA2 (pin no. 38)
 128:	cb 3f       	cpi	r28, 0xFB	; 251
 12a:	d1 05       	cpc	r29, r1
 12c:	61 f4       	brne	.+24     	; 0x146
	{
	   if(count != 0)
 12e:	80 91 66 00 	lds	r24, 0x0066
 132:	90 91 67 00 	lds	r25, 0x0067
 136:	89 2b       	or	r24, r25
 138:	31 f0       	breq	.+12     	; 0x146
	   {
		   timers_init();
 13a:	64 d0       	rcall	.+200    	; 0x204
		
		   PORTA = 0x00;		//As the 'start timer' button is pressed, all keys will be deactivated.
 13c:	1b ba       	out	0x1b, r1	; 27
		   PORTA = 0xff;
 13e:	8f ef       	ldi	r24, 0xFF	; 255
 140:	8b bb       	out	0x1b, r24	; 27
		   PORTD = 0x0;		
 142:	12 ba       	out	0x12, r1	; 18
		   DDRD = 0xff;
 144:	81 bb       	out	0x11, r24	; 17
	   }
	}
	
	if(led == 247)	//if switch to 'increase buzzer delay' is pressed, PORTA3 (pin no. 37)
 146:	c7 3f       	cpi	r28, 0xF7	; 247
 148:	d1 05       	cpc	r29, r1
 14a:	81 f4       	brne	.+32     	; 0x16c
	{	
		if(buzzer_setting != 2)   {
 14c:	80 91 6c 00 	lds	r24, 0x006C
 150:	90 91 6d 00 	lds	r25, 0x006D
 154:	82 30       	cpi	r24, 0x02	; 2
 156:	91 05       	cpc	r25, r1
 158:	31 f0       	breq	.+12     	; 0x166
		   buzzer_setting++;		
 15a:	01 96       	adiw	r24, 0x01	; 1
 15c:	90 93 6d 00 	sts	0x006D, r25
 160:	80 93 6c 00 	sts	0x006C, r24
		   temp(buzzer_setting);
 164:	28 d0       	rcall	.+80     	; 0x1b6
		} 
		sei();		
 166:	78 94       	sei
		PORTA = 0xff;
 168:	8f ef       	ldi	r24, 0xFF	; 255
 16a:	8b bb       	out	0x1b, r24	; 27
	}
	
	if(led == 239)	//if switch to 'decrease buzzer delay' is pressed, PORTA4 (pin no. 36)
 16c:	cf 3e       	cpi	r28, 0xEF	; 239
 16e:	d1 05       	cpc	r29, r1
 170:	79 f4       	brne	.+30     	; 0x190
	{
		if(buzzer_setting != 0)   {
 172:	80 91 6c 00 	lds	r24, 0x006C
 176:	90 91 6d 00 	lds	r25, 0x006D
 17a:	00 97       	sbiw	r24, 0x00	; 0
 17c:	31 f0       	breq	.+12     	; 0x18a
		   buzzer_setting--;		
 17e:	01 97       	sbiw	r24, 0x01	; 1
 180:	90 93 6d 00 	sts	0x006D, r25
 184:	80 93 6c 00 	sts	0x006C, r24
		   temp(buzzer_setting);
 188:	16 d0       	rcall	.+44     	; 0x1b6
		} 
		sei();	
 18a:	78 94       	sei
		PORTA = 0xff;
 18c:	8f ef       	ldi	r24, 0xFF	; 255
 18e:	8b bb       	out	0x1b, r24	; 27
	}	
}
 190:	ff 91       	pop	r31
 192:	ef 91       	pop	r30
 194:	df 91       	pop	r29
 196:	cf 91       	pop	r28
 198:	bf 91       	pop	r27
 19a:	af 91       	pop	r26
 19c:	9f 91       	pop	r25
 19e:	8f 91       	pop	r24
 1a0:	7f 91       	pop	r23
 1a2:	6f 91       	pop	r22
 1a4:	5f 91       	pop	r21
 1a6:	4f 91       	pop	r20
 1a8:	3f 91       	pop	r19
 1aa:	2f 91       	pop	r18
 1ac:	0f 90       	pop	r0
 1ae:	0f be       	out	0x3f, r0	; 63
 1b0:	0f 90       	pop	r0
 1b2:	1f 90       	pop	r1
 1b4:	18 95       	reti

000001b6 <temp>:

void temp(int te)   {
		
	if(te == 0)   {
 1b6:	00 97       	sbiw	r24, 0x00	; 0
 1b8:	29 f4       	brne	.+10     	; 0x1c4
		PORTB = 0x01;
 1ba:	81 e0       	ldi	r24, 0x01	; 1
 1bc:	88 bb       	out	0x18, r24	; 24
		offtime = 3;
 1be:	83 e0       	ldi	r24, 0x03	; 3
 1c0:	90 e0       	ldi	r25, 0x00	; 0
 1c2:	07 c0       	rjmp	.+14     	; 0x1d2
		offtimetemp = 3;
	}
	
	else if(te == 1)   {
 1c4:	81 30       	cpi	r24, 0x01	; 1
 1c6:	91 05       	cpc	r25, r1
 1c8:	69 f4       	brne	.+26     	; 0x1e4
		PORTB = 0x02;
 1ca:	82 e0       	ldi	r24, 0x02	; 2
 1cc:	88 bb       	out	0x18, r24	; 24
		offtime = 4;
 1ce:	84 e0       	ldi	r24, 0x04	; 4
 1d0:	90 e0       	ldi	r25, 0x00	; 0
 1d2:	90 93 61 00 	sts	0x0061, r25
 1d6:	80 93 60 00 	sts	0x0060, r24
		offtimetemp = 4;
 1da:	90 93 63 00 	sts	0x0063, r25
 1de:	80 93 62 00 	sts	0x0062, r24
	}
	
	else if(te == 2)   {
		PORTB = 0x04;
		offtime = 5;
		offtimetemp = 5;
	}	
}
 1e2:	08 95       	ret
 1e4:	02 97       	sbiw	r24, 0x02	; 2
 1e6:	61 f4       	brne	.+24     	; 0x200
 1e8:	84 e0       	ldi	r24, 0x04	; 4
 1ea:	88 bb       	out	0x18, r24	; 24
 1ec:	85 e0       	ldi	r24, 0x05	; 5
 1ee:	90 e0       	ldi	r25, 0x00	; 0
 1f0:	90 93 61 00 	sts	0x0061, r25
 1f4:	80 93 60 00 	sts	0x0060, r24
 1f8:	90 93 63 00 	sts	0x0063, r25
 1fc:	80 93 62 00 	sts	0x0062, r24
 200:	08 95       	ret
 202:	08 95       	ret

00000204 <timers_init>:

void timers_init(void)
{
	// Timer/Counter1 Clock source: T1 Falling Edge
	// Timer/Counter1 Mode: Normal
	// Timer/Counter1 Output: A: Disconnected, B: Disconnected		//0.5 second
	OCR1A = 0x1e84;
 204:	84 e8       	ldi	r24, 0x84	; 132
 206:	9e e1       	ldi	r25, 0x1E	; 30
 208:	9b bd       	out	0x2b, r25	; 43
 20a:	8a bd       	out	0x2a, r24	; 42
	TCNT1 = 0xe17c;
 20c:	8c e7       	ldi	r24, 0x7C	; 124
 20e:	91 ee       	ldi	r25, 0xE1	; 225
 210:	9d bd       	out	0x2d, r25	; 45
 212:	8c bd       	out	0x2c, r24	; 44
	TCCR1B = 0x04;
 214:	84 e0       	ldi	r24, 0x04	; 4
 216:	8e bd       	out	0x2e, r24	; 46
	TIMSK = 0x14;
 218:	84 e1       	ldi	r24, 0x14	; 20
 21a:	89 bf       	out	0x39, r24	; 57
}
 21c:	08 95       	ret

0000021e <__vector_6>:

ISR(SIG_OUTPUT_COMPARE1A)
{
 21e:	1f 92       	push	r1
 220:	0f 92       	push	r0
 222:	0f b6       	in	r0, 0x3f	; 63
 224:	0f 92       	push	r0
 226:	11 24       	eor	r1, r1
 228:	2f 93       	push	r18
 22a:	3f 93       	push	r19
 22c:	4f 93       	push	r20
 22e:	5f 93       	push	r21
 230:	6f 93       	push	r22
 232:	7f 93       	push	r23
 234:	8f 93       	push	r24
 236:	9f 93       	push	r25
 238:	af 93       	push	r26
 23a:	bf 93       	push	r27
 23c:	ef 93       	push	r30
 23e:	ff 93       	push	r31
	int i;
	
	// Timer/Counter1 Clock source: T1 Falling Edge
	// Timer/Counter1 Mode: Normal
	// Timer/Counter1 Output: A: Disconnected, B: Disconnected
	timer_count++;			
 240:	20 91 68 00 	lds	r18, 0x0068
 244:	30 91 69 00 	lds	r19, 0x0069
 248:	2f 5f       	subi	r18, 0xFF	; 255
 24a:	3f 4f       	sbci	r19, 0xFF	; 255
 24c:	30 93 69 00 	sts	0x0069, r19
 250:	20 93 68 00 	sts	0x0068, r18
	

⌨️ 快捷键说明

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