📄 led.lis
字号:
.module led.c
.area data(ram, con, rel)
0000 _LED_data::
0000 .blkb 1
.area idata
0000 01 .byte 1
.area data(ram, con, rel)
0001 .dbfile F:\工程文件\程序\学习板例程\LED\led.c
0001 .dbsym e LED_data _LED_data c
.area text(rom, con, rel)
0000 .dbfile F:\工程文件\程序\学习板例程\LED\led.c
0000 .dbfunc e port_init _port_init fV
.even
0000 _port_init::
0000 .dbline -1
0000 .dbline 10
0000 ; //ICC-AVR application builder : 2006-11-28 21:10:05
0000 ; // Target : M16
0000 ; // Crystal: 6.0000Mhz
0000 ;
0000 ; #include <iom16v.h>
0000 ; #include <macros.h>
0000 ;
0000 ; unsigned char LED_data=1;
0000 ; void port_init(void)
0000 ; {
0000 .dbline 11
0000 ; PORTA = 0xFF;//PA,PB,PC,PD口全部做输出,默认值1
0000 8FEF ldi R24,255
0002 8BBB out 0x1b,R24
0004 .dbline 12
0004 ; DDRA = 0xFF;//
0004 8ABB out 0x1a,R24
0006 .dbline 13
0006 ; PORTB = 0xFF;//
0006 88BB out 0x18,R24
0008 .dbline 14
0008 ; DDRB = 0xFF;//
0008 87BB out 0x17,R24
000A .dbline 15
000A ; PORTC = 0xFF; //m103 output only
000A 85BB out 0x15,R24
000C .dbline 16
000C ; DDRC = 0xFF;//
000C 84BB out 0x14,R24
000E .dbline 17
000E ; PORTD = 0xFF;//
000E 82BB out 0x12,R24
0010 .dbline 18
0010 ; DDRD = 0xFF;//
0010 81BB out 0x11,R24
0012 .dbline -2
0012 .dbline 19
0012 ; }
0012 L1:
0012 .dbline 0 ; func end
0012 0895 ret
0014 .dbend
0014 .dbfunc e timer1_init _timer1_init fV
.even
0014 _timer1_init::
0014 .dbline -1
0014 .dbline 26
0014 ;
0014 ; //TIMER1 initialisation - prescale:1024
0014 ; // WGM: 0) Normal, TOP=0xFFFF
0014 ; // desired value: 1Hz
0014 ; // actual value: 1.000Hz (0.0%)
0014 ; void timer1_init(void)
0014 ; {
0014 .dbline 27
0014 ; TCCR1B = 0x00; //stop
0014 2224 clr R2
0016 2EBC out 0x2e,R2
0018 .dbline 28
0018 ; TCNT1H = 0xE9; //setup
0018 89EE ldi R24,233
001A 8DBD out 0x2d,R24
001C .dbline 29
001C ; TCNT1L = 0x1D;
001C 8DE1 ldi R24,29
001E 8CBD out 0x2c,R24
0020 .dbline 30
0020 ; OCR1AH = 0x16;
0020 86E1 ldi R24,22
0022 8BBD out 0x2b,R24
0024 .dbline 31
0024 ; OCR1AL = 0xE3;
0024 83EE ldi R24,227
0026 8ABD out 0x2a,R24
0028 .dbline 32
0028 ; OCR1BH = 0x16;
0028 86E1 ldi R24,22
002A 89BD out 0x29,R24
002C .dbline 33
002C ; OCR1BL = 0xE3;
002C 83EE ldi R24,227
002E 88BD out 0x28,R24
0030 .dbline 34
0030 ; ICR1H = 0x16;
0030 86E1 ldi R24,22
0032 87BD out 0x27,R24
0034 .dbline 35
0034 ; ICR1L = 0xE3;
0034 83EE ldi R24,227
0036 86BD out 0x26,R24
0038 .dbline 36
0038 ; TCCR1A = 0x00;
0038 2FBC out 0x2f,R2
003A .dbline 37
003A ; TCCR1B = 0x05; //start Timer
003A 85E0 ldi R24,5
003C 8EBD out 0x2e,R24
003E .dbline -2
003E .dbline 38
003E ; }
003E L2:
003E .dbline 0 ; func end
003E 0895 ret
0040 .dbend
.area vector(rom, abs)
.org 32
0020 0C942000 jmp _timer1_ovf_isr
.area text(rom, con, rel)
0040 .dbfile F:\工程文件\程序\学习板例程\LED\led.c
0040 .dbfunc e timer1_ovf_isr _timer1_ovf_isr fV
.even
0040 _timer1_ovf_isr::
0040 2A92 st -y,R2
0042 8A93 st -y,R24
0044 2FB6 in R2,0x3f
0046 2A92 st -y,R2
0048 .dbline -1
0048 .dbline 42
0048 ;
0048 ; #pragma interrupt_handler timer1_ovf_isr:9
0048 ; void timer1_ovf_isr(void)
0048 ; {
0048 .dbline 44
0048 ; //TIMER1 has overflowed
0048 ; TCNT1H = 0xE9; //reload counter high value
0048 89EE ldi R24,233
004A 8DBD out 0x2d,R24
004C .dbline 45
004C ; TCNT1L = 0x1D; //reload counter low value
004C 8DE1 ldi R24,29
004E 8CBD out 0x2c,R24
0050 .dbline 46
0050 ; LED_data<<=1;
0050 20900000 lds R2,_LED_data
0054 220C lsl R2
0056 20920000 sts _LED_data,R2
005A .dbline 47
005A ; if(LED_data ==0)
005A 2220 tst R2
005C 19F4 brne L4
005E .dbline 48
005E ; LED_data = 1;
005E 81E0 ldi R24,1
0060 80930000 sts _LED_data,R24
0064 L4:
0064 .dbline 49
0064 ; PORTA=LED_data;
0064 20900000 lds R2,_LED_data
0068 2BBA out 0x1b,R2
006A .dbline -2
006A .dbline 52
006A ;
006A ;
006A ; }
006A L3:
006A 2990 ld R2,y+
006C 2FBE out 0x3f,R2
006E 8991 ld R24,y+
0070 2990 ld R2,y+
0072 .dbline 0 ; func end
0072 1895 reti
0074 .dbend
0074 .dbfunc e init_devices _init_devices fV
.even
0074 _init_devices::
0074 .dbline -1
0074 .dbline 56
0074 ;
0074 ; //call this routine to initialise all peripherals
0074 ; void init_devices(void)
0074 ; {
0074 .dbline 58
0074 ; //stop errant interrupts until set up
0074 ; CLI(); //disable all interrupts
0074 F894 cli
0076 .dbline 59
0076 ; port_init();
0076 C4DF xcall _port_init
0078 .dbline 60
0078 ; timer1_init();
0078 CDDF xcall _timer1_init
007A .dbline 62
007A ;
007A ; MCUCR = 0x00;
007A 2224 clr R2
007C 25BE out 0x35,R2
007E .dbline 63
007E ; GICR = 0x00;
007E 2BBE out 0x3b,R2
0080 .dbline 64
0080 ; TIMSK = 0x04; //timer interrupt sources
0080 84E0 ldi R24,4
0082 89BF out 0x39,R24
0084 .dbline 65
0084 ; SEI(); //re-enable interrupts
0084 7894 sei
0086 .dbline -2
0086 .dbline 67
0086 ; //all peripherals are now initialised
0086 ; }
0086 L6:
0086 .dbline 0 ; func end
0086 0895 ret
0088 .dbend
0088 .dbfunc e main _main fV
.even
0088 _main::
0088 .dbline -1
0088 .dbline 71
0088 ;
0088 ; //
0088 ; void main(void)
0088 ; {
0088 .dbline 72
0088 ; init_devices();
0088 .dbline -2
0088 .dbline 75
0088 ;
0088 ; //insert your functional code here...
0088 ; }
0088 L7:
0088 .dbline 0 ; func end
0088 F5CF xjmp _init_devices
008A .dbend
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -