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

📄 main.lss

📁 avr常用功能程序中包含了pwm、adc、中断、定时、i2c等各程序可供开发者直接使用
💻 LSS
📖 第 1 页 / 共 3 页
字号:
		clr_ds1302_sclk(); 
 1f2:	80 91 35 00 	lds	r24, 0x0035
 1f6:	8f 7e       	andi	r24, 0xEF	; 239
 1f8:	80 93 35 00 	sts	0x0035, r24
		delay_nus(500); 
 1fc:	84 ef       	ldi	r24, 0xF4	; 244
 1fe:	91 e0       	ldi	r25, 0x01	; 1
 200:	35 df       	rcall	.-406    	; 0x6c
		if((data&0x01)==0x01) 
 202:	8a 81       	ldd	r24, Y+2	; 0x02
 204:	99 27       	eor	r25, r25
 206:	81 70       	andi	r24, 0x01	; 1
 208:	90 70       	andi	r25, 0x00	; 0
 20a:	00 97       	sbiw	r24, 0x00	; 0
 20c:	31 f0       	breq	.+12     	; 0x21a
			set_ds1302_io(); 
 20e:	80 91 35 00 	lds	r24, 0x0035
 212:	80 62       	ori	r24, 0x20	; 32
 214:	80 93 35 00 	sts	0x0035, r24
 218:	05 c0       	rjmp	.+10     	; 0x224
		else 
			clr_ds1302_io(); 
 21a:	80 91 35 00 	lds	r24, 0x0035
 21e:	8f 7d       	andi	r24, 0xDF	; 223
 220:	80 93 35 00 	sts	0x0035, r24
		set_ds1302_sclk(); /*时钟*/
 224:	80 91 35 00 	lds	r24, 0x0035
 228:	80 61       	ori	r24, 0x10	; 16
 22a:	80 93 35 00 	sts	0x0035, r24
		
		data>>=1; 
 22e:	8a 81       	ldd	r24, Y+2	; 0x02
 230:	86 95       	lsr	r24
 232:	8a 83       	std	Y+2, r24	; 0x02
 234:	8b 81       	ldd	r24, Y+3	; 0x03
 236:	81 50       	subi	r24, 0x01	; 1
 238:	8b 83       	std	Y+3, r24	; 0x03
 23a:	d8 cf       	rjmp	.-80     	; 0x1ec
	} 
	clr_ds1302_rst(); 		/*置0,结束本次数据传送,I/O引脚变为高阻态*/
 23c:	80 91 35 00 	lds	r24, 0x0035
 240:	87 7f       	andi	r24, 0xF7	; 247
 242:	80 93 35 00 	sts	0x0035, r24
	clr_ds1302_io_ddr(); 	/*设为输入*/
 246:	80 91 34 00 	lds	r24, 0x0034
 24a:	8f 7d       	andi	r24, 0xDF	; 223
 24c:	80 93 34 00 	sts	0x0034, r24
 250:	23 96       	adiw	r28, 0x03	; 3
 252:	0f b6       	in	r0, 0x3f	; 63
 254:	f8 94       	cli
 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

⌨️ 快捷键说明

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