📄 num_led.lis
字号:
.module num_led.c
.area lit(rom, con, rel)
0000 _seg_table::
0000 C0F9 .byte 192,249
0002 A4B0 .byte 164,176
0004 9992 .byte 153,146
0006 82F8 .byte 130,248
0008 8090 .byte 128,144
000A 8883 .byte 136,131
000C C6A1 .byte 198,161
000E 868E .byte 134,142
0010 .dbfile C:\work\mega128\num_led\num_led.c
0010 .dbsym e seg_table _seg_table A[16:16]c
.area data(ram, con, rel)
0000 .dbfile C:\work\mega128\num_led\num_led.c
0000 _led_buff::
0000 .blkb 2
.area idata
0000 0000 .byte 0,0
.area data(ram, con, rel)
0002 .dbfile C:\work\mega128\num_led\num_led.c
0002 .blkb 2
.area idata
0002 0000 .byte 0,0
.area data(ram, con, rel)
0004 .dbfile C:\work\mega128\num_led\num_led.c
0004 .dbsym e led_buff _led_buff A[4:4]c
.area text(rom, con, rel)
0000 .dbfile C:\work\mega128\num_led\num_led.c
0000 .dbfunc e delay_1ms _delay_1ms fV
0000 ; i -> R16,R17
.even
0000 _delay_1ms::
0000 .dbline -1
0000 .dbline 8
0000 ; #include <iom128.h>
0000 ; #include <macros.h>
0000 ; #define xtal 4
0000 ; const unsigned char seg_table[16]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,
0000 ; 0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e};
0000 ; unsigned char led_buff[4]={0,0,0,0};
0000 ; void delay_1ms(void)
0000 ; {
0000 .dbline 10
0000 ; unsigned int i;
0000 ; for(i=1;i<(unsigned int)(xtal*143-2);i++)
0000 01E0 ldi R16,1
0002 10E0 ldi R17,0
0004 02C0 xjmp L5
0006 L2:
0006 .dbline 11
0006 L3:
0006 .dbline 10
0006 0F5F subi R16,255 ; offset = 1
0008 1F4F sbci R17,255
000A L5:
000A .dbline 10
000A 0A33 cpi R16,58
000C E2E0 ldi R30,2
000E 1E07 cpc R17,R30
0010 D0F3 brlo L2
0012 .dbline -2
0012 .dbline 12
0012 ; ;
0012 ; }
0012 L1:
0012 .dbline 0 ; func end
0012 0895 ret
0014 .dbsym r i 16 i
0014 .dbend
0014 .dbfunc e led_display _led_display fV
0014 ; i -> R20
.even
0014 _led_display::
0014 0E940000 xcall push_gset1
0018 .dbline -1
0018 .dbline 23
0018 ; /*void delay_ms(unsigned int n)
0018 ; {
0018 ; unsigned int i=0;
0018 ; while(i<n)
0018 ; {
0018 ; delay_1ms();
0018 ; i++;
0018 ; }
0018 ; }*/
0018 ; void led_display(void)
0018 ; {
0018 .dbline 25
0018 ; unsigned char i;
0018 ; DDRA=0xff;
0018 8FEF ldi R24,255
001A 8ABB out 0x1a,R24
001C .dbline 26
001C ; PORTA=0xff;
001C 8BBB out 0x1b,R24
001E .dbline 27
001E ; DDRC|=0xf0;
001E 84B3 in R24,0x14
0020 806F ori R24,240
0022 84BB out 0x14,R24
0024 .dbline 28
0024 ; PORTC|=0xf0;
0024 85B3 in R24,0x15
0026 806F ori R24,240
0028 85BB out 0x15,R24
002A .dbline 29
002A ; for(i=0;i<4;i++)
002A 4427 clr R20
002C 17C0 xjmp L10
002E L7:
002E .dbline 30
002E .dbline 31
002E 80E0 ldi R24,<_led_buff
0030 90E0 ldi R25,>_led_buff
0032 E42F mov R30,R20
0034 FF27 clr R31
0036 E80F add R30,R24
0038 F91F adc R31,R25
003A 2080 ldd R2,z+0
003C 2BBA out 0x1b,R2
003E .dbline 32
003E 142F mov R17,R20
0040 1C5F subi R17,252 ; addi 4
0042 01E0 ldi R16,1
0044 0E940000 xcall lsl8
0048 202E mov R2,R16
004A 2094 com R2
004C 35B2 in R3,0x15
004E 3220 and R3,R2
0050 35BA out 0x15,R3
0052 .dbline 33
0052 D6DF xcall _delay_1ms
0054 .dbline 34
0054 85B3 in R24,0x15
0056 806F ori R24,240
0058 85BB out 0x15,R24
005A .dbline 35
005A L8:
005A .dbline 29
005A 4395 inc R20
005C L10:
005C .dbline 29
005C 4430 cpi R20,4
005E 38F3 brlo L7
0060 .dbline -2
0060 .dbline 36
0060 ; {
0060 ; PORTA=led_buff[i];
0060 ; PORTC&=~(1<<(i+4));
0060 ; delay_1ms();
0060 ; PORTC|=0xf0;
0060 ; }
0060 ; }
0060 L6:
0060 0E940000 xcall pop_gset1
0064 .dbline 0 ; func end
0064 0895 ret
0066 .dbsym r i 20 c
0066 .dbend
0066 .dbfunc e led_fill _led_fill fV
0066 ; i -> R20
0066 ; index -> R16
.even
0066 _led_fill::
0066 0E940000 xcall push_gset1
006A .dbline -1
006A .dbline 38
006A ; void led_fill(unsigned char index)
006A ; {
006A .dbline 40
006A ; unsigned char i;
006A ; for(i=0;i<4;i++)
006A 4427 clr R20
006C 13C0 xjmp L15
006E L12:
006E .dbline 41
006E .dbline 42
006E 242E mov R2,R20
0070 3324 clr R3
0072 E02F mov R30,R16
0074 FF27 clr R31
0076 E20D add R30,R2
0078 F31D adc R31,R3
007A 80E0 ldi R24,<_seg_table
007C 90E0 ldi R25,>_seg_table
007E E80F add R30,R24
0080 F91F adc R31,R25
0082 E491 lpm R30,Z
0084 80E0 ldi R24,<_led_buff
0086 90E0 ldi R25,>_led_buff
0088 A42F mov R26,R20
008A BB27 clr R27
008C A80F add R26,R24
008E B91F adc R27,R25
0090 EC93 st x,R30
0092 .dbline 43
0092 L13:
0092 .dbline 40
0092 4395 inc R20
0094 L15:
0094 .dbline 40
0094 4430 cpi R20,4
0096 58F3 brlo L12
0098 .dbline -2
0098 .dbline 44
0098 ; {
0098 ; led_buff[i]=seg_table[index+i];
0098 ; }
0098 ; }
0098 L11:
0098 0E940000 xcall pop_gset1
009C .dbline 0 ; func end
009C 0895 ret
009E .dbsym r i 20 c
009E .dbsym r index 16 c
009E .dbend
009E .dbfunc e main _main fV
009E ; j -> R20
009E ; i -> R22
.even
009E _main::
009E .dbline -1
009E .dbline 46
009E ; void main(void)
009E ; {
009E 0FC0 xjmp L18
00A0 L17:
00A0 .dbline 49
00A0 ; unsigned char i,j;
00A0 ; while(1)
00A0 ; {
00A0 .dbline 50
00A0 ; for(j=0;j<4;j++)
00A0 4427 clr R20
00A2 0BC0 xjmp L23
00A4 L20:
00A4 .dbline 51
00A4 ; {
00A4 .dbline 52
00A4 ; led_fill(4*j);
00A4 84E0 ldi R24,4
00A6 849F mul R24,R20
00A8 002D mov R16,R0
00AA DDDF xcall _led_fill
00AC .dbline 53
00AC ; for(i=0;i<200;i++)
00AC 6627 clr R22
00AE 02C0 xjmp L27
00B0 L24:
00B0 .dbline 54
00B0 B1DF xcall _led_display
00B2 L25:
00B2 .dbline 53
00B2 6395 inc R22
00B4 L27:
00B4 .dbline 53
00B4 683C cpi R22,200
00B6 E0F3 brlo L24
00B8 .dbline 55
00B8 L21:
00B8 .dbline 50
00B8 4395 inc R20
00BA L23:
00BA .dbline 50
00BA 4430 cpi R20,4
00BC 98F3 brlo L20
00BE .dbline 56
00BE L18:
00BE .dbline 48
00BE F0CF xjmp L17
00C0 X0:
00C0 .dbline -2
00C0 .dbline 57
00C0 ; led_display();
00C0 ; }
00C0 ; }
00C0 ; }
00C0 L16:
00C0 .dbline 0 ; func end
00C0 0895 ret
00C2 .dbsym r j 20 c
00C2 .dbsym r i 22 c
00C2 .dbend
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -