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

📄 main.lss

📁 AVR_DEMO测试程序
💻 LSS
📖 第 1 页 / 共 3 页
字号:

main.elf:     file format elf32-avr

Sections:
Idx Name          Size      VMA       LMA       File off  Algn
  0 .text         00000436  00000000  00000000  00000094  2**0
                  CONTENTS, ALLOC, LOAD, READONLY, CODE
  1 .data         00000028  00800060  00000436  000004ca  2**0
                  CONTENTS, ALLOC, LOAD, DATA
  2 .bss          0000000a  00800088  00800088  000004f2  2**0
                  ALLOC
  3 .noinit       00000000  00800092  00800092  000004f2  2**0
                  CONTENTS
  4 .eeprom       00000000  00810000  00810000  000004f2  2**0
                  CONTENTS
  5 .debug_aranges 00000014  00000000  00000000  000004f2  2**0
                  CONTENTS, READONLY, DEBUGGING
  6 .debug_pubnames 000000fe  00000000  00000000  00000506  2**0
                  CONTENTS, READONLY, DEBUGGING
  7 .debug_info   00000487  00000000  00000000  00000604  2**0
                  CONTENTS, READONLY, DEBUGGING
  8 .debug_abbrev 00000193  00000000  00000000  00000a8b  2**0
                  CONTENTS, READONLY, DEBUGGING
  9 .debug_line   00000436  00000000  00000000  00000c1e  2**0
                  CONTENTS, READONLY, DEBUGGING
 10 .debug_str    00000186  00000000  00000000  00001054  2**0
                  CONTENTS, READONLY, DEBUGGING
Disassembly of section .text:

00000000 <__vectors>:
   0:	10 c0       	rjmp	.+32     	; 0x22
   2:	29 c0       	rjmp	.+82     	; 0x56
   4:	28 c0       	rjmp	.+80     	; 0x56
   6:	27 c0       	rjmp	.+78     	; 0x56
   8:	26 c0       	rjmp	.+76     	; 0x56
   a:	25 c0       	rjmp	.+74     	; 0x56
   c:	24 c0       	rjmp	.+72     	; 0x56
   e:	bf c0       	rjmp	.+382    	; 0x18e
  10:	22 c0       	rjmp	.+68     	; 0x56
  12:	21 c0       	rjmp	.+66     	; 0x56
  14:	20 c0       	rjmp	.+64     	; 0x56
  16:	1f c0       	rjmp	.+62     	; 0x56
  18:	1e c0       	rjmp	.+60     	; 0x56
  1a:	1d c0       	rjmp	.+58     	; 0x56
  1c:	1c c0       	rjmp	.+56     	; 0x56
  1e:	1b c0       	rjmp	.+54     	; 0x56
  20:	1a c0       	rjmp	.+52     	; 0x56

00000022 <__ctors_end>:
  22:	11 24       	eor	r1, r1
  24:	1f be       	out	0x3f, r1	; 63
  26:	cf e5       	ldi	r28, 0x5F	; 95
  28:	d2 e0       	ldi	r29, 0x02	; 2
  2a:	de bf       	out	0x3e, r29	; 62
  2c:	cd bf       	out	0x3d, r28	; 61

0000002e <__do_copy_data>:
  2e:	10 e0       	ldi	r17, 0x00	; 0
  30:	a0 e6       	ldi	r26, 0x60	; 96
  32:	b0 e0       	ldi	r27, 0x00	; 0
  34:	e6 e3       	ldi	r30, 0x36	; 54
  36:	f4 e0       	ldi	r31, 0x04	; 4
  38:	02 c0       	rjmp	.+4      	; 0x3e

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

0000003e <.do_copy_data_start>:
  3e:	a8 38       	cpi	r26, 0x88	; 136
  40:	b1 07       	cpc	r27, r17
  42:	d9 f7       	brne	.-10     	; 0x3a

00000044 <__do_clear_bss>:
  44:	10 e0       	ldi	r17, 0x00	; 0
  46:	a8 e8       	ldi	r26, 0x88	; 136
  48:	b0 e0       	ldi	r27, 0x00	; 0
  4a:	01 c0       	rjmp	.+2      	; 0x4e

0000004c <.do_clear_bss_loop>:
  4c:	1d 92       	st	X+, r1

0000004e <.do_clear_bss_start>:
  4e:	a2 39       	cpi	r26, 0x92	; 146
  50:	b1 07       	cpc	r27, r17
  52:	e1 f7       	brne	.-8      	; 0x4c
  54:	95 c1       	rjmp	.+810    	; 0x380

00000056 <__bad_interrupt>:
  56:	d4 cf       	rjmp	.-88     	; 0x0

