📄 m16_t1_compare.lis
字号:
.module M16_T1_Compare.c
.area data(ram, con, rel)
0000 _Table::
0000 .blkb 2
.area idata
0000 3F06 .byte 63,6
.area data(ram, con, rel)
0002 .blkb 2
.area idata
0002 5B4F .byte 91,'O
.area data(ram, con, rel)
0004 .blkb 2
.area idata
0004 666D .byte 'f,'m
.area data(ram, con, rel)
0006 .blkb 2
.area idata
0006 7D07 .byte 125,7
.area data(ram, con, rel)
0008 .blkb 2
.area idata
0008 7F6F .byte 127,'o
.area data(ram, con, rel)
000A .dbfile F:\myavr\temp\M16_T1_Compare\M16_T1_Compare.c
000A .dbsym e Table _Table A[10:10]c
000A _Data::
000A .blkb 2
.area idata
000A 0000 .byte 0,0
.area data(ram, con, rel)
000C .dbfile F:\myavr\temp\M16_T1_Compare\M16_T1_Compare.c
000C .blkb 2
.area idata
000C 0001 .byte 0,1
.area data(ram, con, rel)
000E .dbfile F:\myavr\temp\M16_T1_Compare\M16_T1_Compare.c
000E .dbsym e Data _Data A[4:4]c
.area text(rom, con, rel)
0000 .dbfile F:\myavr\temp\M16_T1_Compare\M16_T1_Compare.c
0000 .dbfunc e DelayMs _DelayMs fV
0000 ; j -> R20
0000 ; i -> R16
.even
0000 _DelayMs::
0000 0E940000 xcall push_gset1
0004 .dbline -1
0004 .dbline 10
0004 ; #include<iom16v.h>
0004 ; #define uchar unsigned char
0004 ; #define uint unsigned int
0004 ;
0004 ; uchar Table[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
0004 ; uchar Data[4]={0,0,0,1};
0004 ; uchar Key1,Key2,Key3;
0004 ;
0004 ; void DelayMs(uchar i)
0004 ; {
0004 .dbline 12
0004 ; uchar j;
0004 ; for(;i!=0;i++)
0004 06C0 xjmp L5
0006 L2:
0006 .dbline 13
0006 ; {
0006 .dbline 14
0006 4AE0 ldi R20,10
0008 01C0 xjmp L9
000A L6:
000A .dbline 14
000A L7:
000A .dbline 14
000A 4A95 dec R20
000C L9:
000C .dbline 14
000C 4423 tst R20
000E E9F7 brne L6
0010 .dbline 15
0010 L3:
0010 .dbline 12
0010 0395 inc R16
0012 L5:
0012 .dbline 12
0012 0023 tst R16
0014 C1F7 brne L2
0016 .dbline -2
0016 .dbline 16
0016 ; for(j=10;j!=0;j--);
0016 ; }
0016 ; }
0016 L1:
0016 0E940000 xcall pop_gset1
001A .dbline 0 ; func end
001A 0895 ret
001C .dbsym r j 20 c
001C .dbsym r i 16 c
001C .dbend
001C .dbfunc e Display _Display fV
001C ; sel -> R20
001C ; i -> R22
001C ; p -> R10,R11
.even
001C _Display::
001C 0E940000 xcall push_gset3
0020 5801 movw R10,R16
0022 .dbline -1
0022 .dbline 19
0022 ;
0022 ; void Display(uchar *p)
0022 ; {
0022 .dbline 20
0022 ; uchar i,sel=0x01;
0022 41E0 ldi R20,1
0024 .dbline 21
0024 ; for(i=0;i<4;i++)
0024 6627 clr R22
0026 16C0 xjmp L14
0028 L11:
0028 .dbline 22
0028 .dbline 23
0028 45BB out 0x15,R20
002A .dbline 24
002A E62F mov R30,R22
002C FF27 clr R31
002E EA0D add R30,R10
0030 FB1D adc R31,R11
0032 E081 ldd R30,z+0
0034 FF27 clr R31
0036 80E0 ldi R24,<_Table
0038 90E0 ldi R25,>_Table
003A E80F add R30,R24
003C F91F adc R31,R25
003E 2080 ldd R2,z+0
0040 3324 clr R3
0042 8FEF ldi R24,255
0044 90E0 ldi R25,0
0046 8219 sub R24,R2
0048 9309 sbc R25,R3
004A 8BBB out 0x1b,R24
004C .dbline 25
004C 02E0 ldi R16,2
004E D8DF xcall _DelayMs
0050 .dbline 26
0050 440F lsl R20
0052 .dbline 27
0052 L12:
0052 .dbline 21
0052 6395 inc R22
0054 L14:
0054 .dbline 21
0054 6430 cpi R22,4
0056 40F3 brlo L11
0058 .dbline -2
0058 .dbline 28
0058 ; {
0058 ; PORTC=sel;
0058 ; PORTA=0xff-Table[p[i]];
0058 ; DelayMs(2);
0058 ; sel=sel<<1;
0058 ; }
0058 ; }
0058 L10:
0058 0E940000 xcall pop_gset3
005C .dbline 0 ; func end
005C 0895 ret
005E .dbsym r sel 20 c
005E .dbsym r i 22 c
005E .dbsym r p 10 pc
005E .dbend
005E .dbfunc e Key_Process _Key_Process fV
005E ; p -> R20,R21
.even
005E _Key_Process::
005E 0E940000 xcall push_gset1
0062 A801 movw R20,R16
0064 .dbline -1
0064 .dbline 31
0064 ;
0064 ; void Key_Process(uchar *p)
0064 ; {
0064 06C0 xjmp L17
0066 L16:
0066 .dbline 32
0066 .dbline 32
0066 00E0 ldi R16,<_Data
0068 10E0 ldi R17,>_Data
006A D8DF xcall _Display
006C .dbline 32
006C 81E0 ldi R24,1
006E 80930200 sts _Key1,R24
0072 .dbline 32
0072 L17:
0072 .dbline 32
0072 ; while((PINB&0x01)==0){Display(Data);Key1=1;}
0072 B09B sbis 0x16,0
0074 F8CF rjmp L16
0076 06C0 xjmp L20
0078 L19:
0078 .dbline 33
0078 .dbline 33
0078 00E0 ldi R16,<_Data
007A 10E0 ldi R17,>_Data
007C CFDF xcall _Display
007E .dbline 33
007E 81E0 ldi R24,1
0080 80930100 sts _Key2,R24
0084 .dbline 33
0084 L20:
0084 .dbline 33
0084 ; while((PINB&0x02)==0){Display(Data);Key2=1;}
0084 B19B sbis 0x16,1
0086 F8CF rjmp L19
0088 06C0 xjmp L23
008A L22:
008A .dbline 34
008A .dbline 34
008A 00E0 ldi R16,<_Data
008C 10E0 ldi R17,>_Data
008E C6DF xcall _Display
0090 .dbline 34
0090 81E0 ldi R24,1
0092 80930000 sts _Key3,R24
0096 .dbline 34
0096 L23:
0096 .dbline 34
0096 ; while((PINB&0x04)==0){Display(Data);Key3=1;}
0096 B29B sbis 0x16,2
0098 F8CF rjmp L22
009A .dbline 35
009A ; if(Key1==1)
009A 80910200 lds R24,_Key1
009E 8130 cpi R24,1
00A0 81F4 brne L25
00A2 .dbline 36
00A2 ; {
00A2 .dbline 37
00A2 ; p[3]++;
00A2 CA01 movw R24,R20
00A4 0396 adiw R24,3
00A6 FC01 movw R30,R24
00A8 8081 ldd R24,z+0
00AA 8F5F subi R24,255 ; addi 1
00AC 8083 std z+0,R24
00AE .dbline 38
00AE ; if(p[3]==10) p[3]=0;
00AE FA01 movw R30,R20
00B0 8381 ldd R24,z+3
00B2 8A30 cpi R24,10
00B4 19F4 brne L27
00B6 .dbline 38
00B6 2224 clr R2
00B8 FA01 movw R30,R20
00BA 2382 std z+3,R2
00BC L27:
00BC .dbline 39
00BC ; Key1=0;
00BC 2224 clr R2
00BE 20920200 sts _Key1,R2
00C2 .dbline 40
00C2 ; }
00C2 L25:
00C2 .dbline 41
00C2 ; if(Key2==1)
00C2 80910100 lds R24,_Key2
00C6 8130 cpi R24,1
00C8 81F4 brne L29
00CA .dbline 42
00CA ; {
00CA .dbline 43
00CA ; p[2]++;
00CA CA01 movw R24,R20
00CC 0296 adiw R24,2
00CE FC01 movw R30,R24
00D0 8081 ldd R24,z+0
00D2 8F5F subi R24,255 ; addi 1
00D4 8083 std z+0,R24
00D6 .dbline 44
00D6 ; if(p[2]==10) p[2]=0;
00D6 FA01 movw R30,R20
00D8 8281 ldd R24,z+2
00DA 8A30 cpi R24,10
00DC 19F4 brne L31
00DE .dbline 44
00DE 2224 clr R2
00E0 FA01 movw R30,R20
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -