📄 led.lis
字号:
.module led.c
.area text(rom, con, rel)
0000 .dbfile C:\DOCUME~1\alf\MYDOCU~1\开发板\调试程序\led\led.c
0000 .dbfunc e port_init _port_init fV
.even
0000 _port_init::
0000 .dbline -1
0000 .dbline 9
0000 ; //ICC-AVR application builder : 2005-3-2 上午 11:46:11
0000 ; // Target : M8
0000 ; // Crystal: 11.059Mhz
0000 ;
0000 ; #include <iom8v.h>
0000 ; #include <macros.h>
0000 ;
0000 ; void port_init(void)
0000 ; {
0000 .dbline 10
0000 ; PORTB = 0x00;
0000 2224 clr R2
0002 28BA out 0x18,R2
0004 .dbline 11
0004 ; DDRB = 0xFF;
0004 8FEF ldi R24,255
0006 87BB out 0x17,R24
0008 .dbline 12
0008 ; PORTC = 0x00; //m103 output only
0008 25BA out 0x15,R2
000A .dbline 13
000A ; DDRC = 0x7F;
000A 8FE7 ldi R24,127
000C 84BB out 0x14,R24
000E .dbline 14
000E ; PORTD = 0x00;
000E 22BA out 0x12,R2
0010 .dbline 15
0010 ; DDRD = 0xFF;
0010 8FEF ldi R24,255
0012 81BB out 0x11,R24
0014 .dbline -2
0014 .dbline 16
0014 ; }
0014 L1:
0014 .dbline 0 ; func end
0014 0895 ret
0016 .dbend
0016 .dbfunc e timer1_init _timer1_init fV
.even
0016 _timer1_init::
0016 .dbline -1
0016 .dbline 23
0016 ;
0016 ; //TIMER1 initialisation - prescale:256
0016 ; // WGM: 0) Normal, TOP=0xFFFF
0016 ; // desired value: 1Sec
0016 ; // actual value: 1.000Sec (0.0%)
0016 ; void timer1_init(void)
0016 ; {
0016 .dbline 24
0016 ; TCCR1B = 0x00; //stop
0016 2224 clr R2
0018 2EBC out 0x2e,R2
001A .dbline 25
001A ; TCNT1H = 0x57; //setup
001A 87E5 ldi R24,87
001C 8DBD out 0x2d,R24
001E .dbline 26
001E ; TCNT1L = 0x41;
001E 81E4 ldi R24,65
0020 8CBD out 0x2c,R24
0022 .dbline 27
0022 ; OCR1AH = 0xA8;
0022 88EA ldi R24,168
0024 8BBD out 0x2b,R24
0026 .dbline 28
0026 ; OCR1AL = 0xBF;
0026 8FEB ldi R24,191
0028 8ABD out 0x2a,R24
002A .dbline 29
002A ; OCR1BH = 0xA8;
002A 88EA ldi R24,168
002C 89BD out 0x29,R24
002E .dbline 30
002E ; OCR1BL = 0xBF;
002E 8FEB ldi R24,191
0030 88BD out 0x28,R24
0032 .dbline 31
0032 ; ICR1H = 0xA8;
0032 88EA ldi R24,168
0034 87BD out 0x27,R24
0036 .dbline 32
0036 ; ICR1L = 0xBF;
0036 8FEB ldi R24,191
0038 86BD out 0x26,R24
003A .dbline 33
003A ; TCCR1A = 0x00;
003A 2FBC out 0x2f,R2
003C .dbline 34
003C ; TCCR1B = 0x04; //start Timer
003C 84E0 ldi R24,4
003E 8EBD out 0x2e,R24
0040 .dbline -2
0040 .dbline 35
0040 ; }
0040 L2:
0040 .dbline 0 ; func end
0040 0895 ret
0042 .dbend
.area vector(rom, abs)
.org 16
0010 21C0 rjmp _timer1_ovf_isr
.area text(rom, con, rel)
0042 .dbfile C:\DOCUME~1\alf\MYDOCU~1\开发板\调试程序\led\led.c
0042 .dbfunc e timer1_ovf_isr _timer1_ovf_isr fV
.even
0042 _timer1_ovf_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 39
004A ;
004A ; #pragma interrupt_handler timer1_ovf_isr:9
004A ; void timer1_ovf_isr(void)
004A ; {
004A .dbline 41
004A ; //TIMER1 has overflowed
004A ; TCNT1H = 0x57; //reload counter high value
004A 87E5 ldi R24,87
004C 8DBD out 0x2d,R24
004E .dbline 42
004E ; TCNT1L = 0x41; //reload counter low value
004E 81E4 ldi R24,65
0050 8CBD out 0x2c,R24
0052 .dbline 46
0052 ;
0052 ;
0052 ;
0052 ; PORTB = ~PORTB;
0052 28B2 in R2,0x18
0054 2094 com R2
0056 28BA out 0x18,R2
0058 .dbline 47
0058 ; PORTC = ~PORTC;
0058 25B2 in R2,0x15
005A 2094 com R2
005C 25BA out 0x15,R2
005E .dbline 48
005E ; PORTD = ~PORTD;
005E 22B2 in R2,0x12
0060 2094 com R2
0062 22BA out 0x12,R2
0064 .dbline 50
0064 ;
0064 ; TCCR1A = 0x00;
0064 2224 clr R2
0066 2FBC out 0x2f,R2
0068 .dbline 51
0068 ; TCCR1B = 0x04; //start Timer
0068 84E0 ldi R24,4
006A 8EBD out 0x2e,R24
006C .dbline -2
006C .dbline 52
006C ; }
006C L3:
006C 2990 ld R2,y+
006E 2FBE out 0x3f,R2
0070 8991 ld R24,y+
0072 2990 ld R2,y+
0074 .dbline 0 ; func end
0074 1895 reti
0076 .dbend
0076 .dbfunc e init_devices _init_devices fV
.even
0076 _init_devices::
0076 .dbline -1
0076 .dbline 56
0076 ;
0076 ; //call this routine to initialise all peripherals
0076 ; void init_devices(void)
0076 ; {
0076 .dbline 58
0076 ; //stop errant interrupts until set up
0076 ; CLI(); //disable all interrupts
0076 F894 cli
0078 .dbline 59
0078 ; port_init();
0078 C3DF rcall _port_init
007A .dbline 60
007A ; timer1_init();
007A CDDF rcall _timer1_init
007C .dbline 62
007C ;
007C ; MCUCR = 0x00;
007C 2224 clr R2
007E 25BE out 0x35,R2
0080 .dbline 63
0080 ; GICR = 0x00;
0080 2BBE out 0x3b,R2
0082 .dbline 64
0082 ; TIMSK = 0x04; //timer interrupt sources
0082 84E0 ldi R24,4
0084 89BF out 0x39,R24
0086 .dbline 65
0086 ; SEI(); //re-enable interrupts
0086 7894 sei
0088 .dbline -2
0088 .dbline 67
0088 ; //all peripherals are now initialised
0088 ; }
0088 L4:
0088 .dbline 0 ; func end
0088 0895 ret
008A .dbend
008A .dbfunc e main _main fV
.even
008A _main::
008A .dbline -1
008A .dbline 71
008A ;
008A ;
008A ; void main(void)
008A ; {
008A .dbline 72
008A ; init_devices();
008A F5DF rcall _init_devices
008C L6:
008C .dbline 73
008C L7:
008C .dbline 73
008C FFCF rjmp L6
008E X0:
008E .dbline -2
008E .dbline 75
008E ; while(1);
008E ;
008E ; }
008E L5:
008E .dbline 0 ; func end
008E 0895 ret
0090 .dbend
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -