📄 ff.lis
字号:
.module FF.c
.area lit(rom, con, rel)
0000 _led_7::
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 808E .byte 128,142
0010 .dbfile C:\DOCUME~1\Administrator\桌面\456\FF.c
0010 .dbsym e led_7 _led_7 A[16:16]kc
.area text(rom, con, rel)
0000 .dbfile C:\DOCUME~1\Administrator\桌面\456\FF.c
0000 .dbfunc e port_init _port_init fV
.even
0000 _port_init::
0000 .dbline -1
0000 .dbline 11
0000 ; //ICC-AVR application builder : 2009-5-19 13:21:53
0000 ; // Target : M16
0000 ; // Crystal: 4.0000Mhz
0000 ;
0000 ; #include <iom16v.h>
0000 ; #include <macros.h>
0000 ; flash unsigned char led_7[16]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,
0000 ; 0x80,0x90,0x88,0x83,0xC6,0xA1,0x80,0x8E};
0000 ; unsigned char counter;
0000 ; void port_init(void)
0000 ; {
0000 .dbline 12
0000 ; PORTA = 0xFF;
0000 8FEF ldi R24,255
0002 8BBB out 0x1b,R24
0004 .dbline 13
0004 ; DDRA = 0xFF;
0004 8ABB out 0x1a,R24
0006 .dbline 14
0006 ; PORTB = 0xFF;
0006 88BB out 0x18,R24
0008 .dbline 15
0008 ; DDRB = 0x00;
0008 2224 clr R2
000A 27BA out 0x17,R2
000C .dbline 16
000C ; PORTC = 0xFF; //m103 output only
000C 85BB out 0x15,R24
000E .dbline 17
000E ; DDRC = 0x00;
000E 24BA out 0x14,R2
0010 .dbline 18
0010 ; PORTD = 0xFF;
0010 82BB out 0x12,R24
0012 .dbline 19
0012 ; DDRD = 0x00;
0012 21BA out 0x11,R2
0014 .dbline -2
0014 .dbline 20
0014 ; }
0014 L1:
0014 .dbline 0 ; func end
0014 0895 ret
0016 .dbend
.area vector(rom, abs)
.org 4
0004 0C940B00 jmp _int0_isr
.area text(rom, con, rel)
0016 .dbfile C:\DOCUME~1\Administrator\桌面\456\FF.c
0016 .dbfunc e int0_isr _int0_isr fV
.even
0016 _int0_isr::
0016 2A92 st -y,R2
0018 8A93 st -y,R24
001A 9A93 st -y,R25
001C 2FB6 in R2,0x3f
001E 2A92 st -y,R2
0020 .dbline -1
0020 .dbline 24
0020 .dbline 26
0020 80910000 lds R24,_counter
0024 8F5F subi R24,255 ; addi 1
0026 282E mov R2,R24
0028 20920000 sts _counter,R2
002C 8031 cpi R24,16
002E 18F0 brlo L3
0030 .dbline 26
0030 2224 clr R2
0032 20920000 sts _counter,R2
0036 L3:
0036 .dbline -2
0036 .dbline 27
0036 ;
0036 ; #pragma interrupt_handler int0_isr:2
0036 ; void int0_isr(void)
0036 ; {
0036 ; //external interupt on INT0
0036 ; if (++counter>=16) counter = 0;
0036 ; }
0036 L2:
0036 2990 ld R2,y+
0038 2FBE out 0x3f,R2
003A 9991 ld R25,y+
003C 8991 ld R24,y+
003E 2990 ld R2,y+
0040 .dbline 0 ; func end
0040 1895 reti
0042 .dbend
.area vector(rom, abs)
.org 8
0008 0C942100 jmp _int1_isr
.area text(rom, con, rel)
0042 .dbfile C:\DOCUME~1\Administrator\桌面\456\FF.c
0042 .dbfunc e int1_isr _int1_isr fV
.even
0042 _int1_isr::
0042 2A92 st -y,R2
0044 8A93 st -y,R24
0046 2FB6 in R2,0x3f
0048 2A92 st -y,R2
004A .dbline -1
004A .dbline 31
004A ;
004A ; #pragma interrupt_handler int1_isr:3
004A ; void int1_isr(void)
004A ; {
004A .dbline 33
004A ; //external interupt on INT1
004A ; if (counter) --counter;
004A 20900000 lds R2,_counter
004E 2220 tst R2
0050 29F0 breq L6
0052 .dbline 33
0052 822D mov R24,R2
0054 8150 subi R24,1
0056 80930000 sts _counter,R24
005A 03C0 xjmp L7
005C L6:
005C .dbline 34
005C 8FE0 ldi R24,15
005E 80930000 sts _counter,R24
0062 L7:
0062 .dbline -2
0062 .dbline 35
0062 ; else counter = 15;
0062 ; }
0062 L5:
0062 2990 ld R2,y+
0064 2FBE out 0x3f,R2
0066 8991 ld R24,y+
0068 2990 ld R2,y+
006A .dbline 0 ; func end
006A 1895 reti
006C .dbend
006C .dbfunc e init_devices _init_devices fV
.even
006C _init_devices::
006C .dbline -1
006C .dbline 39
006C ;
006C ; //call this routine to initialise all peripherals
006C ; void init_devices(void)
006C ; {
006C .dbline 41
006C ; //stop errant interrupts until set up
006C ; CLI(); //disable all interrupts
006C F894 cli
006E .dbline 42
006E ; port_init();
006E C8DF xcall _port_init
0070 .dbline 44
0070 ;
0070 ; MCUCR = 0x0A;
0070 8AE0 ldi R24,10
0072 85BF out 0x35,R24
0074 .dbline 45
0074 ; GICR = 0xC0;
0074 80EC ldi R24,192
0076 8BBF out 0x3b,R24
0078 .dbline 46
0078 ; TIMSK = 0x00; //timer interrupt sources
0078 2224 clr R2
007A 29BE out 0x39,R2
007C .dbline 47
007C ; SEI(); //re-enable interrupts
007C 7894 sei
007E .dbline -2
007E .dbline 49
007E ; //all peripherals are now initialised
007E ; }
007E L8:
007E .dbline 0 ; func end
007E 0895 ret
0080 .dbend
0080 .dbfunc e main _main fV
.even
0080 _main::
0080 .dbline -1
0080 .dbline 51
0080 ; void main(void)
0080 ; {
0080 .dbline 52
0080 ; PORTA=0xFF;
0080 8FEF ldi R24,255
0082 8BBB out 0x1b,R24
0084 .dbline 53
0084 ; DDRA=0xFF;
0084 8ABB out 0x1a,R24
0086 .dbline 55
0086 ;
0086 ; GICR|=0xC0; // 允许INT0、INT1中断
0086 8BB7 in R24,0x3b
0088 806C ori R24,192
008A 8BBF out 0x3b,R24
008C .dbline 56
008C ; MCUCR=0x0A; // INT0、INT1下降沿触发
008C 8AE0 ldi R24,10
008E 85BF out 0x35,R24
0090 .dbline 57
0090 ; GIFR=0xC0; // 清除INT0、INT1中断标志位
0090 80EC ldi R24,192
0092 8ABF out 0x3a,R24
0094 .dbline 59
0094 ;
0094 ; counter = 0; // 计数单元初始化为0
0094 2224 clr R2
0096 20920000 sts _counter,R2
009A 0BC0 xjmp L11
009C L10:
009C .dbline 65
009C .dbline 67
009C 80E0 ldi R24,<_led_7
009E 90E0 ldi R25,>_led_7
00A0 E0910000 lds R30,_counter
00A4 FF27 clr R31
00A6 E80F add R30,R24
00A8 F91F adc R31,R25
00AA E491 lpm R30,Z
00AC EBBB out 0x1b,R30
00AE .dbline 68
00AE B3DF xcall _int0_isr
00B0 .dbline 69
00B0 C8DF xcall _int1_isr
00B2 .dbline 70
00B2 L11:
00B2 .dbline 64
00B2 F4CF xjmp L10
00B4 X0:
00B4 .dbline -2
00B4 .dbline 71
00B4 ;
00B4 ; //#asm("sei") // 全局中断允许
00B4 ;
00B4 ;
00B4 ; while (1)
00B4 ; {
00B4 ;
00B4 ; PORTA = led_7[counter]; // 显示计数单元
00B4 ; int0_isr();
00B4 ; int1_isr();
00B4 ; }
00B4 ; }
00B4 L9:
00B4 .dbline 0 ; func end
00B4 0895 ret
00B6 .dbend
.area bss(ram, con, rel)
0000 .dbfile C:\DOCUME~1\Administrator\桌面\456\FF.c
0000 _counter::
0000 .blkb 1
0001 .dbsym e counter _counter c
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -