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