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

📄 main.lss

📁 M8+1302+18b20+8位数码管的sch和gcc源程序
💻 LSS
📖 第 1 页 / 共 5 页
字号:

main.elf:     file format elf32-avr

Sections:
Idx Name          Size      VMA       LMA       File off  Algn
  0 .text         00001aba  00000000  00000000  00000094  2**0
                  CONTENTS, ALLOC, LOAD, READONLY, CODE
  1 .data         00000008  00800060  00001aba  00001b4e  2**0
                  CONTENTS, ALLOC, LOAD, DATA
  2 .bss          0000001b  00800068  00800068  00001b56  2**0
                  ALLOC
  3 .noinit       00000000  00800083  00800083  00001b56  2**0
                  CONTENTS
  4 .eeprom       00000000  00810000  00810000  00001b56  2**0
                  CONTENTS
  5 .stab         000036b4  00000000  00000000  00001b58  2**2
                  CONTENTS, READONLY, DEBUGGING
  6 .stabstr      00000c3d  00000000  00000000  0000520c  2**0
                  CONTENTS, READONLY, DEBUGGING
Disassembly of section .text:

00000000 <__vectors>:
       0:	17 c0       	rjmp	.+46     	; 0x30
       2:	30 c0       	rjmp	.+96     	; 0x64
       4:	2f c0       	rjmp	.+94     	; 0x64
       6:	2e c0       	rjmp	.+92     	; 0x64
       8:	2d c0       	rjmp	.+90     	; 0x64
       a:	2c c0       	rjmp	.+88     	; 0x64
       c:	2b c0       	rjmp	.+86     	; 0x64
       e:	2a c0       	rjmp	.+84     	; 0x64
      10:	bf c1       	rjmp	.+894    	; 0x390
      12:	a3 c0       	rjmp	.+326    	; 0x15a
      14:	27 c0       	rjmp	.+78     	; 0x64
      16:	26 c0       	rjmp	.+76     	; 0x64
      18:	25 c0       	rjmp	.+74     	; 0x64
      1a:	24 c0       	rjmp	.+72     	; 0x64
      1c:	23 c0       	rjmp	.+70     	; 0x64
      1e:	22 c0       	rjmp	.+68     	; 0x64
      20:	21 c0       	rjmp	.+66     	; 0x64
      22:	20 c0       	rjmp	.+64     	; 0x64
      24:	1f c0       	rjmp	.+62     	; 0x64

00000026 <__ctors_end>:
      26:	3f 06       	cpc	r3, r31
      28:	5b 4f       	sbci	r21, 0xFB	; 251
      2a:	66 6d       	ori	r22, 0xD6	; 214
      2c:	7d 07       	cpc	r23, r29
      2e:	7f 6f       	ori	r23, 0xFF	; 255

00000030 <__init>:
      30:	11 24       	eor	r1, r1
      32:	1f be       	out	0x3f, r1	; 63
      34:	cf e5       	ldi	r28, 0x5F	; 95
      36:	d4 e0       	ldi	r29, 0x04	; 4
      38:	de bf       	out	0x3e, r29	; 62
      3a:	cd bf       	out	0x3d, r28	; 61

0000003c <__do_copy_data>:
      3c:	10 e0       	ldi	r17, 0x00	; 0
      3e:	a0 e6       	ldi	r26, 0x60	; 96
      40:	b0 e0       	ldi	r27, 0x00	; 0
      42:	ea eb       	ldi	r30, 0xBA	; 186
      44:	fa e1       	ldi	r31, 0x1A	; 26
      46:	02 c0       	rjmp	.+4      	; 0x4c

00000048 <.do_copy_data_loop>:
      48:	05 90       	lpm	r0, Z+
      4a:	0d 92       	st	X+, r0

0000004c <.do_copy_data_start>:
      4c:	a8 36       	cpi	r26, 0x68	; 104
      4e:	b1 07       	cpc	r27, r17
      50:	d9 f7       	brne	.-10     	; 0x48

00000052 <__do_clear_bss>:
      52:	10 e0       	ldi	r17, 0x00	; 0
      54:	a8 e6       	ldi	r26, 0x68	; 104
      56:	b0 e0       	ldi	r27, 0x00	; 0
      58:	01 c0       	rjmp	.+2      	; 0x5c

0000005a <.do_clear_bss_loop>:
      5a:	1d 92       	st	X+, r1

0000005c <.do_clear_bss_start>:
      5c:	a3 38       	cpi	r26, 0x83	; 131
      5e:	b1 07       	cpc	r27, r17
      60:	e1 f7       	brne	.-8      	; 0x5a
      62:	01 c0       	rjmp	.+2      	; 0x66

00000064 <__bad_interrupt>:
      64:	cd cf       	rjmp	.-102    	; 0x0

