📄 led_128.lis
字号:
.module led_128.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 D:\jtag_test\led_128.c
0010 .dbsym s seg_table _seg_table A[16:16]c
.area data(ram, con, rel)
0000 .dbfile D:\jtag_test\led_128.c
0000 _led_buff::
0000 .blkb 2
.area idata
0000 0000 .byte 0,0
.area data(ram, con, rel)
0002 .dbfile D:\jtag_test\led_128.c
0002 .blkb 2
.area idata
0002 0000 .byte 0,0
.area data(ram, con, rel)
0004 .dbfile D:\jtag_test\led_128.c
0004 .dbsym s led_buff _led_buff A[4:4]c
.area text(rom, con, rel)
0000 .dbfile D:\jtag_test\led_128.c
0000 .dbfunc s delay_1ms _delay_1ms fI
; i -> R16,R17
.even
0000 _delay_1ms::
0000 .dbline -1
0000 .dbline 7
; #include <iom128.h>
; #define xtal 16
; const unsigned char seg_table[16]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,
; 0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e};
; unsigned char led_buff[4]={0,0,0,0};
; void delay_1ms(void)
; {
0000 .dbline 9
; unsigned int i;
; 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 10
0006 L3:
0006 .dbline 9
0006 0F5F subi R16,255 ; offset = 1
0008 1F4F sbci R17,255
000A L5:
000A .dbline 9
000A 0E3E cpi R16,238
000C E8E0 ldi R30,8
000E 1E07 cpc R17,R30
0010 D0F3 brlo L2
0012 .dbline -2
0012 .dbline 11
; ;
; }
0012 L1:
0012 .dbline 0 ; func end
0012 0895 ret
0014 .dbsym r i 16 i
0014 .dbfunc s led_display _led_display fI
; i -> R20
.even
0014 _led_display::
0014 0E940000 xcall push_gset1
0018 .dbline -1
0018 .dbline 22
; /*void delay_ms(unsigned int n)
; {
; unsigned int i=0;
; while(i<n)
; {
; delay_1ms();
; i++;
; }
; }*/
; void led_display(void)
; {
0018 .dbline 24
; unsigned char i;
; DDRA=0xff;
0018 8FEF ldi R24,255
001A 8ABB out 0x1a,R24
001C .dbline 25
; PORTA=0xff;
001C 8BBB out 0x1b,R24
001E .dbline 26
; DDRC|=0xf0;
001E 84B3 in R24,0x14
0020 806F ori R24,240
0022 84BB out 0x14,R24
0024 .dbline 27
; PORTC|=0xf0;
0024 85B3 in R24,0x15
0026 806F ori R24,240
0028 85BB out 0x15,R24
002A .dbline 28
; for(i=0;i<4;i++)
002A 4427 clr R20
002C 17C0 xjmp L10
002E L7:
002E .dbline 29
002E .dbline 30
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 31
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 32
0052 D6DF xcall _delay_1ms
0054 .dbline 33
0054 85B3 in R24,0x15
0056 806F ori R24,240
0058 85BB out 0x15,R24
005A .dbline 34
005A L8:
005A .dbline 28
005A 4395 inc R20
005C L10:
005C .dbline 28
005C 4430 cpi R20,4
005E 38F3 brlo L7
0060 .dbline -2
0060 .dbline 35
; {
; PORTA=led_buff[i];
; PORTC&=~(1<<(i+4));
; delay_1ms();
; PORTC|=0xf0;
; }
; }
0060 L6:
0060 0E940000 xcall pop_gset1
0064 .dbline 0 ; func end
0064 0895 ret
0066 .dbsym r i 20 c
0066 .dbfunc s led_fill _led_fill fI
; i -> R20
; index -> R16
.even
0066 _led_fill::
0066 0E940000 xcall push_gset1
006A .dbline -1
006A .dbline 37
; void led_fill(unsigned char index)
; {
006A .dbline 39
; unsigned char i;
; for(i=0;i<4;i++)
006A 4427 clr R20
006C 13C0 xjmp L15
006E L12:
006E .dbline 40
006E .dbline 41
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 42
0092 L13:
0092 .dbline 39
0092 4395 inc R20
0094 L15:
0094 .dbline 39
0094 4430 cpi R20,4
0096 58F3 brlo L12
0098 .dbline -2
0098 .dbline 43
; {
; led_buff[i]=seg_table[index+i];
; }
; }
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 .dbfunc s main _main fI
; j -> R20
; i -> R22
.even
009E _main::
009E .dbline -1
009E .dbline 45
; void main(void)
; {
009E 0FC0 xjmp L18
00A0 L17:
00A0 .dbline 48
; unsigned char i,j;
; while(1)
; {
00A0 .dbline 49
; for(j=0;j<4;j++)
00A0 4427 clr R20
00A2 0BC0 xjmp L23
00A4 L20:
00A4 .dbline 50
; {
00A4 .dbline 51
; led_fill(4*j);
00A4 84E0 ldi R24,4
00A6 849F mul R24,R20
00A8 8001 movw R16,R0
00AA DDDF xcall _led_fill
00AC .dbline 52
; for(i=0;i<200;i++)
00AC 6627 clr R22
00AE 02C0 xjmp L27
00B0 L24:
00B0 .dbline 53
00B0 B1DF xcall _led_display
00B2 L25:
00B2 .dbline 52
00B2 6395 inc R22
00B4 L27:
00B4 .dbline 52
00B4 683C cpi R22,200
00B6 E0F3 brlo L24
00B8 .dbline 54
00B8 L21:
00B8 .dbline 49
00B8 4395 inc R20
00BA L23:
00BA .dbline 49
00BA 4430 cpi R20,4
00BC 98F3 brlo L20
00BE .dbline 55
00BE L18:
00BE .dbline 47
00BE F0CF xjmp L17
00C0 X0:
00C0 .dbline -2
00C0 .dbline 56
; led_display();
; }
; }
; }
00C0 L16:
00C0 .dbline 0 ; func end
00C0 0895 ret
00C2 .dbsym r j 20 c
00C2 .dbsym r i 22 c
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -