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

📄 main.lss

📁 avr常用功能程序中包含了pwm、adc、中断、定时、i2c等各程序可供开发者直接使用
💻 LSS
📖 第 1 页 / 共 3 页
字号:
 256:	de bf       	out	0x3e, r29	; 62
 258:	0f be       	out	0x3f, r0	; 63
 25a:	cd bf       	out	0x3d, r28	; 61
 25c:	df 91       	pop	r29
 25e:	cf 91       	pop	r28
 260:	08 95       	ret

00000262 <ds1302_read>:
} 
/******************************************************************/
uchar ds1302_read(uchar reg) 
{ 
 262:	cf 93       	push	r28
 264:	df 93       	push	r29
 266:	cd b7       	in	r28, 0x3d	; 61
 268:	de b7       	in	r29, 0x3e	; 62
 26a:	23 97       	sbiw	r28, 0x03	; 3
 26c:	0f b6       	in	r0, 0x3f	; 63
 26e:	f8 94       	cli
 270:	de bf       	out	0x3e, r29	; 62
 272:	0f be       	out	0x3f, r0	; 63
 274:	cd bf       	out	0x3d, r28	; 61
 276:	89 83       	std	Y+1, r24	; 0x01
	uchar data=0; 
 278:	1a 82       	std	Y+2, r1	; 0x02
	char i=0; 
 27a:	1b 82       	std	Y+3, r1	; 0x03
	reg+=1;		//读标志 
 27c:	89 81       	ldd	r24, Y+1	; 0x01
 27e:	8f 5f       	subi	r24, 0xFF	; 255
 280:	89 83       	std	Y+1, r24	; 0x01
	set_ds1302_rst_ddr();
 282:	80 91 34 00 	lds	r24, 0x0034
 286:	88 60       	ori	r24, 0x08	; 8
 288:	80 93 34 00 	sts	0x0034, r24
	set_ds1302_sclk_ddr();
 28c:	80 91 34 00 	lds	r24, 0x0034
 290:	80 61       	ori	r24, 0x10	; 16
 292:	80 93 34 00 	sts	0x0034, r24
	set_ds1302_io_ddr(); 		/*设为输出*/
 296:	80 91 34 00 	lds	r24, 0x0034
 29a:	80 62       	ori	r24, 0x20	; 32
 29c:	80 93 34 00 	sts	0x0034, r24
	
	clr_ds1302_rst(); 
 2a0:	80 91 35 00 	lds	r24, 0x0035
 2a4:	87 7f       	andi	r24, 0xF7	; 247
 2a6:	80 93 35 00 	sts	0x0035, r24
	clr_ds1302_sclk(); 
 2aa:	80 91 35 00 	lds	r24, 0x0035
 2ae:	8f 7e       	andi	r24, 0xEF	; 239
 2b0:	80 93 35 00 	sts	0x0035, r24
	set_ds1302_rst(); 
 2b4:	80 91 35 00 	lds	r24, 0x0035
 2b8:	88 60       	ori	r24, 0x08	; 8
 2ba:	80 93 35 00 	sts	0x0035, r24
	for(i=8;i>0;i--) 
 2be:	88 e0       	ldi	r24, 0x08	; 8
 2c0:	8b 83       	std	Y+3, r24	; 0x03
 2c2:	8b 81       	ldd	r24, Y+3	; 0x03
 2c4:	88 23       	and	r24, r24
 2c6:	11 f1       	breq	.+68     	; 0x30c
	{ 
		clr_ds1302_sclk(); 
 2c8:	80 91 35 00 	lds	r24, 0x0035
 2cc:	8f 7e       	andi	r24, 0xEF	; 239
 2ce:	80 93 35 00 	sts	0x0035, r24
		if((reg&0x01)==0x01) 
 2d2:	89 81       	ldd	r24, Y+1	; 0x01
 2d4:	99 27       	eor	r25, r25
 2d6:	81 70       	andi	r24, 0x01	; 1
 2d8:	90 70       	andi	r25, 0x00	; 0
 2da:	00 97       	sbiw	r24, 0x00	; 0
 2dc:	31 f0       	breq	.+12     	; 0x2ea
			set_ds1302_io(); 
 2de:	80 91 35 00 	lds	r24, 0x0035
 2e2:	80 62       	ori	r24, 0x20	; 32
 2e4:	80 93 35 00 	sts	0x0035, r24
 2e8:	05 c0       	rjmp	.+10     	; 0x2f4
		else 
			clr_ds1302_io(); 
 2ea:	80 91 35 00 	lds	r24, 0x0035
 2ee:	8f 7d       	andi	r24, 0xDF	; 223
 2f0:	80 93 35 00 	sts	0x0035, r24
		set_ds1302_sclk(); 
 2f4:	80 91 35 00 	lds	r24, 0x0035
 2f8:	80 61       	ori	r24, 0x10	; 16
 2fa:	80 93 35 00 	sts	0x0035, r24
		
		reg>>=1; 
 2fe:	89 81       	ldd	r24, Y+1	; 0x01
 300:	86 95       	lsr	r24
 302:	89 83       	std	Y+1, r24	; 0x01
 304:	8b 81       	ldd	r24, Y+3	; 0x03
 306:	81 50       	subi	r24, 0x01	; 1
 308:	8b 83       	std	Y+3, r24	; 0x03
 30a:	db cf       	rjmp	.-74     	; 0x2c2
	} 
	clr_ds1302_io_ddr(); //PA1 in
 30c:	80 91 34 00 	lds	r24, 0x0034
 310:	8f 7d       	andi	r24, 0xDF	; 223
 312:	80 93 34 00 	sts	0x0034, r24
	for(i=8;i>0;i--) 
 316:	88 e0       	ldi	r24, 0x08	; 8
 318:	8b 83       	std	Y+3, r24	; 0x03
 31a:	8b 81       	ldd	r24, Y+3	; 0x03
 31c:	88 23       	and	r24, r24
 31e:	39 f1       	breq	.+78     	; 0x36e
	{   
		if((PINC&0X20)==0X20)  
 320:	80 91 33 00 	lds	r24, 0x0033
 324:	99 27       	eor	r25, r25
 326:	96 95       	lsr	r25
 328:	87 95       	ror	r24
 32a:	92 95       	swap	r25
 32c:	82 95       	swap	r24
 32e:	8f 70       	andi	r24, 0x0F	; 15
 330:	89 27       	eor	r24, r25
 332:	9f 70       	andi	r25, 0x0F	; 15
 334:	89 27       	eor	r24, r25
 336:	81 70       	andi	r24, 0x01	; 1
 338:	90 70       	andi	r25, 0x00	; 0
 33a:	00 97       	sbiw	r24, 0x00	; 0
 33c:	21 f0       	breq	.+8      	; 0x346
			data|=0x80;
 33e:	8a 81       	ldd	r24, Y+2	; 0x02
 340:	80 68       	ori	r24, 0x80	; 128
 342:	8a 83       	std	Y+2, r24	; 0x02
 344:	03 c0       	rjmp	.+6      	; 0x34c
		else 
			data&=0x7f;
 346:	8a 81       	ldd	r24, Y+2	; 0x02
 348:	8f 77       	andi	r24, 0x7F	; 127
 34a:	8a 83       	std	Y+2, r24	; 0x02
		set_ds1302_sclk(); 
 34c:	80 91 35 00 	lds	r24, 0x0035
 350:	80 61       	ori	r24, 0x10	; 16
 352:	80 93 35 00 	sts	0x0035, r24
		clr_ds1302_sclk(); 
 356:	80 91 35 00 	lds	r24, 0x0035
 35a:	8f 7e       	andi	r24, 0xEF	; 239
 35c:	80 93 35 00 	sts	0x0035, r24
		
		data>>=1; 
 360:	8a 81       	ldd	r24, Y+2	; 0x02
 362:	86 95       	lsr	r24
 364:	8a 83       	std	Y+2, r24	; 0x02
 366:	8b 81       	ldd	r24, Y+3	; 0x03
 368:	81 50       	subi	r24, 0x01	; 1
 36a:	8b 83       	std	Y+3, r24	; 0x03
 36c:	d6 cf       	rjmp	.-84     	; 0x31a
	} 
	clr_ds1302_rst(); 
 36e:	80 91 35 00 	lds	r24, 0x0035
 372:	87 7f       	andi	r24, 0xF7	; 247
 374:	80 93 35 00 	sts	0x0035, r24
   return(data);
 378:	8a 81       	ldd	r24, Y+2	; 0x02
 37a:	99 27       	eor	r25, r25
 37c:	23 96       	adiw	r28, 0x03	; 3
 37e:	0f b6       	in	r0, 0x3f	; 63
 380:	f8 94       	cli
 382:	de bf       	out	0x3e, r29	; 62
 384:	0f be       	out	0x3f, r0	; 63
 386:	cd bf       	out	0x3d, r28	; 61
 388:	df 91       	pop	r29
 38a:	cf 91       	pop	r28
 38c:	08 95       	ret

0000038e <check_ds1302>:
} 
/******************************************************************/
uchar check_ds1302(void) 
{ 
 38e:	cf 93       	push	r28
 390:	df 93       	push	r29
 392:	cd b7       	in	r28, 0x3d	; 61
 394:	de b7       	in	r29, 0x3e	; 62
 396:	22 97       	sbiw	r28, 0x02	; 2
 398:	0f b6       	in	r0, 0x3f	; 63
 39a:	f8 94       	cli
 39c:	de bf       	out	0x3e, r29	; 62
 39e:	0f be       	out	0x3f, r0	; 63
 3a0:	cd bf       	out	0x3d, r28	; 61
	ds1302_write(ds1302_control_reg,0x80); 
 3a2:	60 e8       	ldi	r22, 0x80	; 128
 3a4:	8e e8       	ldi	r24, 0x8E	; 142
 3a6:	ce de       	rcall	.-612    	; 0x144
	if(ds1302_read(ds1302_control_reg)==0x80) return 1; 
 3a8:	8e e8       	ldi	r24, 0x8E	; 142
 3aa:	5b df       	rcall	.-330    	; 0x262
 3ac:	80 38       	cpi	r24, 0x80	; 128
 3ae:	29 f4       	brne	.+10     	; 0x3ba
 3b0:	81 e0       	ldi	r24, 0x01	; 1
 3b2:	90 e0       	ldi	r25, 0x00	; 0
 3b4:	89 83       	std	Y+1, r24	; 0x01
 3b6:	9a 83       	std	Y+2, r25	; 0x02
 3b8:	02 c0       	rjmp	.+4      	; 0x3be
		else return 0; 
 3ba:	19 82       	std	Y+1, r1	; 0x01
 3bc:	1a 82       	std	Y+2, r1	; 0x02
} 
 3be:	89 81       	ldd	r24, Y+1	; 0x01
 3c0:	9a 81       	ldd	r25, Y+2	; 0x02
 3c2:	22 96       	adiw	r28, 0x02	; 2
 3c4:	0f b6       	in	r0, 0x3f	; 63
 3c6:	f8 94       	cli
 3c8:	de bf       	out	0x3e, r29	; 62
 3ca:	0f be       	out	0x3f, r0	; 63
 3cc:	cd bf       	out	0x3d, r28	; 61
 3ce:	df 91       	pop	r29
 3d0:	cf 91       	pop	r28
 3d2:	08 95       	ret