00000058 <delay_ms>:


//----------------ms级延时---------------
void delay_ms(unsigned int ms)
{
  58:	cf 93       	push	r28
  5a:	df 93       	push	r29
    unsigned int i;
    for(i=0;i<ms;i++) _delay_ms(1); //延时 i*ms=   毫秒,可自行调节
  5c:	00 97       	sbiw	r24, 0x00	; 0
  5e:	59 f0       	breq	.+22     	; 0x76
  60:	ac ed       	ldi	r26, 0xDC	; 220
  62:	b5 e0       	ldi	r27, 0x05	; 5
  64:	c0 e0       	ldi	r28, 0x00	; 0
  66:	d0 e0       	ldi	r29, 0x00	; 0
  68:	9c 01       	movw	r18, r24
 */
static __inline__ void
_delay_loop_2(uint16_t __count)
{
	__asm__ volatile (
  6a:	cd 01       	movw	r24, r26
  6c:	01 97       	sbiw	r24, 0x01	; 1
  6e:	f1 f7       	brne	.-4      	; 0x6c
  70:	21 50       	subi	r18, 0x01	; 1
  72:	30 40       	sbci	r19, 0x00	; 0
  74:	d1 f7       	brne	.-12     	; 0x6a
  76:	df 91       	pop	r29
  78:	cf 91       	pop	r28
  7a:	08 95       	ret

0000007c <delay_us>:
}

//----------------us级延时---------------
void delay_us(unsigned int us)
{
    unsigned int i;
    for(i=0;i<us;i++) _delay_us(1); //延时 i*us=   毫秒,可自行调节
  7c:	00 97       	sbiw	r24, 0x00	; 0
  7e:	59 f0       	breq	.+22     	; 0x96
  80:	42 e0       	ldi	r20, 0x02	; 2
  82:	50 e0       	ldi	r21, 0x00	; 0
  84:	60 e0       	ldi	r22, 0x00	; 0
  86:	70 e0       	ldi	r23, 0x00	; 0
  88:	9c 01       	movw	r18, r24
*/
static __inline__ void
_delay_loop_1(uint8_t __count)
{
	__asm__ volatile (
  8a:	84 2f       	mov	r24, r20
  8c:	8a 95       	dec	r24
  8e:	f1 f7       	brne	.-4      	; 0x8c
  90:	21 50       	subi	r18, 0x01	; 1
  92:	30 40       	sbci	r19, 0x00	; 0
  94:	d1 f7       	brne	.-12     	; 0x8a
  96:	08 95       	ret

00000098 <Display>:
}


//-------------------- 数码管动态扫描程序------------------------
void Display(uchar *p) //动态显示函数,参数p为待显示的数组名
{
  98:	0f 93       	push	r16
  9a:	1f 93       	push	r17
  9c:	cf 93       	push	r28
  9e:	df 93       	push	r29
//-----------------第一种动态扫描方式-----------------
    uchar i,sel=0b11111110;
  a0:	0e ef       	ldi	r16, 0xFE	; 254
  a2:	ec 01       	movw	r28, r24
  a4:	15 e0       	ldi	r17, 0x05	; 5
    for(i=0;i<6;i++)
     {
      PORTB=sel;                           //选通最右边的数码管
  a6:	08 bb       	out	0x18, r16	; 24
      PORTA=Table[p[ i ]];             //送字型码
  a8:	89 91       	ld	r24, Y+
  aa:	e8 2f       	mov	r30, r24
  ac:	ff 27       	eor	r31, r31
  ae:	e0 5a       	subi	r30, 0xA0	; 160
  b0:	ff 4f       	sbci	r31, 0xFF	; 255
  b2:	80 81       	ld	r24, Z
  b4:	8b bb       	out	0x1b, r24	; 27
      delay_ms(2);                          //显示延时    
  b6:	82 e0       	ldi	r24, 0x02	; 2
  b8:	90 e0       	ldi	r25, 0x00	; 0
  ba:	ce df       	rcall	.-100    	; 0x58
      sel=(sel<<1)|0b00000001;              //移位以显示前一位
  bc:	80 2f       	mov	r24, r16
  be:	99 27       	eor	r25, r25
  c0:	88 0f       	add	r24, r24
  c2:	99 1f       	adc	r25, r25
  c4:	08 2f       	mov	r16, r24
  c6:	01 60       	ori	r16, 0x01	; 1
  c8:	11 50       	subi	r17, 0x01	; 1
  ca:	17 ff       	sbrs	r17, 7
  cc:	ec cf       	rjmp	.-40     	; 0xa6
  ce:	df 91       	pop	r29
  d0:	cf 91       	pop	r28
  d2:	1f 91       	pop	r17
  d4:	0f 91       	pop	r16
  d6:	08 95       	ret

000000d8 <Process>:
     }

	/*//-------------第二种动态扫描方式-----------------
	uchar i=0,sel=0b11111110;
	PORTB=sel;
	PORTA=Table[p[ i ]];             //送字型码
	delay_ms(2);                          //显示延时 
   
	i++;
	sel=0b11111101;
	PORTB=sel;
	PORTA=Table[p[ i ]];             //送字型码
	delay_ms(2);                          //显示延时 
	
    i++;
	sel=0b11111011;
	PORTB=sel;
	PORTA=Table[p[ i ]];             //送字型码
	delay_ms(2);                          //显示延时 
	
    i++;
	sel=0b11110111;
	PORTB=sel;
	PORTA=Table[p[ i ]];             //送字型码
	delay_ms(2);                          //显示延时
	
    i++;
	sel=0b11101111;
	PORTB=sel;
	PORTA=Table[p[ i ]];             //送字型码
	delay_ms(2);                          //显示延时

    i++;
	sel=0b11011111;
	PORTB=sel;
	PORTA=Table[p[ i ]];             //送字型码
	delay_ms(2);                          //显示延时
	*/
}

//计数值处理函数。参数p1:时间数组名;参数p2:显示数组名//
//功能:此函数用于将计数值拆分为BCD码的10时,时,10分,分,10秒,秒//
void Process(uchar *p1,uchar *p2) 
{
  d8:	cf 93       	push	r28
  da:	df 93       	push	r29
  dc:	fc 01       	movw	r30, r24
  de:	db 01       	movw	r26, r22
    p2[0]=p1[0]/10;
  e0:	4a e0       	ldi	r20, 0x0A	; 10
  e2:	80 81       	ld	r24, Z
  e4:	64 2f       	mov	r22, r20
  e6:	9b d1       	rcall	.+822    	; 0x41e
  e8:	8c 93       	st	X, r24
    p2[1]=p1[0]-p2[0]*10;
  ea:	84 9f       	mul	r24, r20
  ec:	90 01       	movw	r18, r0
  ee:	11 24       	eor	r1, r1
  f0:	80 81       	ld	r24, Z
  f2:	82 1b       	sub	r24, r18
  f4:	ed 01       	movw	r28, r26
  f6:	89 83       	std	Y+1, r24	; 0x01
    p2[2]=p1[1]/10;
  f8:	81 81       	ldd	r24, Z+1	; 0x01
  fa:	91 d1       	rcall	.+802    	; 0x41e
  fc:	8a 83       	std	Y+2, r24	; 0x02
    p2[3]=p1[1]-p2[2]*10;
  fe:	84 9f       	mul	r24, r20
 100:	90 01       	movw	r18, r0
 102:	11 24       	eor	r1, r1
 104:	81 81       	ldd	r24, Z+1	; 0x01
 106:	82 1b       	sub	r24, r18
 108:	8b 83       	std	Y+3, r24	; 0x03
    p2[4]=p1[2]/10;
 10a:	82 81       	ldd	r24, Z+2	; 0x02
 10c:	88 d1       	rcall	.+784    	; 0x41e
 10e:	8c 83       	std	Y+4, r24	; 0x04
    p2[5]=p1[2]-p2[4]*10;
 110:	84 9f       	mul	r24, r20
 112:	90 01       	movw	r18, r0
 114:	11 24       	eor	r1, r1
 116:	82 81       	ldd	r24, Z+2	; 0x02
 118:	82 1b       	sub	r24, r18
 11a:	8d 83       	std	Y+5, r24	; 0x05
 11c:	df 91       	pop	r29
 11e:	cf 91       	pop	r28
 120:	08 95       	ret

00000122 <Init_IO>:
}

//--------------初始化I/O口------------------
void Init_IO(void)                   //初始化I/O口
{ 
   PORTA=0xff;
 122:	8f ef       	ldi	r24, 0xFF	; 255
 124:	8b bb       	out	0x1b, r24	; 27
   DDRA=0xff;                           //设置A口为推挽1输出
 126:	8a bb       	out	0x1a, r24	; 26

   PORTB=0xff; //PORTC=0xff;
 128:	88 bb       	out	0x18, r24	; 24
   DDRB=0xff;  //DDRC=0xff;                           //设置C口为推挽1输出;             
 12a:	87 bb       	out	0x17, r24	; 23
 12c:	08 95       	ret

0000012e <BEEP>:
   
      
}

//-------------------主程序--------------------
int main(void)
{
    
	 delay_ms(1000);

⌨️ 快捷键说明

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