00000066 <main>:
#define main_c
#include "main.h"

int main(void)
{
      66:	cf e5       	ldi	r28, 0x5F	; 95
      68:	d4 e0       	ldi	r29, 0x04	; 4
      6a:	de bf       	out	0x3e, r29	; 62
      6c:	cd bf       	out	0x3d, r28	; 61
//IO初始化
	clr_hc595_ser();
      6e:	c2 98       	cbi	0x18, 2	; 24
	set_hc595_ser_ddr();
      70:	ba 9a       	sbi	0x17, 2	; 23
	clr_hc595_srclk();
      72:	c1 98       	cbi	0x18, 1	; 24
	set_hc595_srclk_ddr();
      74:	b9 9a       	sbi	0x17, 1	; 23
	clr_hc595_rclk();
      76:	c0 98       	cbi	0x18, 0	; 24
	set_hc595_rclk_ddr();
      78:	b8 9a       	sbi	0x17, 0	; 23
	
	set_buzzer();
      7a:	ac 9a       	sbi	0x15, 4	; 21
	set_buzzer_ddr();
      7c:	a4 9a       	sbi	0x14, 4	; 20
	
	clr_ds1302_rst();
      7e:	a8 98       	cbi	0x15, 0	; 21
	set_ds1302_rst_ddr();
      80:	a0 9a       	sbi	0x14, 0	; 20
	clr_ds1302_io();
      82:	a9 98       	cbi	0x15, 1	; 21
	clr_ds1302_io_ddr();
      84:	a1 98       	cbi	0x14, 1	; 20
	clr_ds1302_sclk();
      86:	aa 98       	cbi	0x15, 2	; 21
	set_ds1302_sclk_ddr();
      88:	a2 9a       	sbi	0x14, 2	; 20

	clr_ds18b20_dq();
      8a:	ad 98       	cbi	0x15, 5	; 21
	set_ds18b20_dq_ddr();
      8c:	a5 9a       	sbi	0x14, 5	; 20

	set_key();
      8e:	8f ef       	ldi	r24, 0xFF	; 255
      90:	82 bb       	out	0x12, r24	; 18
	clr_key_ddr();
      92:	11 ba       	out	0x11, r1	; 17
	
//定时器timer0初始化
	TCNT0=t0_tcnt;//定时1ms
      94:	87 ef       	ldi	r24, 0xF7	; 247
      96:	82 bf       	out	0x32, r24	; 50
	TCCR0=(1<<CS02)|(1<<CS00);//1024分频,7372800/1024=7200
      98:	25 e0       	ldi	r18, 0x05	; 5
      9a:	23 bf       	out	0x33, r18	; 51
	TIMSK|=1<<TOIE0;//允许t0溢出中断
      9c:	89 b7       	in	r24, 0x39	; 57
      9e:	81 60       	ori	r24, 0x01	; 1
      a0:	89 bf       	out	0x39, r24	; 57
//定时器timer1初始化
	TCNT1=t1_tcnt;//定时500ms
      a2:	8e ee       	ldi	r24, 0xEE	; 238
      a4:	91 ef       	ldi	r25, 0xF1	; 241
      a6:	9d bd       	out	0x2d, r25	; 45
      a8:	8c bd       	out	0x2c, r24	; 44
	TCCR1A=0;
      aa:	1f bc       	out	0x2f, r1	; 47
	TCCR1B=(1<<CS12)|(1<<CS10);//1024分频
      ac:	2e bd       	out	0x2e, r18	; 46
	TIMSK|=1<<TOIE1;
      ae:	89 b7       	in	r24, 0x39	; 57
      b0:	84 60       	ori	r24, 0x04	; 4
      b2:	89 bf       	out	0x39, r24	; 57

	convert_ds18b20();
      b4:	71 dc       	rcall	.-1822   	; 0xfffff998

	ds1302_read_time();
      b6:	26 d1       	rcall	.+588    	; 0x304
	
	timer0_hour=eeprom_read_byte((uchar *)(timer0_address+0));
      b8:	80 e1       	ldi	r24, 0x10	; 16
      ba:	90 e0       	ldi	r25, 0x00	; 0
      bc:	df dc       	rcall	.-1602   	; 0xfffffa7c
      be:	80 93 75 00 	sts	0x0075, r24
	timer0_minute=eeprom_read_byte((uchar *)(timer0_address+1));
      c2:	81 e1       	ldi	r24, 0x11	; 17
      c4:	90 e0       	ldi	r25, 0x00	; 0
      c6:	da dc       	rcall	.-1612   	; 0xfffffa7c
      c8:	80 93 74 00 	sts	0x0074, r24
	
	timer1_hour=eeprom_read_byte((uchar *)(timer1_address+0));
      cc:	82 e1       	ldi	r24, 0x12	; 18
      ce:	90 e0       	ldi	r25, 0x00	; 0
      d0:	d5 dc       	rcall	.-1622   	; 0xfffffa7c
      d2:	80 93 73 00 	sts	0x0073, r24
	timer1_minute=eeprom_read_byte((uchar *)(timer1_address+1));
      d6:	83 e1       	ldi	r24, 0x13	; 19
      d8:	90 e0       	ldi	r25, 0x00	; 0
      da:	d0 dc       	rcall	.-1632   	; 0xfffffa7c
      dc:	80 93 72 00 	sts	0x0072, r24
	
	timer2_hour=eeprom_read_byte((uchar *)(timer2_address+0));
      e0:	84 e1       	ldi	r24, 0x14	; 20
      e2:	90 e0       	ldi	r25, 0x00	; 0
      e4:	cb dc       	rcall	.-1642   	; 0xfffffa7c
      e6:	80 93 71 00 	sts	0x0071, r24
	timer2_minute=eeprom_read_byte((uchar *)(timer2_address+1));
      ea:	85 e1       	ldi	r24, 0x15	; 21
      ec:	90 e0       	ldi	r25, 0x00	; 0
      ee:	c6 dc       	rcall	.-1652   	; 0xfffffa7c
      f0:	80 93 70 00 	sts	0x0070, r24
	
	timer3_hour=eeprom_read_byte((uchar *)(timer3_address+0));
      f4:	86 e1       	ldi	r24, 0x16	; 22
      f6:	90 e0       	ldi	r25, 0x00	; 0
      f8:	c1 dc       	rcall	.-1662   	; 0xfffffa7c
      fa:	80 93 6f 00 	sts	0x006F, r24
	timer3_minute=eeprom_read_byte((uchar *)(timer3_address+1));
      fe:	87 e1       	ldi	r24, 0x17	; 23
     100:	90 e0       	ldi	r25, 0x00	; 0
     102:	bc dc       	rcall	.-1672   	; 0xfffffa7c
     104:	80 93 6e 00 	sts	0x006E, r24
	
	timer4_hour=eeprom_read_byte((uchar *)(timer4_address+0));
     108:	88 e1       	ldi	r24, 0x18	; 24
     10a:	90 e0       	ldi	r25, 0x00	; 0
     10c:	b7 dc       	rcall	.-1682   	; 0xfffffa7c
     10e:	80 93 6d 00 	sts	0x006D, r24
	timer4_minute=eeprom_read_byte((uchar *)(timer4_address+1));
     112:	89 e1       	ldi	r24, 0x19	; 25
     114:	90 e0       	ldi	r25, 0x00	; 0
     116:	b2 dc       	rcall	.-1692   	; 0xfffffa7c
     118:	80 93 6c 00 	sts	0x006C, r24
	
	timer5_hour=eeprom_read_byte((uchar *)(timer5_address+0));
     11c:	8a e1       	ldi	r24, 0x1A	; 26
     11e:	90 e0       	ldi	r25, 0x00	; 0
     120:	ad dc       	rcall	.-1702   	; 0xfffffa7c
     122:	80 93 6b 00 	sts	0x006B, r24
	timer5_minute=eeprom_read_byte((uchar *)(timer5_address+1));
     126:	8b e1       	ldi	r24, 0x1B	; 27
     128:	90 e0       	ldi	r25, 0x00	; 0
     12a:	a8 dc       	rcall	.-1712   	; 0xfffffa7c
     12c:	80 93 6a 00 	sts	0x006A, r24
	
	asm("sei");
     130:	78 94       	sei

	while(1)
	{
		flash_control=0;
     132:	10 92 77 00 	sts	0x0077, r1
		key_scan();
     136:	81 d3       	rcall	.+1794   	; 0x83a
		if(second_flag)
     138:	80 91 82 00 	lds	r24, 0x0082
     13c:	88 23       	and	r24, r24
     13e:	19 f0       	breq	.+6      	; 0x146
		{
			second_flag=0;
     140:	10 92 82 00 	sts	0x0082, r1
			read_temperature();
     144:	34 dc       	rcall	.-1944   	; 0xfffff9ae
		}
		if(flag&(1<<hour_flag))
     146:	80 91 78 00 	lds	r24, 0x0078
     14a:	80 ff       	sbrs	r24, 0
     14c:	04 c0       	rjmp	.+8      	; 0x156
		{
			flag&=~(1<<hour_flag);
     14e:	8e 7f       	andi	r24, 0xFE	; 254
     150:	80 93 78 00 	sts	0x0078, r24
			ds1302_read_time();
     154:	d7 d0       	rcall	.+430    	; 0x304
		}
		check_timer();
     156:	7f d2       	rcall	.+1278   	; 0x656
     158:	ec cf       	rjmp	.-40     	; 0x132

0000015a <__vector_9>:
   e   d   dp  c    g   s4
msb=p,lsb=a.顺序为pgfedcba
*/
SIGNAL (SIG_OVERFLOW0)
{
     15a:	1f 92       	push	r1
     15c:	0f 92       	push	r0
     15e:	0f b6       	in	r0, 0x3f	; 63
     160:	0f 92       	push	r0
     162:	11 24       	eor	r1, r1
     164:	2f 93       	push	r18
     166:	3f 93       	push	r19
     168:	4f 93       	push	r20
     16a:	5f 93       	push	r21
     16c:	6f 93       	push	r22
     16e:	8f 93       	push	r24
     170:	9f 93       	push	r25
     172:	ef 93       	push	r30
     174:	ff 93       	push	r31
	uchar i=0;
     176:	50 e0       	ldi	r21, 0x00	; 0
	uchar data_seg=display_buffer[display_count];
     178:	60 91 79 00 	lds	r22, 0x0079
     17c:	26 2f       	mov	r18, r22
     17e:	33 27       	eor	r19, r19
     180:	f9 01       	movw	r30, r18
     182:	e0 5a       	subi	r30, 0xA0	; 160
     184:	ff 4f       	sbci	r31, 0xFF	; 255
     186:	e0 81       	ld	r30, Z
	uchar data_bit=~(1<<display_count);
     188:	81 e0       	ldi	r24, 0x01	; 1
     18a:	90 e0       	ldi	r25, 0x00	; 0
     18c:	02 c0       	rjmp	.+4      	; 0x192
     18e:	88 0f       	add	r24, r24
     190:	99 1f       	adc	r25, r25
     192:	2a 95       	dec	r18
     194:	e2 f7       	brpl	.-8      	; 0x18e
     196:	48 2f       	mov	r20, r24
     198:	40 95       	com	r20
	if((1<<display_count)==flash_control) data_bit|=flash_var;
     19a:	20 91 77 00 	lds	r18, 0x0077
     19e:	33 27       	eor	r19, r19
     1a0:	82 17       	cp	r24, r18
     1a2:	93 07       	cpc	r25, r19
     1a4:	19 f4       	brne	.+6      	; 0x1ac
     1a6:	80 91 76 00 	lds	r24, 0x0076
     1aa:	48 2b       	or	r20, r24
	display_count++;
     1ac:	86 2f       	mov	r24, r22
     1ae:	8f 5f       	subi	r24, 0xFF	; 255
     1b0:	80 93 79 00 	sts	0x0079, r24
	if(8==display_count) display_count=0;
     1b4:	88 30       	cpi	r24, 0x08	; 8
     1b6:	11 f4       	brne	.+4      	; 0x1bc
     1b8:	50 93 79 00 	sts	0x0079, r21
//送位选
	for(i=0;i<8;i++)
	{
		if(data_bit&0x80) set_hc595_ser();
     1bc:	47 ff       	sbrs	r20, 7
     1be:	02 c0       	rjmp	.+4      	; 0x1c4
     1c0:	c2 9a       	sbi	0x18, 2	; 24
     1c2:	01 c0       	rjmp	.+2      	; 0x1c6
		else clr_hc595_ser();
     1c4:	c2 98       	cbi	0x18, 2	; 24
		clr_hc595_srclk();
     1c6:	c1 98       	cbi	0x18, 1	; 24
		set_hc595_srclk();	
     1c8:	c1 9a       	sbi	0x18, 1	; 24
		data_bit<<=1;
     1ca:	44 0f       	add	r20, r20
     1cc:	5f 5f       	subi	r21, 0xFF	; 255
     1ce:	58 30       	cpi	r21, 0x08	; 8
     1d0:	a8 f3       	brcs	.-22     	; 0x1bc
     1d2:	57 e0       	ldi	r21, 0x07	; 7
	}
//送段码
	for(i=0;i<8;i++)
	{
		if(data_seg&0x80) set_hc595_ser();
     1d4:	e7 ff       	sbrs	r30, 7
     1d6:	02 c0       	rjmp	.+4      	; 0x1dc
     1d8:	c2 9a       	sbi	0x18, 2	; 24
     1da:	01 c0       	rjmp	.+2      	; 0x1de
		else clr_hc595_ser();		
     1dc:	c2 98       	cbi	0x18, 2	; 24
		clr_hc595_srclk();
     1de:	c1 98       	cbi	0x18, 1	; 24
		set_hc595_srclk();
     1e0:	c1 9a       	sbi	0x18, 1	; 24
		data_seg<<=1;
     1e2:	ee 0f       	add	r30, r30

⌨️ 快捷键说明

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