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

📄 main.lss

📁 avr常用功能程序中包含了pwm、adc、中断、定时、i2c等各程序可供开发者直接使用
💻 LSS
📖 第 1 页 / 共 3 页
字号:
	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 <main>:
	
}

/************************************************
调用方式:主函数
函数说明:
传递参数:无
返 回 值:无
************************************************/
int main(void)
{
 4b6:	ce e5       	ldi	r28, 0x5E	; 94
 4b8:	d4 e0       	ldi	r29, 0x04	; 4
 4ba:	de bf       	out	0x3e, r29	; 62
 4bc:	cd bf       	out	0x3d, r28	; 61
	unsigned char i;
	init();
 4be:	1f d0       	rcall	.+62     	; 0x4fe
	while(1)
	{
	hour=0x01;
 4c0:	81 e0       	ldi	r24, 0x01	; 1
 4c2:	80 93 64 00 	sts	0x0064, r24
	ds1302_write_time();//写入调整后的时间
 4c6:	a9 df       	rcall	.-174    	; 0x41a
	i=led[0];
 4c8:	80 91 66 00 	lds	r24, 0x0066
 4cc:	89 83       	std	Y+1, r24	; 0x01
	ds1302_read_time();
 4ce:	82 df       	rcall	.-252    	; 0x3d4
	led_data[0]=hour>>4;
 4d0:	80 91 64 00 	lds	r24, 0x0064
 4d4:	82 95       	swap	r24
 4d6:	8f 70       	andi	r24, 0x0F	; 15
 4d8:	80 93 79 00 	sts	0x0079, r24
	led_data[1]=hour&0x0f;
 4dc:	80 91 64 00 	lds	r24, 0x0064
 4e0:	8f 70       	andi	r24, 0x0F	; 15
 4e2:	80 93 7a 00 	sts	0x007A, r24

	PORTD=0Xfe;
 4e6:	8e ef       	ldi	r24, 0xFE	; 254
 4e8:	80 93 32 00 	sts	0x0032, r24
	transmission_byte(led[led_data[1]]);
 4ec:	80 91 7a 00 	lds	r24, 0x007A
 4f0:	99 27       	eor	r25, r25
 4f2:	fc 01       	movw	r30, r24
 4f4:	ea 59       	subi	r30, 0x9A	; 154
 4f6:	ff 4f       	sbci	r31, 0xFF	; 255
 4f8:	80 81       	ld	r24, Z
 4fa:	15 d0       	rcall	.+42     	; 0x526
	while(1);
 4fc:	ff cf       	rjmp	.-2      	; 0x4fc

000004fe <init>:
	delay(650);	
	PORTD=0Xfd;
	transmission_byte(0x00);
	delay(650);

	
	PORTD=0Xfb;
	transmission_byte(led[1]);
	delay(650);
	
	PORTD=0Xf7;
	transmission_byte(~led[1]);

	delay(650);
	}
}
//	year=0x06,month=0x03,day=0x15,week=0x02;
//	hour=0x10,minute=0x54,second=0x00;
//	ds1302_write_time();//写入调整后的时间
//	ds1302_read_time();
/*	
				led_data[0]=hour>>4;
				led_data[1]=hour&0x0f;
				led_data[2]=minute>>4;
				led_data[3]=minute&0x0f;
	*/			
/*	while(1)
	{
		switch(_key_())
		{
			case 1:
				if(++work_mode>4)work_mode=run_mode;
				break;
			case 2:
				break;
			case 3:
				break;
			case 4:
				break;
		}	
		switch(work_mode)
		{
			case run_mode:
				break;
			case T_time:
				setting_time();
				break;
			case T_rg:
				break;
			case T_yellow:
				break;
		}
		
	}
}	
/************************************************
调用方式:void setting_time(void)
函数说明:
传递参数:无
返 回 值:无
************************************************/
/*void setting_time(void)
{
//	TIMSK=~_BV(TOIE0);			//T0溢出中断禁止
//	TIMSK=_BV(TOIE0);			//T0溢出中断使能	
	uint i=10000;
	work_m=0;
	ds1302_read_time();
	while(--i)
	{
		switch(_key_())
		{
			case 1:
				if(++work_mode>=4)work_mode=1;
				ds1302_write_time();//写入调整后的时间
				return;
				break;
			case 2:
				if(work_m==T_h)
				hour++;
				if(work_m==T_m)
				minute++;
				if(work_m==0)
				break;
			case 3:
				if(++work_m>=3)work_m=0;
				break;		
		}
		switch(work_m)
		{
			case T_h://显示调整中的小时
				led_data[0]=hour>>4;
				led_data[1]=hour&0x0f;
				led_data[2]=NULL;
				led_data[3]=NULL;
				break;
			case T_m://显示调整中的分
				led_data[0]=NULL;
				led_data[1]=NULL;
				led_data[2]=minute>>4;
				led_data[3]=minute&0x0f;
				break;
			case 0://显示当前时间或调整后的时间
				led_data[0]=hour>>4;
				led_data[1]=hour&0x0f;
				led_data[2]=minute>>4;
				led_data[3]=minute&0x0f;			
				break;
		}
	}
}
/************************************************
调用方式:void init(void)
函数说明:
传递参数:无
返 回 值:无
************************************************/
void init(void)
{
 4fe:	cf 93       	push	r28
 500:	df 93       	push	r29
 502:	cd b7       	in	r28, 0x3d	; 61
 504:	de b7       	in	r29, 0x3e	; 62
//	T0_INIT();
	color=0;
 506:	10 92 7f 00 	sts	0x007F, r1
	jtd_row=0;
 50a:	10 92 72 00 	sts	0x0072, r1
	work_mode=run_mode;
 50e:	81 e0       	ldi	r24, 0x01	; 1
 510:	80 93 75 00 	sts	0x0075, r24
	//DDRB|=_BV(PB6);//为595锁存信号
	//DDRB|=_BV(PB0);
	//DDRB|=_BV(PB1);
	DDRB=0XFF;
 514:	8f ef       	ldi	r24, 0xFF	; 255
 516:	80 93 37 00 	sts	0x0037, r24
	DDRD=0xFF;//设置PD口高四位为按键输入,高四位设置为数码管位控输出
 51a:	8f ef       	ldi	r24, 0xFF	; 255
 51c:	80 93 31 00 	sts	0x0031, r24
 520:	df 91       	pop	r29
 522:	cf 91       	pop	r28
 524:	08 95       	ret

00000526 <transmission_byte>:
}



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

void transmission_byte(uchar x_byte)
{
 526:	cf 93       	push	r28
 528:	df 93       	push	r29
 52a:	cd b7       	in	r28, 0x3d	; 61
 52c:	de b7       	in	r29, 0x3e	; 62
 52e:	23 97       	sbiw	r28, 0x03	; 3
 530:	0f b6       	in	r0, 0x3f	; 63
 532:	f8 94       	cli
 534:	de bf       	out	0x3e, r29	; 62
 536:	0f be       	out	0x3f, r0	; 63
 538:	cd bf       	out	0x3d, r28	; 61
 53a:	89 83       	std	Y+1, r24	; 0x01
	unsigned char i,j;
	for(i=0;i<8;i++)
 53c:	1a 82       	std	Y+2, r1	; 0x02
 53e:	8a 81       	ldd	r24, Y+2	; 0x02
 540:	88 30       	cpi	r24, 0x08	; 8
 542:	40 f5       	brcc	.+80     	; 0x594
	{
		j=x_byte&0x80;
 544:	90 e8       	ldi	r25, 0x80	; 128
 546:	89 81       	ldd	r24, Y+1	; 0x01
 548:	89 23       	and	r24, r25
 54a:	8b 83       	std	Y+3, r24	; 0x03
		if(j==0x80)
 54c:	8b 81       	ldd	r24, Y+3	; 0x03
 54e:	80 38       	cpi	r24, 0x80	; 128
 550:	31 f4       	brne	.+12     	; 0x55e
			set_data();
 552:	80 91 38 00 	lds	r24, 0x0038
 556:	82 60       	ori	r24, 0x02	; 2
 558:	80 93 38 00 	sts	0x0038, r24
 55c:	05 c0       	rjmp	.+10     	; 0x568
		else clr_data();
 55e:	80 91 38 00 	lds	r24, 0x0038
 562:	8d 7f       	andi	r24, 0xFD	; 253
 564:	80 93 38 00 	sts	0x0038, r24
			clr_clk(); 
 568:	80 91 38 00 	lds	r24, 0x0038
 56c:	8e 7f       	andi	r24, 0xFE	; 254
 56e:	80 93 38 00 	sts	0x0038, r24
 			set_clk();
 572:	80 91 38 00 	lds	r24, 0x0038
 576:	81 60       	ori	r24, 0x01	; 1
 578:	80 93 38 00 	sts	0x0038, r24
			clr_clk();  
 57c:	80 91 38 00 	lds	r24, 0x0038
 580:	8e 7f       	andi	r24, 0xFE	; 254
 582:	80 93 38 00 	sts	0x0038, r24
		x_byte=x_byte<<1; 
 586:	89 81       	ldd	r24, Y+1	; 0x01
 588:	88 0f       	add	r24, r24
 58a:	89 83       	std	Y+1, r24	; 0x01
 58c:	8a 81       	ldd	r24, Y+2	; 0x02
 58e:	8f 5f       	subi	r24, 0xFF	; 255
 590:	8a 83       	std	Y+2, r24	; 0x02
 592:	d5 cf       	rjmp	.-86     	; 0x53e
 594:	23 96       	adiw	r28, 0x03	; 3
 596:	0f b6       	in	r0, 0x3f	; 63
 598:	f8 94       	cli
 59a:	de bf       	out	0x3e, r29	; 62
 59c:	0f be       	out	0x3f, r0	; 63
 59e:	cd bf       	out	0x3d, r28	; 61
 5a0:	df 91       	pop	r29
 5a2:	cf 91       	pop	r28
 5a4:	08 95       	ret

⌨️ 快捷键说明

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