000003d4 <ds1302_read_time>:
void ds1302_read_time(void) 
{ 
 3d4:	cf 93       	push	r28
 3d6:	df 93       	push	r29
 3d8:	cd b7       	in	r28, 0x3d	; 61
 3da:	de b7       	in	r29, 0x3e	; 62
	year=ds1302_read(ds1302_year_reg);  	//年 
 3dc:	8c e8       	ldi	r24, 0x8C	; 140
 3de:	41 df       	rcall	.-382    	; 0x262
 3e0:	80 93 60 00 	sts	0x0060, r24
	month=ds1302_read(ds1302_month_reg);	//月 
 3e4:	88 e8       	ldi	r24, 0x88	; 136
 3e6:	3d df       	rcall	.-390    	; 0x262
 3e8:	80 93 61 00 	sts	0x0061, r24
	day=ds1302_read(ds1302_date_reg);  		//日 
 3ec:	86 e8       	ldi	r24, 0x86	; 134
 3ee:	39 df       	rcall	.-398    	; 0x262
 3f0:	80 93 62 00 	sts	0x0062, r24
	week=ds1302_read(ds1302_day_reg);  		//周 
 3f4:	8a e8       	ldi	r24, 0x8A	; 138
 3f6:	35 df       	rcall	.-406    	; 0x262
 3f8:	80 93 63 00 	sts	0x0063, r24
	hour=ds1302_read(ds1302_hr_reg);   		//时 
 3fc:	84 e8       	ldi	r24, 0x84	; 132
 3fe:	31 df       	rcall	.-414    	; 0x262
 400:	80 93 64 00 	sts	0x0064, r24
	minute=ds1302_read(ds1302_min_reg);		//分 
 404:	82 e8       	ldi	r24, 0x82	; 130
 406:	2d df       	rcall	.-422    	; 0x262
 408:	80 93 65 00 	sts	0x0065, r24
	second=ds1302_read(ds1302_sec_reg);		//秒 
 40c:	80 e8       	ldi	r24, 0x80	; 128
 40e:	29 df       	rcall	.-430    	; 0x262
 410:	80 93 74 00 	sts	0x0074, r24
 414:	df 91       	pop	r29
 416:	cf 91       	pop	r28
 418:	08 95       	ret

0000041a <ds1302_write_time>:
} 
/******************************************************************/
void ds1302_write_time(void) 
{ 
 41a:	cf 93       	push	r28
 41c:	df 93       	push	r29
 41e:	cd b7       	in	r28, 0x3d	; 61
 420:	de b7       	in	r29, 0x3e	; 62
	ds1302_write(ds1302_control_reg,0x00);   //关闭写保护   
 422:	60 e0       	ldi	r22, 0x00	; 0
 424:	8e e8       	ldi	r24, 0x8E	; 142
 426:	8e de       	rcall	.-740    	; 0x144
	ds1302_write(ds1302_sec_reg,0x80);    	 //暂停    
 428:	60 e8       	ldi	r22, 0x80	; 128
 42a:	80 e8       	ldi	r24, 0x80	; 128
 42c:	8b de       	rcall	.-746    	; 0x144
	delay_nms(10); 
 42e:	8a e0       	ldi	r24, 0x0A	; 10
 430:	90 e0       	ldi	r25, 0x00	; 0
 432:	5e de       	rcall	.-836    	; 0xf0
	//ds1302_write(ds1302_charger_reg,0xa9);   //涓流充电 
	ds1302_write(ds1302_year_reg,year);    	 //年 
 434:	60 91 60 00 	lds	r22, 0x0060
 438:	8c e8       	ldi	r24, 0x8C	; 140
 43a:	84 de       	rcall	.-760    	; 0x144
	ds1302_write(ds1302_month_reg,month);  	 //月 
 43c:	60 91 61 00 	lds	r22, 0x0061
 440:	88 e8       	ldi	r24, 0x88	; 136
 442:	80 de       	rcall	.-768    	; 0x144
	ds1302_write(ds1302_date_reg,day);    	 //日 
 444:	60 91 62 00 	lds	r22, 0x0062
 448:	86 e8       	ldi	r24, 0x86	; 134
 44a:	7c de       	rcall	.-776    	; 0x144
	ds1302_write(ds1302_day_reg,week);    	 //周 
 44c:	60 91 63 00 	lds	r22, 0x0063
 450:	8a e8       	ldi	r24, 0x8A	; 138
 452:	78 de       	rcall	.-784    	; 0x144
	ds1302_write(ds1302_hr_reg,hour);     	 //时 
 454:	60 91 64 00 	lds	r22, 0x0064
 458:	84 e8       	ldi	r24, 0x84	; 132
 45a:	74 de       	rcall	.-792    	; 0x144
	ds1302_write(ds1302_min_reg,minute);  	 //分 
 45c:	60 91 65 00 	lds	r22, 0x0065
 460:	82 e8       	ldi	r24, 0x82	; 130
 462:	70 de       	rcall	.-800    	; 0x144
	ds1302_write(ds1302_sec_reg,second);  	 //秒   
 464:	60 91 74 00 	lds	r22, 0x0074
 468:	80 e8       	ldi	r24, 0x80	; 128
 46a:	6c de       	rcall	.-808    	; 0x144
	ds1302_write(ds1302_control_reg,0x80);   //打开写保护 
 46c:	60 e8       	ldi	r22, 0x80	; 128
 46e:	8e e8       	ldi	r24, 0x8E	; 142
 470:	69 de       	rcall	.-814    	; 0x144
 472:	df 91       	pop	r29
 474:	cf 91       	pop	r28
 476:	08 95       	ret

00000478 <delay>:
void normal_mode(void);
void setting_mode(void);

delay(unsigned int i)
{
 478:	cf 93       	push	r28
 47a:	df 93       	push	r29
 47c:	cd b7       	in	r28, 0x3d	; 61
 47e:	de b7       	in	r29, 0x3e	; 62
 480:	22 97       	sbiw	r28, 0x02	; 2
 482:	0f b6       	in	r0, 0x3f	; 63
 484:	f8 94       	cli
 486:	de bf       	out	0x3e, r29	; 62
 488:	0f be       	out	0x3f, r0	; 63
 48a:	cd bf       	out	0x3d, r28	; 61
 48c:	89 83       	std	Y+1, r24	; 0x01
 48e:	9a 83       	std	Y+2, r25	; 0x02
	for(;i>0;i--);
 490:	89 81       	ldd	r24, Y+1	; 0x01
 492:	9a 81       	ldd	r25, Y+2	; 0x02
 494:	00 97       	sbiw	r24, 0x00	; 0
 496:	31 f0       	breq	.+12     	; 0x4a4
 498:	89 81       	ldd	r24, Y+1	; 0x01
 49a:	9a 81       	ldd	r25, Y+2	; 0x02
 49c:	01 97       	sbiw	r24, 0x01	; 1
 49e:	89 83       	std	Y+1, r24	; 0x01
 4a0:	9a 83       	std	Y+2, r25	; 0x02
 4a2:	f6 cf       	rjmp	.-20     	; 0x490
 4a4:	22 96       	adiw	r28, 0x02	; 2
 4a6:	0f b6       	in	r0, 0x3f	; 63
 4a8:	f8 94       	cli
 4aa:	de bf       	out	0x3e, r29	; 62
 4ac:	0f be       	out	0x3f, r0	; 63
 4ae:	cd bf       	out	0x3d, r28	; 61
 4b0:	df 91       	pop	r29
 4b2:	cf 91       	pop	r28
 4b4:	08 95       	ret

000004b6 <__vector_9>:
	
}


/************************************************
调用方式:IGNAL(SIG_OVERFLOW0)
函数说明:定时器T0中断函数,用以扫描显示
传递参数:无
返 回 值:无
************************************************/
SIGNAL(SIG_OVERFLOW0)						//T0定时中断显示
{
 4b6:	1f 92       	push	r1
 4b8:	0f 92       	push	r0
 4ba:	0f b6       	in	r0, 0x3f	; 63
 4bc:	0f 92       	push	r0
 4be:	11 24       	eor	r1, r1
 4c0:	2f 93       	push	r18
 4c2:	3f 93       	push	r19
 4c4:	4f 93       	push	r20
 4c6:	5f 93       	push	r21
 4c8:	6f 93       	push	r22
 4ca:	7f 93       	push	r23
 4cc:	8f 93       	push	r24
 4ce:	9f 93       	push	r25
 4d0:	af 93       	push	r26
 4d2:	bf 93       	push	r27
 4d4:	ef 93       	push	r30
 4d6:	ff 93       	push	r31
 4d8:	cf 93       	push	r28
 4da:	df 93       	push	r29
 4dc:	cd b7       	in	r28, 0x3d	; 61
 4de:	de b7       	in	r29, 0x3e	; 62
	    PORTC&=0XF8;
 4e0:	88 ef       	ldi	r24, 0xF8	; 248
 4e2:	90 91 35 00 	lds	r25, 0x0035
 4e6:	89 23       	and	r24, r25
 4e8:	80 93 35 00 	sts	0x0035, r24
		setting_mode();
 4ec:	7e d0       	rcall	.+252    	; 0x5ea

⌨️ 快捷键说明

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