📄 main.lss
字号:
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 + -