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

📄 rtc.lss

📁 AVR Devolpment Board
💻 LSS
📖 第 1 页 / 共 4 页
字号:
 252:	53 1f       	adc	r21, r19
 254:	8f 70       	andi	r24, 0x0F	; 15
 256:	84 0f       	add	r24, r20
	return Time;
}
 258:	99 27       	eor	r25, r25
 25a:	08 95       	ret

0000025c <DS1302TimeSet>:


//根据选择调整相应项目并写入DS1302
//****DS1302写入相应数据****
void DS1302TimeSet(UCHAR TimeReg,UCHAR sel) 
{
 25c:	ef 92       	push	r14
 25e:	ff 92       	push	r15
 260:	0f 93       	push	r16
 262:	1f 93       	push	r17
 264:	cf 93       	push	r28
 266:	f8 2e       	mov	r15, r24
 268:	e6 2e       	mov	r14, r22
	UCHAR item,ReadValue;
	UCHAR max=0,min=0;
 26a:	10 e0       	ldi	r17, 0x00	; 0
 26c:	01 2f       	mov	r16, r17
	switch(TimeReg)
 26e:	99 27       	eor	r25, r25
 270:	8a 38       	cpi	r24, 0x8A	; 138
 272:	91 05       	cpc	r25, r1
 274:	89 f1       	breq	.+98     	; 0x2d8 <DS1302TimeSet+0x7c>
 276:	8b 38       	cpi	r24, 0x8B	; 139
 278:	91 05       	cpc	r25, r1
 27a:	a4 f4       	brge	.+40     	; 0x2a4 <DS1302TimeSet+0x48>
 27c:	84 38       	cpi	r24, 0x84	; 132
 27e:	91 05       	cpc	r25, r1
 280:	81 f1       	breq	.+96     	; 0x2e2 <DS1302TimeSet+0x86>
 282:	85 38       	cpi	r24, 0x85	; 133
 284:	91 05       	cpc	r25, r1
 286:	3c f4       	brge	.+14     	; 0x296 <DS1302TimeSet+0x3a>
 288:	80 38       	cpi	r24, 0x80	; 128
 28a:	91 05       	cpc	r25, r1
 28c:	61 f1       	breq	.+88     	; 0x2e6 <DS1302TimeSet+0x8a>
 28e:	82 38       	cpi	r24, 0x82	; 130
 290:	91 05       	cpc	r25, r1
 292:	49 f1       	breq	.+82     	; 0x2e6 <DS1302TimeSet+0x8a>
 294:	29 c0       	rjmp	.+82     	; 0x2e8 <DS1302TimeSet+0x8c>
 296:	86 38       	cpi	r24, 0x86	; 134
 298:	91 05       	cpc	r25, r1
 29a:	e1 f0       	breq	.+56     	; 0x2d4 <DS1302TimeSet+0x78>
 29c:	88 38       	cpi	r24, 0x88	; 136
 29e:	91 05       	cpc	r25, r1
 2a0:	b9 f0       	breq	.+46     	; 0x2d0 <DS1302TimeSet+0x74>
 2a2:	22 c0       	rjmp	.+68     	; 0x2e8 <DS1302TimeSet+0x8c>
 2a4:	82 3c       	cpi	r24, 0xC2	; 194
 2a6:	91 05       	cpc	r25, r1
 2a8:	d1 f0       	breq	.+52     	; 0x2de <DS1302TimeSet+0x82>
 2aa:	83 3c       	cpi	r24, 0xC3	; 195
 2ac:	91 05       	cpc	r25, r1
 2ae:	3c f4       	brge	.+14     	; 0x2be <DS1302TimeSet+0x62>
 2b0:	8c 38       	cpi	r24, 0x8C	; 140
 2b2:	91 05       	cpc	r25, r1
 2b4:	59 f0       	breq	.+22     	; 0x2cc <DS1302TimeSet+0x70>
 2b6:	80 3c       	cpi	r24, 0xC0	; 192
 2b8:	91 05       	cpc	r25, r1
 2ba:	a9 f0       	breq	.+42     	; 0x2e6 <DS1302TimeSet+0x8a>
 2bc:	15 c0       	rjmp	.+42     	; 0x2e8 <DS1302TimeSet+0x8c>
 2be:	84 3c       	cpi	r24, 0xC4	; 196
 2c0:	91 05       	cpc	r25, r1
 2c2:	79 f0       	breq	.+30     	; 0x2e2 <DS1302TimeSet+0x86>
 2c4:	86 3c       	cpi	r24, 0xC6	; 198
 2c6:	91 05       	cpc	r25, r1
 2c8:	71 f0       	breq	.+28     	; 0x2e6 <DS1302TimeSet+0x8a>
 2ca:	0e c0       	rjmp	.+28     	; 0x2e8 <DS1302TimeSet+0x8c>
	{
		case DS_YEAR   : max=99;min=0; break;    //年
 2cc:	13 e6       	ldi	r17, 0x63	; 99
 2ce:	0c c0       	rjmp	.+24     	; 0x2e8 <DS1302TimeSet+0x8c>
		case DS_MONTH  : max=12;min=1; break;    //月
 2d0:	1c e0       	ldi	r17, 0x0C	; 12
 2d2:	03 c0       	rjmp	.+6      	; 0x2da <DS1302TimeSet+0x7e>
		case DS_DAY    : max=31;min=1; break;    //日
 2d4:	1f e1       	ldi	r17, 0x1F	; 31
 2d6:	01 c0       	rjmp	.+2      	; 0x2da <DS1302TimeSet+0x7e>
		case DS_WEEK   : max= 7;min=1; break;    //星期
 2d8:	17 e0       	ldi	r17, 0x07	; 7
 2da:	01 e0       	ldi	r16, 0x01	; 1
 2dc:	05 c0       	rjmp	.+10     	; 0x2e8 <DS1302TimeSet+0x8c>
		case DS_HOUR   : max=23;min=0; break;    //小时
		case DS_MINUTE : max=59;min=0; break;    //分钟
		case DS_SECOND : max=59;min=0; break;    //秒
		case DS_LIGHT  : max=59;min=0; break;    //背光时间,最长1分钟
		case DS_CLOCK_K: max= 1;min=0; break;    //闹铃开关寄存器
 2de:	11 e0       	ldi	r17, 0x01	; 1
 2e0:	03 c0       	rjmp	.+6      	; 0x2e8 <DS1302TimeSet+0x8c>
		case DS_CLOCK_H: max=23;min=0; break;    //闹铃时寄存器
 2e2:	17 e1       	ldi	r17, 0x17	; 23
 2e4:	01 c0       	rjmp	.+2      	; 0x2e8 <DS1302TimeSet+0x8c>
		case DS_CLOCK_M: max=59;min=0; break;    //闹铃分寄存器
 2e6:	1b e3       	ldi	r17, 0x3B	; 59
		default: break;
	}

	ReadValue = ReadSet1302(TimeReg+1);
 2e8:	8f 2d       	mov	r24, r15
 2ea:	8f 5f       	subi	r24, 0xFF	; 255
 2ec:	0e 94 c6 00 	call	0x18c <ReadSet1302>
 2f0:	28 2f       	mov	r18, r24
	item      = ReadValue/16*10+ReadValue%16;
 2f2:	98 2f       	mov	r25, r24
 2f4:	92 95       	swap	r25
 2f6:	9f 70       	andi	r25, 0x0F	; 15
 2f8:	8a e0       	ldi	r24, 0x0A	; 10
 2fa:	98 9f       	mul	r25, r24
 2fc:	c0 01       	movw	r24, r0
 2fe:	11 24       	eor	r1, r1
 300:	c2 2f       	mov	r28, r18
 302:	cf 70       	andi	r28, 0x0F	; 15
 304:	c8 0f       	add	r28, r24
	if(sel==0)
 306:	ee 20       	and	r14, r14
 308:	29 f4       	brne	.+10     	; 0x314 <DS1302TimeSet+0xb8>
	{ 
		item++;
 30a:	cf 5f       	subi	r28, 0xFF	; 255
		if(item>max) 
 30c:	1c 17       	cp	r17, r28
 30e:	38 f4       	brcc	.+14     	; 0x31e <DS1302TimeSet+0xc2>
			item=min;
 310:	c0 2f       	mov	r28, r16
 312:	05 c0       	rjmp	.+10     	; 0x31e <DS1302TimeSet+0xc2>
	}  
	else
	{
	 	if(item<=min)
 314:	0c 17       	cp	r16, r28
 316:	10 f0       	brcs	.+4      	; 0x31c <DS1302TimeSet+0xc0>
			item=max+1;
 318:	c1 2f       	mov	r28, r17
 31a:	cf 5f       	subi	r28, 0xFF	; 255
		item--; 
 31c:	c1 50       	subi	r28, 0x01	; 1
	}  	
           
	WriteSet1302(0x8e,0x00);                   //允许写操作
 31e:	60 e0       	ldi	r22, 0x00	; 0
 320:	8e e8       	ldi	r24, 0x8E	; 142
 322:	0e 94 ce 00 	call	0x19c <WriteSet1302>
	WriteSet1302(TimeReg,item/10*16+item%10);  //写入DS1302 //转成BCD码
 326:	8c 2f       	mov	r24, r28
 328:	6a e0       	ldi	r22, 0x0A	; 10
 32a:	0e 94 3a 05 	call	0xa74 <__udivmodqi4>
 32e:	28 2f       	mov	r18, r24
 330:	33 27       	eor	r19, r19
 332:	54 e0       	ldi	r21, 0x04	; 4
 334:	22 0f       	add	r18, r18
 336:	33 1f       	adc	r19, r19
 338:	5a 95       	dec	r21
 33a:	e1 f7       	brne	.-8      	; 0x334 <DS1302TimeSet+0xd8>
 33c:	8c 2f       	mov	r24, r28
 33e:	0e 94 3a 05 	call	0xa74 <__udivmodqi4>
 342:	89 2f       	mov	r24, r25
 344:	82 0f       	add	r24, r18
 346:	68 2f       	mov	r22, r24
 348:	8f 2d       	mov	r24, r15
 34a:	0e 94 ce 00 	call	0x19c <WriteSet1302>
	WriteSet1302(0x8e,0x80);                   //写保护,禁止写操作  
 34e:	60 e8       	ldi	r22, 0x80	; 128
 350:	8e e8       	ldi	r24, 0x8E	; 142
 352:	0e 94 ce 00 	call	0x19c <WriteSet1302>
 356:	cf 91       	pop	r28
 358:	1f 91       	pop	r17
 35a:	0f 91       	pop	r16
 35c:	ff 90       	pop	r15
 35e:	ef 90       	pop	r14
 360:	08 95       	ret

00000362 <SPI_Init>:
#define DUMP           0xFF

void SPI_Init(void)
{
	DDRB|= (1<<PB4)|(1<<PB5)|(1<<PB7);    /* PB4:SS  PB5:MOSI  PB6:MISO  PB7:SCK */
 362:	87 b3       	in	r24, 0x17	; 23
 364:	80 6b       	ori	r24, 0xB0	; 176
 366:	87 bb       	out	0x17, r24	; 23
	DDRB&=~(1<<PB6);
 368:	be 98       	cbi	0x17, 6	; 23
	SPCR = (1<<SPE)|(1<<DORD)|(1<<MSTR)|(0<<CPOL)|(0<<CPHA)|(0<<SPR1)|(0<<SPR0);/* DORD = 1 : LSB otherwise MSB */
 36a:	80 e7       	ldi	r24, 0x70	; 112
 36c:	8d b9       	out	0x0d, r24	; 13
	SPSR = (1<<SPI2X);
 36e:	81 e0       	ldi	r24, 0x01	; 1
 370:	8e b9       	out	0x0e, r24	; 14
 372:	08 95       	ret

00000374 <SPI_Write>:
}


void SPI_Write(unsigned char Data)
{
	SPDR=Data;
 374:	8f b9       	out	0x0f, r24	; 15
	while(!(SPSR&0x80));
 376:	77 9b       	sbis	0x0e, 7	; 14
 378:	fe cf       	rjmp	.-4      	; 0x376 <SPI_Write+0x2>
 37a:	08 95       	ret

0000037c <SPI_Read>:
}

unsigned char SPI_Read(void)
{
	unsigned char Data;
	DDRB&=~(1<<PB5);
 37c:	bd 98       	cbi	0x17, 5	; 23
	SPDR=DUMP;
 37e:	8f ef       	ldi	r24, 0xFF	; 255
 380:	8f b9       	out	0x0f, r24	; 15
	while(!(SPSR&0x80));
 382:	77 9b       	sbis	0x0e, 7	; 14
 384:	fe cf       	rjmp	.-4      	; 0x382 <SPI_Read+0x6>
	Data=SPDR;
 386:	8f b1       	in	r24, 0x0f	; 15
	DDRB|= (1<<PB5);
 388:	bd 9a       	sbi	0x17, 5	; 23
	return Data;
}
 38a:	99 27       	eor	r25, r25
 38c:	08 95       	ret

0000038e <UART_Init>:


void UART_Init(void)
{
	UCSRA = 0x00;
 38e:	1b b8       	out	0x0b, r1	; 11
	UCSRB = (1<<RXCIE)|(1<<RXEN)|(1<<TXEN);
 390:	88 e9       	ldi	r24, 0x98	; 152
 392:	8a b9       	out	0x0a, r24	; 10
	UCSRC = (1<<7)|(1<<UCSZ1)|(1<<UCSZ0);
 394:	86 e8       	ldi	r24, 0x86	; 134
 396:	80 bd       	out	0x20, r24	; 32
	UBRRH = UBRR>>8;
 398:	10 bc       	out	0x20, r1	; 32
	UBRRL = UBRR&0xFF;
 39a:	8c e0       	ldi	r24, 0x0C	; 12
 39c:	89 b9       	out	0x09, r24	; 9
	DDRD |= (1<<PD1)|(0<<PD0);
 39e:	89 9a       	sbi	0x11, 1	; 17
	PORTD|= (1<<PD1)|(1<<PD0);
 3a0:	82 b3       	in	r24, 0x12	; 18
 3a2:	83 60       	ori	r24, 0x03	; 3
 3a4:	82 bb       	out	0x12, r24	; 18
 3a6:	08 95       	ret

000003a8 <UART_PutChar>:
}


void UART_PutChar(char c)
{
	while(!(UCSRA&(1<<UDRE)));
 3a8:	5d 9b       	sbis	0x0b, 5	; 11
 3aa:	fe cf       	rjmp	.-4      	; 0x3a8 <UART_PutChar>
	UDR    = c;
 3ac:	8c b9       	out	0x0c, r24	; 12
 3ae:	08 95       	ret

000003b0 <UARTsendstream>:
}


/* Bellow is for printf function. If you want use this function, you must add the
 * include file stdio.h and stdlib.h, then adjust your displayment stream fuinction
 * to use with printf() and set output stream to it. If you want use the float number 
 * opreation, in the project option of the Libraries dialog box, you should add the 
 * library file libm.a and libprintf_flt.a.
 * In the project option of the Custom Options dialog box, you should and Linker Options
 * with <-Wl,-u,vfprintf -lprintf_flt>(except the <>). */

	

//adjust UART stream fuinction to use with printf()
static int UARTsendstream(char c , FILE *stream)
{
	UART_PutChar(c);
 3b0:	0e 94 d4 01 	call	0x3a8 <UART_PutChar>
	return 0;
}
 3b4:	80 e0       	ldi	r24, 0x00	; 0
 3b6:	90 e0       	ldi	r25, 0x00	; 0
 3b8:	08 95       	ret

000003ba <UART_Config>:

//----set output stream to LCD-------
static FILE uart_str = FDEV_SETUP_STREAM(UARTsendstream, NULL, _FDEV_SETUP_WRITE);


void UART_Config(void)
{
	UART_Init();
 3ba:	0e 94 c7 01 	call	0x38e <UART_Init>
	stdout = &uart_str;
 3be:	8a e9       	ldi	r24, 0x9A	; 154
 3c0:	90 e0       	ldi	r25, 0x00	; 0
 3c2:	90 93 b1 00 	sts	0x00B1, r25
 3c6:	80 93 b0 00 	sts	0x00B0, r24
 3ca:	08 95       	ret

000003cc <printf>:
 3cc:	cf 93       	push	r28
 3ce:	df 93       	push	r29
 3d0:	cd b7       	in	r28, 0x3d	; 61
 3d2:	de b7       	in	r29, 0x3e	; 62
 3d4:	e5 e0       	ldi	r30, 0x05	; 5
 3d6:	f0 e0       	ldi	r31, 0x00	; 0
 3d8:	ec 0f       	add	r30, r28
 3da:	fd 1f       	adc	r31, r29
 3dc:	81 91       	ld	r24, Z+
 3de:	91 91       	ld	r25, Z+
 3e0:	af 01       	movw	r20, r30
 3e2:	bc 01       	movw	r22, r24
 3e4:	80 91 b0 00 	lds	r24, 0x00B0
 3e8:	90 91 b1 00 	lds	r25, 0x00B1
 3ec:	0e 94 31 02 	call	0x462 <vfprintf>
 3f0:	df 91       	pop	r29
 3f2:	cf 91       	pop	r28
 3f4:	08 95       	ret

000003f6 <puts>:
 3f6:	0f 93       	push	r16
 3f8:	1f 93       	push	r17
 3fa:	cf 93       	push	r28
 3fc:	df 93       	push	r29
 3fe:	ec 01       	movw	r28, r24
 400:	00 e0       	ldi	r16, 0x00	; 0
 402:	10 e0       	ldi	r17, 0x00	; 0
 404:	e0 91 b0 00 	lds	r30, 0x00B0
 408:	f0 91 b1 00 	lds	r31, 0x00B1
 40c:	83 81       	ldd	r24, Z+3	; 0x03
 40e:	81 fd       	sbrc	r24, 1
 410:	03 c0       	rjmp	.+6      	; 0x418 <puts+0x22>
 412:	8f ef       	ldi	r24, 0xFF	; 255
 414:	9f ef       	ldi	r25, 0xFF	; 255
 416:	20 c0       	rjmp	.+64     	; 0x458 <puts+0x62>
 418:	89 91       	ld	r24, Y+
 41a:	88 23       	and	r24, r24
 41c:	71 f0       	breq	.+28     	; 0x43a <puts+0x44>
 41e:	e0 91 b0 00 	lds	r30, 0x00B0
 422:	f0 91 b1 00 	lds	r31, 0x00B1
 426:	20 85       	ldd	r18, Z+8	; 0x08
 428:	31 85       	ldd	r19, Z+9	; 0x09
 42a:	bf 01       	movw	r22, r30
 42c:	f9 01       	movw	r30, r18
 42e:	09 95       	icall
 430:	89 2b       	or	r24, r25
 432:	91 f3       	breq	.-28     	; 0x418 <puts+0x22>
 434:	0f ef       	ldi	r16, 0xFF	; 255
 436:	1f ef       	ldi	r17, 0xFF	; 255
 438:	ef cf       	rjmp	.-34     	; 0x418 <puts+0x22>
 43a:	e0 91 b0 00 	lds	r30, 0x00B0
 43e:	f0 91 b1 00 	lds	r31, 0x00B1
 442:	20 85       	ldd	r18, Z+8	; 0x08
 444:	31 85       	ldd	r19, Z+9	; 0x09
 446:	bf 01       	movw	r22, r30
 448:	8a e0       	ldi	r24, 0x0A	; 10
 44a:	f9 01       	movw	r30, r18
 44c:	09 95       	icall
 44e:	89 2b       	or	r24, r25
 450:	11 f0       	breq	.+4      	; 0x456 <puts+0x60>
 452:	0f ef       	ldi	r16, 0xFF	; 255
 454:	1f ef       	ldi	r17, 0xFF	; 255
 456:	c8 01       	movw	r24, r16
 458:	df 91       	pop	r29
 45a:	cf 91       	pop	r28
 45c:	1f 91       	pop	r17
 45e:	0f 91       	pop	r16
 460:	08 95       	ret

00000462 <vfprintf>:
 462:	2f 92       	push	r2
 464:	3f 92       	push	r3
 466:	4f 92       	push	r4
 468:	5f 92       	push	r5
 46a:	6f 92       	push	r6
 46c:	7f 92       	push	r7
 46e:	8f 92       	push	r8
 470:	9f 92       	push	r9
 472:	af 92       	push	r10
 474:	bf 92       	push	r11
 476:	cf 92       	push	r12
 478:	df 92       	push	r13
 47a:	ef 92       	push	r14
 47c:	ff 92       	push	r15
 47e:	0f 93       	push	r16
 480:	1f 93       	push	r17
 482:	cf 93       	push	r28
 484:	df 93       	push	r29
 486:	cd b7       	in	r28, 0x3d	; 61
 488:	de b7       	in	r29, 0x3e	; 62

⌨️ 快捷键说明

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