📄 numled.lis
字号:
.module numled.c
.area data(ram, con, rel)
0000 _num::
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 C:\DOCUME~1\alf\MYDOCU~1\开发板\调试程序\num_led\numled.c
000A .dbsym e num _num A[10:10]c
.area text(rom, con, rel)
0000 .dbfile C:\DOCUME~1\alf\MYDOCU~1\开发板\调试程序\num_led\numled.c
0000 .dbfunc e port_init _port_init fV
.even
0000 _port_init::
0000 .dbline -1
0000 .dbline 12
0000 ; //ICC-AVR application builder : 2005-3-2 下午 09:56:10
0000 ; // Target : M8
0000 ; // Crystal: 11.059Mhz
0000 ;
0000 ; #include <iom8v.h>
0000 ; #include <macros.h>
0000 ;
0000 ; char num[10] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
0000 ; //0x8,0x7E,0xA2,0x62,0x74,0x61,0x21,0x7A,0x20,0x60
0000 ; //3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH
0000 ; void port_init(void)
0000 ; {
0000 .dbline 13
0000 ; PORTB = 0xCF;
0000 8FEC ldi R24,207
0002 88BB out 0x18,R24
0004 .dbline 14
0004 ; DDRB = 0x30;
0004 80E3 ldi R24,48
0006 87BB out 0x17,R24
0008 .dbline 15
0008 ; PORTC = 0x4F; //m103 output only
0008 8FE4 ldi R24,79
000A 85BB out 0x15,R24
000C .dbline 16
000C ; DDRC = 0x30;
000C 80E3 ldi R24,48
000E 84BB out 0x14,R24
0010 .dbline 17
0010 ; PORTD = 0xFF;
0010 8FEF ldi R24,255
0012 82BB out 0x12,R24
0014 .dbline 18
0014 ; DDRD = 0xFF;
0014 81BB out 0x11,R24
0016 .dbline -2
0016 .dbline 19
0016 ; }
0016 L1:
0016 .dbline 0 ; func end
0016 0895 ret
0018 .dbend
0018 .dbfunc e init_devices _init_devices fV
.even
0018 _init_devices::
0018 .dbline -1
0018 .dbline 23
0018 ;
0018 ; //call this routine to initialise all peripherals
0018 ; void init_devices(void)
0018 ; {
0018 .dbline 25
0018 ; //stop errant interrupts until set up
0018 ; CLI(); //disable all interrupts
0018 F894 cli
001A .dbline 26
001A ; port_init();
001A F2DF rcall _port_init
001C .dbline 28
001C ;
001C ; MCUCR = 0x00;
001C 2224 clr R2
001E 25BE out 0x35,R2
0020 .dbline 29
0020 ; GICR = 0x00;
0020 2BBE out 0x3b,R2
0022 .dbline 30
0022 ; TIMSK = 0x00; //timer interrupt sources
0022 29BE out 0x39,R2
0024 .dbline 31
0024 ; SEI(); //re-enable interrupts
0024 7894 sei
0026 .dbline -2
0026 .dbline 33
0026 ; //all peripherals are now initialised
0026 ; }
0026 L2:
0026 .dbline 0 ; func end
0026 0895 ret
0028 .dbend
0028 .dbfunc e delay _delay fV
0028 ; j -> R16,R17
0028 ; i -> R18,R19
0028 ; z -> R20,R21
.even
0028 _delay::
0028 00D0 rcall push_gset1
002A .dbline -1
002A .dbline 36
002A ;
002A ; void delay(void)
002A ; {
002A .dbline 38
002A 2227 clr R18
002C 3327 clr R19
002E 02C0 rjmp L7
0030 L4:
0030 .dbline 38
0030 L5:
0030 .dbline 38
0030 2F5F subi R18,255 ; offset = 1
0032 3F4F sbci R19,255
0034 L7:
0034 .dbline 38
0034 ; unsigned int i,j,z;
0034 ; for(i=0;i<10000;i++);
0034 2031 cpi R18,16
0036 E7E2 ldi R30,39
0038 3E07 cpc R19,R30
003A D0F3 brlo L4
003C .dbline 39
003C ; { for(j=0;j<10000;j++)
003C .dbline 39
003C 0027 clr R16
003E 1127 clr R17
0040 0BC0 rjmp L11
0042 L8:
0042 .dbline 40
0042 .dbline 40
0042 4427 clr R20
0044 5527 clr R21
0046 02C0 rjmp L15
0048 L12:
0048 .dbline 40
0048 L13:
0048 .dbline 40
0048 4F5F subi R20,255 ; offset = 1
004A 5F4F sbci R21,255
004C L15:
004C .dbline 40
004C 4436 cpi R20,100
004E E0E0 ldi R30,0
0050 5E07 cpc R21,R30
0052 D0F3 brlo L12
0054 .dbline 40
0054 L9:
0054 .dbline 39
0054 0F5F subi R16,255 ; offset = 1
0056 1F4F sbci R17,255
0058 L11:
0058 .dbline 39
0058 0031 cpi R16,16
005A E7E2 ldi R30,39
005C 1E07 cpc R17,R30
005E 88F3 brlo L8
0060 .dbline 41
0060 ; { for(z=0;z<100;z++);}
0060 ; }
0060 .dbline -2
0060 .dbline 42
0060 ; }
0060 L3:
0060 00D0 rcall pop_gset1
0062 .dbline 0 ; func end
0062 0895 ret
0064 .dbsym r j 16 i
0064 .dbsym r i 18 i
0064 .dbsym r z 20 i
0064 .dbend
0064 .dbfunc e main _main fV
0064 ; i -> R20
.even
0064 _main::
0064 .dbline -1
0064 .dbline 46
0064 ;
0064 ;
0064 ; void main(void)
0064 ; {
0064 .dbline 48
0064 ; char i;
0064 ; init_devices();
0064 D9DF rcall _init_devices
0066 44C0 rjmp L18
0068 L17:
0068 .dbline 51
0068 ;
0068 ; while(1)
0068 ; {
0068 .dbline 52
0068 ; PORTB |= 0x10;//位选1
0068 C49A sbi 0x18,4
006A .dbline 53
006A ; for(i=0;i<=9;i++)
006A 4427 clr R20
006C 0AC0 rjmp L23
006E L20:
006E .dbline 54
006E .dbline 54
006E 80E0 ldi R24,<_num
0070 90E0 ldi R25,>_num
0072 E42F mov R30,R20
0074 FF27 clr R31
0076 E80F add R30,R24
0078 F91F adc R31,R25
007A 2080 ldd R2,z+0
007C 22BA out 0x12,R2
007E .dbline 55
007E D4DF rcall _delay
0080 .dbline 56
0080 L21:
0080 .dbline 53
0080 4395 inc R20
0082 L23:
0082 .dbline 53
0082 89E0 ldi R24,9
0084 8417 cp R24,R20
0086 98F7 brsh L20
0088 .dbline 57
0088 ; { PORTD = num[i];
0088 ; delay();
0088 ; }
0088 ; PORTB &= ~0x10;
0088 C498 cbi 0x18,4
008A .dbline 59
008A ;
008A ; PORTB |= 0x20;//位选2
008A C59A sbi 0x18,5
008C .dbline 60
008C ; for(i=0;i<=9;i++)
008C 4427 clr R20
008E 0AC0 rjmp L27
0090 L24:
0090 .dbline 61
0090 .dbline 61
0090 80E0 ldi R24,<_num
0092 90E0 ldi R25,>_num
0094 E42F mov R30,R20
0096 FF27 clr R31
0098 E80F add R30,R24
009A F91F adc R31,R25
009C 2080 ldd R2,z+0
009E 22BA out 0x12,R2
00A0 .dbline 62
00A0 C3DF rcall _delay
00A2 .dbline 63
00A2 L25:
00A2 .dbline 60
00A2 4395 inc R20
00A4 L27:
00A4 .dbline 60
00A4 89E0 ldi R24,9
00A6 8417 cp R24,R20
00A8 98F7 brsh L24
00AA .dbline 64
00AA ; { PORTD = num[i];
00AA ; delay();
00AA ; }
00AA ; PORTB &= ~0x20;
00AA C598 cbi 0x18,5
00AC .dbline 66
00AC ;
00AC ; PORTC |= 0x10;//位选3
00AC AC9A sbi 0x15,4
00AE .dbline 67
00AE ; for(i=0;i<=9;i++)
00AE 4427 clr R20
00B0 0AC0 rjmp L31
00B2 L28:
00B2 .dbline 68
00B2 .dbline 68
00B2 80E0 ldi R24,<_num
00B4 90E0 ldi R25,>_num
00B6 E42F mov R30,R20
00B8 FF27 clr R31
00BA E80F add R30,R24
00BC F91F adc R31,R25
00BE 2080 ldd R2,z+0
00C0 22BA out 0x12,R2
00C2 .dbline 69
00C2 B2DF rcall _delay
00C4 .dbline 70
00C4 L29:
00C4 .dbline 67
00C4 4395 inc R20
00C6 L31:
00C6 .dbline 67
00C6 89E0 ldi R24,9
00C8 8417 cp R24,R20
00CA 98F7 brsh L28
00CC .dbline 71
00CC ; { PORTD = num[i];
00CC ; delay();
00CC ; }
00CC ; PORTC &= ~0x10;
00CC AC98 cbi 0x15,4
00CE .dbline 73
00CE ;
00CE ; PORTC |= 0x20;//位选4
00CE AD9A sbi 0x15,5
00D0 .dbline 74
00D0 ; for(i=0;i<=9;i++)
00D0 4427 clr R20
00D2 0AC0 rjmp L35
00D4 L32:
00D4 .dbline 75
00D4 .dbline 75
00D4 80E0 ldi R24,<_num
00D6 90E0 ldi R25,>_num
00D8 E42F mov R30,R20
00DA FF27 clr R31
00DC E80F add R30,R24
00DE F91F adc R31,R25
00E0 2080 ldd R2,z+0
00E2 22BA out 0x12,R2
00E4 .dbline 76
00E4 A1DF rcall _delay
00E6 .dbline 77
00E6 L33:
00E6 .dbline 74
00E6 4395 inc R20
00E8 L35:
00E8 .dbline 74
00E8 89E0 ldi R24,9
00EA 8417 cp R24,R20
00EC 98F7 brsh L32
00EE .dbline 78
00EE AD98 cbi 0x15,5
00F0 .dbline 80
00F0 L18:
00F0 .dbline 50
00F0 BBCF rjmp L17
00F2 X0:
00F2 .dbline -2
00F2 .dbline 81
00F2 ; { PORTD = num[i];
00F2 ; delay();
00F2 ; }
00F2 ; PORTC &= ~0x20;
00F2 ;
00F2 ; }
00F2 ; }
00F2 L16:
00F2 .dbline 0 ; func end
00F2 0895 ret
00F4 .dbsym r i 20 c
00F4 .dbend
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -