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

📄 gvgledtest.lss

📁 建立在AVR基础上的测试LED数码管电压表
💻 LSS
📖 第 1 页 / 共 2 页
字号:

GvgLedTest.elf:     file format elf32-avr

Sections:
Idx Name          Size      VMA       LMA       File off  Algn
  0 .text         000003e0  00000000  00000000  00000094  2**0
                  CONTENTS, ALLOC, LOAD, READONLY, CODE
  1 .data         0000001e  00800060  000003e0  00000474  2**0
                  CONTENTS, ALLOC, LOAD, DATA
  2 .bss          00000015  0080007e  0080007e  00000492  2**0
                  ALLOC
  3 .noinit       00000000  00800093  00800093  00000492  2**0
                  CONTENTS
  4 .eeprom       00000000  00810000  00810000  00000492  2**0
                  CONTENTS
  5 .stab         00000f18  00000000  00000000  00000494  2**2
                  CONTENTS, READONLY, DEBUGGING
  6 .stabstr      0000094d  00000000  00000000  000013ac  2**0
                  CONTENTS, READONLY, DEBUGGING
Disassembly of section .text:

00000000 <__vectors>:
   0:	1f c0       	rjmp	.+62     	; 0x40
   2:	37 c0       	rjmp	.+110    	; 0x72
   4:	6f c0       	rjmp	.+222    	; 0xe4
   6:	98 c0       	rjmp	.+304    	; 0x138
   8:	34 c0       	rjmp	.+104    	; 0x72
   a:	33 c0       	rjmp	.+102    	; 0x72
   c:	32 c0       	rjmp	.+100    	; 0x72
   e:	31 c0       	rjmp	.+98     	; 0x72
  10:	30 c0       	rjmp	.+96     	; 0x72
  12:	2f c0       	rjmp	.+94     	; 0x72

00000014 <Display_Code>:
  14:	3f 06 5b 4f 66 6d 7d 07 7f 6f 00 00 00 00 00 00     ?.[Ofm}..o......
  24:	00 77 7c 39 5e 79 71 7d 76 30 0f 00 38 00 37 3f     .w|9^yq}v0..8.7?
  34:	73 67 50 6d 4e 3e 00 00 00 6e 00 00                 sgPmN>...n..

00000040 <__init>:
  40:	11 24       	eor	r1, r1
  42:	1f be       	out	0x3f, r1	; 63
  44:	cf e9       	ldi	r28, 0x9F	; 159
  46:	cd bf       	out	0x3d, r28	; 61

00000048 <__do_copy_data>:
  48:	10 e0       	ldi	r17, 0x00	; 0
  4a:	a0 e6       	ldi	r26, 0x60	; 96
  4c:	b0 e0       	ldi	r27, 0x00	; 0
  4e:	e0 ee       	ldi	r30, 0xE0	; 224
  50:	f3 e0       	ldi	r31, 0x03	; 3
  52:	03 c0       	rjmp	.+6      	; 0x5a

00000054 <.do_copy_data_loop>:
  54:	c8 95       	lpm
  56:	31 96       	adiw	r30, 0x01	; 1
  58:	0d 92       	st	X+, r0

0000005a <.do_copy_data_start>:
  5a:	ae 37       	cpi	r26, 0x7E	; 126
  5c:	b1 07       	cpc	r27, r17
  5e:	d1 f7       	brne	.-12     	; 0x54

00000060 <__do_clear_bss>:
  60:	10 e0       	ldi	r17, 0x00	; 0
  62:	ae e7       	ldi	r26, 0x7E	; 126
  64:	b0 e0       	ldi	r27, 0x00	; 0
  66:	01 c0       	rjmp	.+2      	; 0x6a

00000068 <.do_clear_bss_loop>:
  68:	1d 92       	st	X+, r1

0000006a <.do_clear_bss_start>:
  6a:	a3 39       	cpi	r26, 0x93	; 147
  6c:	b1 07       	cpc	r27, r17
  6e:	e1 f7       	brne	.-8      	; 0x68
  70:	76 c0       	rjmp	.+236    	; 0x15e

00000072 <__bad_interrupt>:
  72:	c6 cf       	rjmp	.-116    	; 0x0

00000074 <INIT>:
============================================================*/
void INIT(void)
{
	//Settings DATA\ SCK\ STB\ LED is OUTPUT and IR\ RESET is INPUT
	DDRB = (1<<DATA)|(1<<SCK)|(1<<STB)|(1<<LED);
  74:	87 e1       	ldi	r24, 0x17	; 23
  76:	87 bb       	out	0x17, r24	; 23
	
	PORTB = 0xFF;
  78:	8f ef       	ldi	r24, 0xFF	; 255
  7a:	88 bb       	out	0x18, r24	; 24
	
	TIMSK0 = (1<<TOIE0);				//T/C0 
  7c:	82 e0       	ldi	r24, 0x02	; 2
  7e:	89 bf       	out	0x39, r24	; 57
	TCCR0B = (1<< CS02)|(1<<CS00);
  80:	85 e0       	ldi	r24, 0x05	; 5
  82:	83 bf       	out	0x33, r24	; 51
	TCNT0 =  0x41;
  84:	81 e4       	ldi	r24, 0x41	; 65
  86:	82 bf       	out	0x32, r24	; 50
	sei();							// all interrupt is enabled
  88:	78 94       	sei
#ifdef ADCEN
	ADMUX = (1<<ADLAR)|(1<<MUX1)|(1<<MUX0);
#else
	GIMSK = (1<<PCIE);				// pin change interrupt is enabled 
  8a:	80 e2       	ldi	r24, 0x20	; 32
  8c:	8b bf       	out	0x3b, r24	; 59
	PCMSK = (1<<PCINT3);			// select I/O pin of pin chang interrupt	
  8e:	88 e0       	ldi	r24, 0x08	; 8
  90:	85 bb       	out	0x15, r24	; 21
  92:	08 95       	ret

00000094 <Key_Prog>:
#endif

}
//*****************************************************************************

/*============================================================

============================================================*/
#ifdef ADCEN
void Voltage_detect(void)
	{
	 unsigned char i;
	 
	ADCSRA = (1<<ADEN)|(1<<ADSC);
	while(ADCSRA & (1<<ADSC))
		{
		;
		}
	
//	for(i=0;i<30;i++);
	Display_All_Bit(0x00);
	Display_data[2]=ADCH;
	if(ADCH & 0x80)	
		{
		Display_data[1] = 0x01;
		}
	else 	
		{
		Display_data[1] =0x00;
		}
	if(ADCH >= 0xA5)
		{
		if(ADCH <= 0xC6)
			{
			if(ADC_value<= 255)	
				{
				ADC_value++;
				}
			}
		else ADC_value= 0;
	
		}
	if(ADC_value>= 1)	
		{
		PORTB &= ~(1<<LED);
		}
	else 
		{
		PORTB |= (1<<LED);
		}
	}

#endif

/*============================================================

============================================================*/
void Key_Prog(void)
{
//if(Key_data == 0x00)
//	PORTB |= LED;
//else
//	PORTB &= ~LED;	

/////////////////////////////////////////////////////////////////
if(Key_data != 0xFF)
  94:	90 91 90 00 	lds	r25, 0x0090
  98:	80 91 91 00 	lds	r24, 0x0091
  9c:	9f 3f       	cpi	r25, 0xFF	; 255
  9e:	e9 f0       	breq	.+58     	; 0xda
	{
	if(Bit_make&(1<<Bit_make_Key) )
  a0:	82 ff       	sbrs	r24, 2
  a2:	17 c0       	rjmp	.+46     	; 0xd2
		{
//		Display(Key_data);
		switch(Key_data)
  a4:	89 2f       	mov	r24, r25
  a6:	99 27       	eor	r25, r25
  a8:	83 30       	cpi	r24, 0x03	; 3
  aa:	91 05       	cpc	r25, r1
  ac:	61 f0       	breq	.+24     	; 0xc6
  ae:	84 30       	cpi	r24, 0x04	; 4
  b0:	91 05       	cpc	r25, r1
  b2:	1c f4       	brge	.+6      	; 0xba
  b4:	89 2b       	or	r24, r25
  b6:	21 f0       	breq	.+8      	; 0xc0
  b8:	0c c0       	rjmp	.+24     	; 0xd2
  ba:	08 97       	sbiw	r24, 0x08	; 8
  bc:	39 f0       	breq	.+14     	; 0xcc
  be:	09 c0       	rjmp	.+18     	; 0xd2
			{
			case 00:
				Display(":OFF::::8");
  c0:	80 e6       	ldi	r24, 0x60	; 96
  c2:	90 e0       	ldi	r25, 0x00	; 0
  c4:	05 c0       	rjmp	.+10     	; 0xd0
				break;
//			case 02:
//				Display("2");
//				break;
			case 03:
				Display("OPEN:::8:");
  c6:	8a e6       	ldi	r24, 0x6A	; 106
  c8:	90 e0       	ldi	r25, 0x00	; 0
  ca:	02 c0       	rjmp	.+4      	; 0xd0
				break;
//			case 05:
//				Display("5");
//				break;
			case 010:
				Display("NODISC8::");
  cc:	84 e7       	ldi	r24, 0x74	; 116
  ce:	90 e0       	ldi	r25, 0x00	; 0
  d0:	ad d0       	rcall	.+346    	; 0x22c
				break;
//			case 012:
//				Display("A");
//				break;
			default:
				break;
			}
		}
	Bit_make&= ~(1<<Bit_make_Key);	
  d2:	80 91 91 00 	lds	r24, 0x0091
  d6:	8b 7f       	andi	r24, 0xFB	; 251
  d8:	01 c0       	rjmp	.+2      	; 0xdc
	}

else		
	Bit_make|=(1<<Bit_make_Key);
  da:	84 60       	ori	r24, 0x04	; 4
  dc:	80 93 91 00 	sts	0x0091, r24
  e0:	08 95       	ret
  e2:	08 95       	ret

000000e4 <__vector_2>:
}

/*===========================================================


===========================================================*/
SIGNAL(SIG_PIN_CHANGE0)
	{
  e4:	1f 92       	push	r1
  e6:	0f 92       	push	r0
  e8:	0f b6       	in	r0, 0x3f	; 63
  ea:	0f 92       	push	r0
  ec:	11 24       	eor	r1, r1
  ee:	2f 93       	push	r18
  f0:	3f 93       	push	r19
  f2:	4f 93       	push	r20
  f4:	5f 93       	push	r21
  f6:	6f 93       	push	r22
  f8:	7f 93       	push	r23
  fa:	8f 93       	push	r24
  fc:	9f 93       	push	r25
  fe:	af 93       	push	r26
 100:	bf 93       	push	r27
 102:	ef 93       	push	r30
 104:	ff 93       	push	r31
	IR_Value=IR_Value_Read();
 106:	1b d1       	rcall	.+566    	; 0x33e
 108:	80 93 92 00 	sts	0x0092, r24
	Display_data[2]=IR_Value;
 10c:	80 93 80 00 	sts	0x0080, r24
	GIFR|=(1<<PCIF);
 110:	8a b7       	in	r24, 0x3a	; 58
 112:	80 62       	ori	r24, 0x20	; 32
 114:	8a bf       	out	0x3a, r24	; 58
 116:	ff 91       	pop	r31
 118:	ef 91       	pop	r30
 11a:	bf 91       	pop	r27
 11c:	af 91       	pop	r26
 11e:	9f 91       	pop	r25
 120:	8f 91       	pop	r24
 122:	7f 91       	pop	r23
 124:	6f 91       	pop	r22
 126:	5f 91       	pop	r21
 128:	4f 91       	pop	r20
 12a:	3f 91       	pop	r19
 12c:	2f 91       	pop	r18
 12e:	0f 90       	pop	r0
 130:	0f be       	out	0x3f, r0	; 63
 132:	0f 90       	pop	r0
 134:	1f 90       	pop	r1
 136:	18 95       	reti

00000138 <__vector_3>:
	}
/*============================================================


============================================================*/

SIGNAL(SIG_OVERFLOW0)
	{
 138:	1f 92       	push	r1
 13a:	0f 92       	push	r0
 13c:	0f b6       	in	r0, 0x3f	; 63
 13e:	0f 92       	push	r0
 140:	11 24       	eor	r1, r1
 142:	8f 93       	push	r24
	TCNT0 =  0x41;
 144:	81 e4       	ldi	r24, 0x41	; 65
 146:	82 bf       	out	0x32, r24	; 50
	Bit_make|=(1<<Bit_make_Display);
 148:	80 91 91 00 	lds	r24, 0x0091
 14c:	82 60       	ori	r24, 0x02	; 2
 14e:	80 93 91 00 	sts	0x0091, r24
 152:	8f 91       	pop	r24
 154:	0f 90       	pop	r0
 156:	0f be       	out	0x3f, r0	; 63
 158:	0f 90       	pop	r0
 15a:	1f 90       	pop	r1
 15c:	18 95       	reti

0000015e <main>:
	}

/*============================================================


============================================================*/
int main(void)
{
 15e:	cf e9       	ldi	r28, 0x9F	; 159
 160:	d0 e0       	ldi	r29, 0x00	; 0
 162:	de bf       	out	0x3e, r29	; 62
 164:	cd bf       	out	0x3d, r28	; 61
INIT();
 166:	86 df       	rcall	.-244    	; 0x74
while(1)
	{
	if(Bit_make&(1<<Bit_make_Display))
 168:	80 91 91 00 	lds	r24, 0x0091
 16c:	81 ff       	sbrs	r24, 1
 16e:	fc cf       	rjmp	.-8      	; 0x168
		{	
		PORTB ^=(1<<LED);
 170:	88 b3       	in	r24, 0x18	; 24
 172:	10 e1       	ldi	r17, 0x10	; 16
 174:	81 27       	eor	r24, r17
 176:	88 bb       	out	0x18, r24	; 24
		Key_data=V_Kay_Scan();
 178:	46 d0       	rcall	.+140    	; 0x206
 17a:	80 93 90 00 	sts	0x0090, r24
		V_DISPLAYDATA_SEND(); 
 17e:	17 d0       	rcall	.+46     	; 0x1ae
		Key_Prog();
 180:	89 df       	rcall	.-238    	; 0x94


		#ifdef ADCEN
			if(Bit_make & (1<<Bit_make_ADC))
				{
				Voltage_detect();
				}
		#endif;
		
		PORTB ^=(1<<LED);		
 182:	88 b3       	in	r24, 0x18	; 24
 184:	81 27       	eor	r24, r17
 186:	88 bb       	out	0x18, r24	; 24
		Bit_make&=~(1<<Bit_make_Display);		
 188:	80 91 91 00 	lds	r24, 0x0091
 18c:	8d 7f       	andi	r24, 0xFD	; 253
 18e:	80 93 91 00 	sts	0x0091, r24
 192:	ea cf       	rjmp	.-44     	; 0x168

00000194 <V_SPI_SEND>:
FUNCTION:

============================================================*/
void V_SPI_SEND(unsigned char data)
	{
 194:	97 e0       	ldi	r25, 0x07	; 7
	unsigned char i,outdata;
	outdata = data;
	for(i=0;	i<8;	i++)
		{
		if (outdata & 0x01)
 196:	80 ff       	sbrs	r24, 0
 198:	02 c0       	rjmp	.+4      	; 0x19e
			PORTB |= (1<<DATA);
 19a:	c1 9a       	sbi	0x18, 1	; 24
 19c:	01 c0       	rjmp	.+2      	; 0x1a0
		else
			PORTB &= ~(1<<DATA);
 19e:	c1 98       	cbi	0x18, 1	; 24
		PORTB &= ~(1<<SCK);
 1a0:	c2 98       	cbi	0x18, 2	; 24
		PORTB |= (1<<SCK);
 1a2:	c2 9a       	sbi	0x18, 2	; 24
		outdata >>= 1;
 1a4:	86 95       	lsr	r24
 1a6:	91 50       	subi	r25, 0x01	; 1
 1a8:	97 ff       	sbrs	r25, 7
 1aa:	f5 cf       	rjmp	.-22     	; 0x196
 1ac:	08 95       	ret

000001ae <V_DISPLAYDATA_SEND>:
		}
	}

/*============================================================
FUNCTION:	Display data send out

============================================================*/
void V_DISPLAYDATA_SEND(void)

⌨️ 快捷键说明

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