📄 elevator.lst
字号:
58a: 90 e5 ldi r25, 0x50 ; 80
58c: 90 93 02 02 sts 0x0202, r25
590: 80 93 01 02 sts 0x0201, r24
ppi_ctrl1=PPI_1_CT;
594: 83 e0 ldi r24, 0x03 ; 3
596: 90 e6 ldi r25, 0x60 ; 96
598: 90 93 00 02 sts 0x0200, r25
59c: 80 93 ff 01 sts 0x01FF, r24
seg=PPI_1_PA;
5a0: 80 e0 ldi r24, 0x00 ; 0
5a2: 90 e6 ldi r25, 0x60 ; 96
5a4: 90 93 df 01 sts 0x01DF, r25
5a8: 80 93 de 01 sts 0x01DE, r24
ppi_pb=PPI_1_PB;
5ac: 81 e0 ldi r24, 0x01 ; 1
5ae: 90 e6 ldi r25, 0x60 ; 96
5b0: 90 93 fb 01 sts 0x01FB, r25
5b4: 80 93 fa 01 sts 0x01FA, r24
key=PPI_1_PC;
5b8: 82 e0 ldi r24, 0x02 ; 2
5ba: 90 e6 ldi r25, 0x60 ; 96
5bc: 90 93 fd 01 sts 0x01FD, r25
5c0: 80 93 fc 01 sts 0x01FC, r24
*ppi_ctrl=0x80;
5c4: 80 e8 ldi r24, 0x80 ; 128
5c6: 80 93 03 50 sts 0x5003, r24
*ppi_ctrl1=0x80;
5ca: 80 93 03 60 sts 0x6003, r24
*key=0x00;
5ce: 10 92 02 60 sts 0x6002, r1
5d2: 08 95 ret
000005d4 <delay>:
5d4: 40 e0 ldi r20, 0x00 ; 0
5d6: 50 e0 ldi r21, 0x00 ; 0
5d8: 48 17 cp r20, r24
5da: 59 07 cpc r21, r25
5dc: 6c f4 brge .+26 ; 0x5f8 <delay+0x24>
5de: 20 e0 ldi r18, 0x00 ; 0
5e0: 30 e0 ldi r19, 0x00 ; 0
5e2: 02 c0 rjmp .+4 ; 0x5e8 <delay+0x14>
5e4: 2f 5f subi r18, 0xFF ; 255
5e6: 3f 4f sbci r19, 0xFF ; 255
5e8: 26 17 cp r18, r22
5ea: 37 07 cpc r19, r23
5ec: dc f3 brlt .-10 ; 0x5e4 <delay+0x10>
5ee: 4f 5f subi r20, 0xFF ; 255
5f0: 5f 4f sbci r21, 0xFF ; 255
5f2: 48 17 cp r20, r24
5f4: 59 07 cpc r21, r25
5f6: 9c f3 brlt .-26 ; 0x5de <delay+0xa>
5f8: 08 95 ret
000005fa <key_scan>:
}
//=============================================================
// 功能模块: 点阵显示模块
// 实现功能: 实现点阵的静态与动态的显示
// 包含函数: void matrix(unsigned char *matrix1)
// void move(unsigned char *move1,unsigned char i)
// void display(unsigned char *green1,unsigned char *red1)
// void display(unsigned char *green1,unsigned char *red1)
//=============================================================
void matrix(unsigned char *matrix1)
{ unsigned char i=0;
for(i=0;i<8;i++)
{move(matrix1,i); display(all,blank);}
for(i=0;i<8;i++) font[i]=0;
}
void move(unsigned char *move1,unsigned char i)
{ unsigned char k,j,m;
k=0;
j=7-i;
do{ font[j]=move1[k];
if(dir==0)
{for(m=0;m<8;m++)
all[m]=font[m]|font_number[f][m];}
else
{for(m=0;m<8;m++)
all[m]=font[m]|font_number[f][7-m];}
j++;
k++;
} while(i--);
}
void display(unsigned char *green1,unsigned char *red1)
{unsigned char i=0,j=0;
for (j=0;j<15;j++)
{for (i=0;i<8;i++)
{ *green=green1[i];
*red=red1[i];
if(dir==0) *line=(0x01<<i);
else *line=(0x80>>i);
delay(100,70);
}
}
}
//=============================================================
// 功能模块: 键盘模块
// 实现功能: 实现键盘扫描与键值和所实现功能按键值得转化
// 包含函数: unsigned char key_scan(void) 使用的是线翻转法
// void out_put(unsigned char in)
//=============================================================
unsigned char key_scan(void)
{unsigned char save_low,save_high;
5fa: 1f 93 push r17
5fc: cf 93 push r28
*ppi_ctrl1=0x81;
5fe: e0 91 ff 01 lds r30, 0x01FF
602: f0 91 00 02 lds r31, 0x0200
606: 81 e8 ldi r24, 0x81 ; 129
608: 80 83 st Z, r24
*seg=fnd[bin];
60a: a0 91 de 01 lds r26, 0x01DE
60e: b0 91 df 01 lds r27, 0x01DF
612: 80 91 fe 01 lds r24, 0x01FE
616: e8 2f mov r30, r24
618: ff 27 eor r31, r31
61a: e0 50 subi r30, 0x00 ; 0
61c: ff 4f sbci r31, 0xFF ; 255
61e: 80 81 ld r24, Z
620: 8c 93 st X, r24
*key=0xf0;
622: e0 91 fc 01 lds r30, 0x01FC
626: f0 91 fd 01 lds r31, 0x01FD
62a: 80 ef ldi r24, 0xF0 ; 240
62c: 80 83 st Z, r24
delay(10,10);
62e: 6a e0 ldi r22, 0x0A ; 10
630: 70 e0 ldi r23, 0x00 ; 0
632: cb 01 movw r24, r22
634: 0e 94 ea 02 call 0x5d4 <delay>
save_low=*key&0x0f;
638: e0 91 fc 01 lds r30, 0x01FC
63c: f0 91 fd 01 lds r31, 0x01FD
640: c0 81 ld r28, Z
642: cf 70 andi r28, 0x0F ; 15
*ppi_ctrl1=0x80;
644: e0 91 ff 01 lds r30, 0x01FF
648: f0 91 00 02 lds r31, 0x0200
64c: 10 e8 ldi r17, 0x80 ; 128
64e: 10 83 st Z, r17
*seg=fnd[bin];
650: a0 91 de 01 lds r26, 0x01DE
654: b0 91 df 01 lds r27, 0x01DF
658: 80 91 fe 01 lds r24, 0x01FE
65c: e8 2f mov r30, r24
65e: ff 27 eor r31, r31
660: e0 50 subi r30, 0x00 ; 0
662: ff 4f sbci r31, 0xFF ; 255
664: 80 81 ld r24, Z
666: 8c 93 st X, r24
*key=0x00;
668: e0 91 fc 01 lds r30, 0x01FC
66c: f0 91 fd 01 lds r31, 0x01FD
670: 10 82 st Z, r1
if(save_low)
672: cc 23 and r28, r28
674: 19 f4 brne .+6 ; 0x67c <key_scan+0x82>
{
*ppi_ctrl1=0x88;
*seg=fnd[bin];
*key=0x0f;
delay(10,10);
save_high=*key&0xf0;
*ppi_ctrl1=0x80;
*seg=fnd[bin];
*key=0x00;
if(!save_high)
return 0;
save_high|=save_low;
return save_high;
}
return 0;
676: 80 e0 ldi r24, 0x00 ; 0
678: 90 e0 ldi r25, 0x00 ; 0
67a: 3e c0 rjmp .+124 ; 0x6f8 <key_scan+0xfe>
67c: e0 91 ff 01 lds r30, 0x01FF
680: f0 91 00 02 lds r31, 0x0200
684: 88 e8 ldi r24, 0x88 ; 136
686: 80 83 st Z, r24
688: a0 91 de 01 lds r26, 0x01DE
68c: b0 91 df 01 lds r27, 0x01DF
690: 80 91 fe 01 lds r24, 0x01FE
694: e8 2f mov r30, r24
696: ff 27 eor r31, r31
698: e0 50 subi r30, 0x00 ; 0
69a: ff 4f sbci r31, 0xFF ; 255
69c: 80 81 ld r24, Z
69e: 8c 93 st X, r24
6a0: e0 91 fc 01 lds r30, 0x01FC
6a4: f0 91 fd 01 lds r31, 0x01FD
6a8: 8f e0 ldi r24, 0x0F ; 15
6aa: 80 83 st Z, r24
6ac: 6a e0 ldi r22, 0x0A ; 10
6ae: 70 e0 ldi r23, 0x00 ; 0
6b0: cb 01 movw r24, r22
6b2: 0e 94 ea 02 call 0x5d4 <delay>
6b6: e0 91 fc 01 lds r30, 0x01FC
6ba: f0 91 fd 01 lds r31, 0x01FD
6be: 90 81 ld r25, Z
6c0: 90 7f andi r25, 0xF0 ; 240
6c2: e0 91 ff 01 lds r30, 0x01FF
6c6: f0 91 00 02 lds r31, 0x0200
6ca: 10 83 st Z, r17
6cc: a0 91 de 01 lds r26, 0x01DE
6d0: b0 91 df 01 lds r27, 0x01DF
6d4: 80 91 fe 01 lds r24, 0x01FE
6d8: e8 2f mov r30, r24
6da: ff 27 eor r31, r31
6dc: e0 50 subi r30, 0x00 ; 0
6de: ff 4f sbci r31, 0xFF ; 255
6e0: 80 81 ld r24, Z
6e2: 8c 93 st X, r24
6e4: e0 91 fc 01 lds r30, 0x01FC
6e8: f0 91 fd 01 lds r31, 0x01FD
6ec: 10 82 st Z, r1
6ee: 99 23 and r25, r25
6f0: 11 f2 breq .-124 ; 0x676 <key_scan+0x7c>
6f2: 9c 2b or r25, r28
6f4: 89 2f mov r24, r25
6f6: 99 27 eor r25, r25
6f8: cf 91 pop r28
6fa: 1f 91 pop r17
6fc: 08 95 ret
000006fe <out_put>:
}
void out_put(unsigned char in)
{unsigned char a=0;
6fe: a0 e0 ldi r26, 0x00 ; 0
switch(in){
700: 99 27 eor r25, r25
702: 88 32 cpi r24, 0x28 ; 40
704: 91 05 cpc r25, r1
706: 09 f4 brne .+2 ; 0x70a <out_put+0xc>
708: 5e c0 rjmp .+188 ; 0x7c6 <out_put+0xc8>
70a: 89 32 cpi r24, 0x29 ; 41
70c: 91 05 cpc r25, r1
70e: 9c f4 brge .+38 ; 0x736 <out_put+0x38>
710: 88 31 cpi r24, 0x18 ; 24
712: 91 05 cpc r25, r1
714: c9 f1 breq .+114 ; 0x788 <out_put+0x8a>
716: 89 31 cpi r24, 0x19 ; 25
718: 91 05 cpc r25, r1
71a: f4 f4 brge .+60 ; 0x758 <out_put+0x5a>
71c: 82 31 cpi r24, 0x12 ; 18
71e: 91 05 cpc r25, r1
720: 09 f4 brne .+2 ; 0x724 <out_put+0x26>
722: 4c c0 rjmp .+152 ; 0x7bc <out_put+0xbe>
724: 83 31 cpi r24, 0x13 ; 19
726: 91 05 cpc r25, r1
728: 0c f0 brlt .+2 ; 0x72c <out_put+0x2e>
72a: 40 c0 rjmp .+128 ; 0x7ac <out_put+0xae>
72c: 41 97 sbiw r24, 0x11 ; 17
72e: 09 f0 breq .+2 ; 0x732 <out_put+0x34>
730: 4a c0 rjmp .+148 ; 0x7c6 <out_put+0xc8>
case 0x11:a=0x01;
732: a1 e0 ldi r26, 0x01 ; 1
734: 48 c0 rjmp .+144 ; 0x7c6 <out_put+0xc8>
736: 88 34 cpi r24, 0x48 ; 72
738: 91 05 cpc r25, r1
73a: 41 f1 breq .+80 ; 0x78c <out_put+0x8e>
73c: 89 34 cpi r24, 0x49 ; 73
73e: 91 05 cpc r25, r1
740: ac f4 brge .+42 ; 0x76c <out_put+0x6e>
742: 82 34 cpi r24, 0x42 ; 66
744: 91 05 cpc r25, r1
746: c1 f1 breq .+112 ; 0x7b8 <out_put+0xba>
748: 83 34 cpi r24, 0x43 ; 67
74a: 91 05 cpc r25, r1
74c: 0c f5 brge .+66 ; 0x790 <out_put+0x92>
74e: 81 34 cpi r24, 0x41 ; 65
750: 91 05 cpc r25, r1
752: c9 f5 brne .+114 ; 0x7c6 <out_put+0xc8>
break;
case 0x21:a=0x02;
break;
case 0x41:a=0x03;
754: a3 e0 ldi r26, 0x03 ; 3
756: 37 c0 rjmp .+110 ; 0x7c6 <out_put+0xc8>
758: 82 32 cpi r24, 0x22 ; 34
75a: 91 05 cpc r25, r1
75c: 59 f1 breq .+86 ; 0x7b4 <out_put+0xb6>
75e: 83 32 cpi r24, 0x23 ; 35
760: 91 05 cpc r25, r1
762: 04 f5 brge .+64 ; 0x7a4 <out_put+0xa6>
764: 81 97 sbiw r24, 0x21 ; 33
766: 79 f5 brne .+94 ; 0x7c6 <out_put+0xc8>
768: a2 e0 ldi r26, 0x02 ; 2
76a: 2d c0 rjmp .+90 ; 0x7c6 <out_put+0xc8>
76c: 82 38 cpi r24, 0x82 ; 130
76e: 91 05 cpc r25, r1
770: 39 f1 breq .+78 ; 0x7c0 <out_put+0xc2>
772: 83 38 cpi r24, 0x83 ; 131
774: 91 05 cpc r25, r1
776: 8c f0 brlt .+34 ; 0x79a <out_put+0x9c>
778: 84 38 cpi r24, 0x84 ; 132
77a: 91 05 cpc r25, r1
77c: 19 f1 breq .+70 ; 0x7c4 <out_put+0xc6>
77e: 88 38 cpi r24, 0x88 ; 136
780: 91 05 cpc r25, r1
782: 09 f5 brne .+66 ; 0x7c6 <out_put+0xc8>
break;
case 0x81:a=0x0a;
break;
case 0x12:a=0x04;
break;
case 0x22:a=0x05;
break;
case 0x42:a=0x06;
break;
case 0x82:a=0x0b;
break;
case 0x14:a=0x07;
break;
case 0x24:a=0x08;
break;
case 0x44:a=0x09;
break;
case 0x84:a=0x0c;
break;
case 0x18:a=0x0d;
break;
case 0x28:a=0x00;
break;
case 0x48:a=0x0e;
break;
case 0x88:a=0x0f;
784: af e0 ldi r26, 0x0F ; 15
786: 1f c0 rjmp .+62 ; 0x7c6 <out_put+0xc8>
788: ad e0 ldi r26, 0x0D ; 13
78a: 1d c0 rjmp .+58 ; 0x7c6 <out_put+0xc8>
78c: ae e0 ldi r26, 0x0E ; 14
78e: 1b c0 rjmp .+54 ; 0x7c6 <out_put+0xc8>
790: 84 34 cpi r24, 0x44 ; 68
792: 91 05 cpc r25, r1
794: c1 f4 brne .+48 ; 0x7c6 <out_put+0xc8>
796: a9 e0 ldi r26, 0x09 ; 9
798: 16 c0 rjmp .+44 ; 0x7c6 <out_put+0xc8>
79a: 81 38 cpi r24, 0x81 ; 129
79c: 91 05 cpc r25, r1
79e: 99 f4 brne .+38 ; 0x7c6 <out_put+0xc8>
7a0: aa e0 ldi r26, 0x0A ; 10
7a2: 11 c0 rjmp .+34 ; 0x7c6 <out_put+0xc8>
7a4: 84 97 sbiw r24, 0x24 ; 36
7a6: 79 f4 brne .+30 ; 0x7c6 <out_put+0xc8>
7a8: a8 e0 ldi r26, 0x08 ; 8
7aa: 0d c0 rjmp .+26 ; 0x7c6 <out_put+0xc8>
7ac: 44 97 sbiw r24, 0x14 ; 20
7ae: 59 f4 brne .+22 ; 0x7c6 <out_put+0xc8>
7b0: a7 e0 ldi r26, 0x07 ; 7
7b2: 09 c0 rjmp .+18 ; 0x7c6 <out_put+0xc8>
7b4: a5 e0 ldi r26, 0x05 ; 5
7b6: 07 c0 rjmp .+14 ; 0x7c6 <out_put+0xc8>
7b8: a6 e0 ldi r26, 0x06 ; 6
7ba: 05 c0 rjmp .+10 ; 0x7c6 <out_put+0xc8>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -