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

📄 main.lss

📁 avr常用功能程序中包含了pwm、adc、中断、定时、i2c等各程序可供开发者直接使用
💻 LSS
📖 第 1 页 / 共 3 页
字号:
 4ee:	df 91       	pop	r29
 4f0:	cf 91       	pop	r28
 4f2:	ff 91       	pop	r31
 4f4:	ef 91       	pop	r30
 4f6:	bf 91       	pop	r27
 4f8:	af 91       	pop	r26
 4fa:	9f 91       	pop	r25
 4fc:	8f 91       	pop	r24
 4fe:	7f 91       	pop	r23
 500:	6f 91       	pop	r22
 502:	5f 91       	pop	r21
 504:	4f 91       	pop	r20
 506:	3f 91       	pop	r19
 508:	2f 91       	pop	r18
 50a:	0f 90       	pop	r0
 50c:	0f be       	out	0x3f, r0	; 63
 50e:	0f 90       	pop	r0
 510:	1f 90       	pop	r1
 512:	18 95       	reti

00000514 <T0_INIT>:
//		PORTD=0Xfe;
//		transmission_byte(0);

}

/************************************************
调用方式:void T0_INIT(void)
函数说明:初始化定时器T0
传递参数:无
返 回 值:无
************************************************/
void T0_INIT(void)				//溢出中断用于秒记时
{
 514:	cf 93       	push	r28
 516:	df 93       	push	r29
 518:	cd b7       	in	r28, 0x3d	; 61
 51a:	de b7       	in	r29, 0x3e	; 62
	//T/C0 中断例程 7.3728MHz
	TCNT0=00;
 51c:	10 92 52 00 	sts	0x0052, r1
	//TCCR0=_BV(CS01)|_BV(CS00);	// 预分频 ck/64 ,计数允许 
	TCCR0=_BV(CS01);			//ck/8
 520:	82 e0       	ldi	r24, 0x02	; 2
 522:	80 93 53 00 	sts	0x0053, r24
	TIMSK=_BV(TOIE0);			//T0溢出中断使能
 526:	81 e0       	ldi	r24, 0x01	; 1
 528:	80 93 59 00 	sts	0x0059, r24
	TIFR&=~(1<<TOV0);		//清除没有执行的中断
 52c:	80 91 58 00 	lds	r24, 0x0058
 530:	8e 7f       	andi	r24, 0xFE	; 254
 532:	80 93 58 00 	sts	0x0058, r24
	SREG=0X80;				//中断EN  or  use  sei();
 536:	80 e8       	ldi	r24, 0x80	; 128
 538:	80 93 5f 00 	sts	0x005F, r24
 53c:	df 91       	pop	r29
 53e:	cf 91       	pop	r28
 540:	08 95       	ret

00000542 <main>:
}



/************************************************
调用方式:主函数
函数说明:
传递参数:无
返 回 值:无
************************************************/
int main(void)
{
 542:	cf e5       	ldi	r28, 0x5F	; 95
 544:	d4 e0       	ldi	r29, 0x04	; 4
 546:	de bf       	out	0x3e, r29	; 62
 548:	cd bf       	out	0x3d, r28	; 61
	PORTC=0XFE;
 54a:	8e ef       	ldi	r24, 0xFE	; 254
 54c:	80 93 35 00 	sts	0x0035, r24
	transmission_byte(0XFF);
 550:	8f ef       	ldi	r24, 0xFF	; 255
 552:	bc d0       	rcall	.+376    	; 0x6cc
	init();
 554:	31 d0       	rcall	.+98     	; 0x5b8
	T0_INIT();
 556:	de df       	rcall	.-68     	; 0x514
	hour=0x01;
 558:	81 e0       	ldi	r24, 0x01	; 1
 55a:	80 93 64 00 	sts	0x0064, r24
	year=0x06,month=0x03,day=0x15,week=0x02;
 55e:	86 e0       	ldi	r24, 0x06	; 6
 560:	80 93 60 00 	sts	0x0060, r24
 564:	83 e0       	ldi	r24, 0x03	; 3
 566:	80 93 61 00 	sts	0x0061, r24
 56a:	85 e1       	ldi	r24, 0x15	; 21
 56c:	80 93 62 00 	sts	0x0062, r24
 570:	82 e0       	ldi	r24, 0x02	; 2
 572:	80 93 63 00 	sts	0x0063, r24
	hour=0x02,minute=0x14,second=0x00;
 576:	82 e0       	ldi	r24, 0x02	; 2
 578:	80 93 64 00 	sts	0x0064, r24
 57c:	84 e1       	ldi	r24, 0x14	; 20
 57e:	80 93 65 00 	sts	0x0065, r24
 582:	10 92 74 00 	sts	0x0074, r1
	ds1302_write_time();//写入调整后的时间
 586:	49 df       	rcall	.-366    	; 0x41a

	while(1)
	{
				led_data_1=hour>>4;
 588:	80 91 64 00 	lds	r24, 0x0064
 58c:	82 95       	swap	r24
 58e:	8f 70       	andi	r24, 0x0F	; 15
 590:	80 93 7f 00 	sts	0x007F, r24
				led_data_2=hour&0x0f;
 594:	80 91 64 00 	lds	r24, 0x0064
 598:	8f 70       	andi	r24, 0x0F	; 15
 59a:	80 93 79 00 	sts	0x0079, r24
				led_data_3=minute>>4;
 59e:	80 91 65 00 	lds	r24, 0x0065
 5a2:	82 95       	swap	r24
 5a4:	8f 70       	andi	r24, 0x0F	; 15
 5a6:	80 93 78 00 	sts	0x0078, r24
				led_data_4=minute&0x0f;	
 5aa:	80 91 65 00 	lds	r24, 0x0065
 5ae:	8f 70       	andi	r24, 0x0F	; 15
 5b0:	80 93 7d 00 	sts	0x007D, r24
				
				ds1302_read_time();
 5b4:	0f df       	rcall	.-482    	; 0x3d4
 5b6:	e8 cf       	rjmp	.-48     	; 0x588

000005b8 <init>:
	}
}

/************************************************
调用方式:void init(void)
函数说明:
传递参数:无
返 回 值:无
************************************************/
void init(void)
{
 5b8:	cf 93       	push	r28
 5ba:	df 93       	push	r29
 5bc:	cd b7       	in	r28, 0x3d	; 61
 5be:	de b7       	in	r29, 0x3e	; 62
	//T0_INIT();
//	color=0;
	led_wei=0;
 5c0:	10 92 7a 00 	sts	0x007A, r1
	jtd_row=0;
 5c4:	10 92 72 00 	sts	0x0072, r1
	work_mode=run_mode;
 5c8:	81 e0       	ldi	r24, 0x01	; 1
 5ca:	80 93 75 00 	sts	0x0075, r24
	DDRC|=(1<<PC0)|(1<<PC1)|(1<<PC2);
 5ce:	80 91 34 00 	lds	r24, 0x0034
 5d2:	87 60       	ori	r24, 0x07	; 7
 5d4:	80 93 34 00 	sts	0x0034, r24
	//DDRB|=_BV(PB6);//为595锁存信号
	//DDRB|=_BV(PB0);
	//DDRB|=_BV(PB1);
	DDRB=0XFF;
 5d8:	8f ef       	ldi	r24, 0xFF	; 255
 5da:	80 93 37 00 	sts	0x0037, r24
	DDRD=0xFF;//设置PD口高四位为按键输入,高四位设置为数码管位控输出
 5de:	8f ef       	ldi	r24, 0xFF	; 255
 5e0:	80 93 31 00 	sts	0x0031, r24
 5e4:	df 91       	pop	r29
 5e6:	cf 91       	pop	r28
 5e8:	08 95       	ret

000005ea <setting_mode>:
}




/************************************************
调用方式:void setting_mode(void)
函数说明:
传递参数:无
返 回 值:无
************************************************/
void setting_mode(void)
{
 5ea:	cf 93       	push	r28
 5ec:	df 93       	push	r29
 5ee:	cd b7       	in	r28, 0x3d	; 61
 5f0:	de b7       	in	r29, 0x3e	; 62
 5f2:	22 97       	sbiw	r28, 0x02	; 2
 5f4:	0f b6       	in	r0, 0x3f	; 63
 5f6:	f8 94       	cli
 5f8:	de bf       	out	0x3e, r29	; 62
 5fa:	0f be       	out	0x3f, r0	; 63
 5fc:	cd bf       	out	0x3d, r28	; 61
	PORTD=0xff;
 5fe:	8f ef       	ldi	r24, 0xFF	; 255
 600:	80 93 32 00 	sts	0x0032, r24
	switch(led_wei)
 604:	80 91 7a 00 	lds	r24, 0x007A
 608:	28 2f       	mov	r18, r24
 60a:	33 27       	eor	r19, r19
 60c:	29 83       	std	Y+1, r18	; 0x01
 60e:	3a 83       	std	Y+2, r19	; 0x02
 610:	89 81       	ldd	r24, Y+1	; 0x01
 612:	9a 81       	ldd	r25, Y+2	; 0x02
 614:	81 30       	cpi	r24, 0x01	; 1
 616:	91 05       	cpc	r25, r1
 618:	f1 f0       	breq	.+60     	; 0x656
 61a:	29 81       	ldd	r18, Y+1	; 0x01
 61c:	3a 81       	ldd	r19, Y+2	; 0x02
 61e:	22 30       	cpi	r18, 0x02	; 2
 620:	31 05       	cpc	r19, r1
 622:	2c f4       	brge	.+10     	; 0x62e
 624:	89 81       	ldd	r24, Y+1	; 0x01
 626:	9a 81       	ldd	r25, Y+2	; 0x02
 628:	00 97       	sbiw	r24, 0x00	; 0
 62a:	61 f0       	breq	.+24     	; 0x644
 62c:	2e c0       	rjmp	.+92     	; 0x68a
 62e:	29 81       	ldd	r18, Y+1	; 0x01
 630:	3a 81       	ldd	r19, Y+2	; 0x02
 632:	22 30       	cpi	r18, 0x02	; 2
 634:	31 05       	cpc	r19, r1
 636:	c1 f0       	breq	.+48     	; 0x668
 638:	89 81       	ldd	r24, Y+1	; 0x01
 63a:	9a 81       	ldd	r25, Y+2	; 0x02
 63c:	83 30       	cpi	r24, 0x03	; 3
 63e:	91 05       	cpc	r25, r1
 640:	e1 f0       	breq	.+56     	; 0x67a
 642:	23 c0       	rjmp	.+70     	; 0x68a
	{
		case 0:
			transmission_byte(led[led_data_1]);			
 644:	80 91 7f 00 	lds	r24, 0x007F
 648:	99 27       	eor	r25, r25
 64a:	fc 01       	movw	r30, r24
 64c:	ea 59       	subi	r30, 0x9A	; 154
 64e:	ff 4f       	sbci	r31, 0xFF	; 255
 650:	80 81       	ld	r24, Z
 652:	3c d0       	rcall	.+120    	; 0x6cc
			break;
 654:	1a c0       	rjmp	.+52     	; 0x68a
		case 1:
			transmission_byte(led[led_data_2]);			
 656:	80 91 79 00 	lds	r24, 0x0079
 65a:	99 27       	eor	r25, r25
 65c:	fc 01       	movw	r30, r24
 65e:	ea 59       	subi	r30, 0x9A	; 154
 660:	ff 4f       	sbci	r31, 0xFF	; 255
 662:	80 81       	ld	r24, Z
 664:	33 d0       	rcall	.+102    	; 0x6cc
			break;
 666:	11 c0       	rjmp	.+34     	; 0x68a
		case 2:
			transmission_byte(led[led_data_3]);			
 668:	80 91 78 00 	lds	r24, 0x0078
 66c:	99 27       	eor	r25, r25
 66e:	fc 01       	movw	r30, r24
 670:	ea 59       	subi	r30, 0x9A	; 154
 672:	ff 4f       	sbci	r31, 0xFF	; 255
 674:	80 81       	ld	r24, Z
 676:	2a d0       	rcall	.+84     	; 0x6cc
			break;
 678:	08 c0       	rjmp	.+16     	; 0x68a
		case 3:
			transmission_byte(led[led_data_4]);			
 67a:	80 91 7d 00 	lds	r24, 0x007D
 67e:	99 27       	eor	r25, r25
 680:	fc 01       	movw	r30, r24
 682:	ea 59       	subi	r30, 0x9A	; 154
 684:	ff 4f       	sbci	r31, 0xFF	; 255
 686:	80 81       	ld	r24, Z
 688:	21 d0       	rcall	.+66     	; 0x6cc
			break;
	}
	PORTD=led_wx;
 68a:	80 91 71 00 	lds	r24, 0x0071
 68e:	80 93 32 00 	sts	0x0032, r24
	led_wx=(led_wx<<1)|0x01;
 692:	80 91 71 00 	lds	r24, 0x0071
 696:	99 27       	eor	r25, r25
 698:	88 0f       	add	r24, r24
 69a:	99 1f       	adc	r25, r25
 69c:	81 60       	ori	r24, 0x01	; 1
 69e:	80 93 71 00 	sts	0x0071, r24
	if(++led_wei>3)
 6a2:	80 91 7a 00 	lds	r24, 0x007A
 6a6:	8f 5f       	subi	r24, 0xFF	; 255
 6a8:	80 93 7a 00 	sts	0x007A, r24
 6ac:	84 30       	cpi	r24, 0x04	; 4
 6ae:	28 f0       	brcs	.+10     	; 0x6ba
		{
			led_wei=0;
 6b0:	10 92 7a 00 	sts	0x007A, r1
			led_wx=0xfe;
 6b4:	8e ef       	ldi	r24, 0xFE	; 254
 6b6:	80 93 71 00 	sts	0x0071, r24
 6ba:	22 96       	adiw	r28, 0x02	; 2
 6bc:	0f b6       	in	r0, 0x3f	; 63
 6be:	f8 94       	cli
 6c0:	de bf       	out	0x3e, r29	; 62
 6c2:	0f be       	out	0x3f, r0	; 63
 6c4:	cd bf       	out	0x3d, r28	; 61
 6c6:	df 91       	pop	r29
 6c8:	cf 91       	pop	r28
 6ca:	08 95       	ret

000006cc <transmission_byte>:
		}
}

/************************************************
调用方式:uchar transmission_byte(uchar x_byte)
函数说明:用IO口模拟SPI发送一个字节数据
传递参数:发送数据 uchar x_byte
返 回 值:无
************************************************/

void transmission_byte(uchar x_byte)
{
 6cc:	cf 93       	push	r28
 6ce:	df 93       	push	r29
 6d0:	cd b7       	in	r28, 0x3d	; 61
 6d2:	de b7       	in	r29, 0x3e	; 62
 6d4:	23 97       	sbiw	r28, 0x03	; 3
 6d6:	0f b6       	in	r0, 0x3f	; 63
 6d8:	f8 94       	cli
 6da:	de bf       	out	0x3e, r29	; 62
 6dc:	0f be       	out	0x3f, r0	; 63
 6de:	cd bf       	out	0x3d, r28	; 61
 6e0:	89 83       	std	Y+1, r24	; 0x01
	unsigned char i,j;
	for(i=0;i<8;i++)
 6e2:	1a 82       	std	Y+2, r1	; 0x02
 6e4:	8a 81       	ldd	r24, Y+2	; 0x02
 6e6:	88 30       	cpi	r24, 0x08	; 8
 6e8:	40 f5       	brcc	.+80     	; 0x73a
	{
		j=x_byte&0x80;
 6ea:	90 e8       	ldi	r25, 0x80	; 128
 6ec:	89 81       	ldd	r24, Y+1	; 0x01
 6ee:	89 23       	and	r24, r25
 6f0:	8b 83       	std	Y+3, r24	; 0x03
		if(j==0x80)
 6f2:	8b 81       	ldd	r24, Y+3	; 0x03
 6f4:	80 38       	cpi	r24, 0x80	; 128
 6f6:	31 f4       	brne	.+12     	; 0x704
			set_data();
 6f8:	80 91 38 00 	lds	r24, 0x0038
 6fc:	82 60       	ori	r24, 0x02	; 2
 6fe:	80 93 38 00 	sts	0x0038, r24
 702:	05 c0       	rjmp	.+10     	; 0x70e
		else clr_data();
 704:	80 91 38 00 	lds	r24, 0x0038
 708:	8d 7f       	andi	r24, 0xFD	; 253
 70a:	80 93 38 00 	sts	0x0038, r24
			clr_clk(); 
 70e:	80 91 38 00 	lds	r24, 0x0038
 712:	8e 7f       	andi	r24, 0xFE	; 254
 714:	80 93 38 00 	sts	0x0038, r24
 			set_clk();
 718:	80 91 38 00 	lds	r24, 0x0038
 71c:	81 60       	ori	r24, 0x01	; 1
 71e:	80 93 38 00 	sts	0x0038, r24
			clr_clk();  
 722:	80 91 38 00 	lds	r24, 0x0038
 726:	8e 7f       	andi	r24, 0xFE	; 254
 728:	80 93 38 00 	sts	0x0038, r24
		x_byte=x_byte<<1; 
 72c:	89 81       	ldd	r24, Y+1	; 0x01
 72e:	88 0f       	add	r24, r24
 730:	89 83       	std	Y+1, r24	; 0x01
 732:	8a 81       	ldd	r24, Y+2	; 0x02
 734:	8f 5f       	subi	r24, 0xFF	; 255
 736:	8a 83       	std	Y+2, r24	; 0x02
 738:	d5 cf       	rjmp	.-86     	; 0x6e4
 73a:	23 96       	adiw	r28, 0x03	; 3
 73c:	0f b6       	in	r0, 0x3f	; 63
 73e:	f8 94       	cli
 740:	de bf       	out	0x3e, r29	; 62
 742:	0f be       	out	0x3f, r0	; 63
 744:	cd bf       	out	0x3d, r28	; 61
 746:	df 91       	pop	r29
 748:	cf 91       	pop	r28
 74a:	08 95       	ret

⌨️ 快捷键说明

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