📄 timer.lis
字号:
.module timer.c
.area text(rom, con, rel)
0000 .dbfile D:\job\avrtest\web\example\timer\timer.c
0000 .dbfunc e timer0_init _timer0_init fV
.even
0000 _timer0_init::
0000 .dbline -1
0000 .dbline 12
0000 ; //ICC-AVR application builder : 2005-2-24 22:21:34
0000 ; // Target : M8
0000 ; // Crystal: 8.0000Mhz
0000 ;
0000 ; #include <iom8v.h>
0000 ; #include <macros.h>
0000 ;
0000 ; int i;
0000 ;
0000 ; // 初始化timer0, 1 ms
0000 ; void timer0_init(void)
0000 ; {
0000 .dbline 13
0000 ; TCCR0 = 0x00; //stop
0000 2224 clr R2
0002 23BE out 0x33,R2
0004 .dbline 14
0004 ; TCNT0 = 0xE1; //set count
0004 81EE ldi R24,225
0006 82BF out 0x32,R24
0008 .dbline 15
0008 ; TCCR0 = 0x04; //start timer
0008 84E0 ldi R24,4
000A 83BF out 0x33,R24
000C .dbline -2
000C .dbline 16
000C ; }
000C L1:
000C .dbline 0 ; func end
000C 0895 ret
000E .dbend
.area vector(rom, abs)
.org 18
0012 07C0 rjmp _timer0_ovf_isr
.area text(rom, con, rel)
000E .dbfile D:\job\avrtest\web\example\timer\timer.c
000E .dbfunc e timer0_ovf_isr _timer0_ovf_isr fV
.even
000E _timer0_ovf_isr::
000E 2A92 st -y,R2
0010 3A92 st -y,R3
0012 8A93 st -y,R24
0014 9A93 st -y,R25
0016 EA93 st -y,R30
0018 2FB6 in R2,0x3f
001A 2A92 st -y,R2
001C .dbline -1
001C .dbline 21
001C .dbline 22
001C 81EE ldi R24,225
001E 82BF out 0x32,R24
0020 .dbline 23
0020 80910000 lds R24,_i
0024 90910100 lds R25,_i+1
0028 0196 adiw R24,1
002A 90930100 sts _i+1,R25
002E 80930000 sts _i,R24
0032 883E cpi R24,232
0034 E3E0 ldi R30,3
0036 9E07 cpc R25,R30
0038 51F4 brne L3
003A .dbline 23
003A .dbline 24
003A 2224 clr R2
003C 3324 clr R3
003E 30920100 sts _i+1,R3
0042 20920000 sts _i,R2
0046 .dbline 25
0046 82E0 ldi R24,2
0048 28B2 in R2,0x18
004A 2826 eor R2,R24
004C 28BA out 0x18,R2
004E .dbline 26
004E L3:
004E .dbline -2
004E .dbline 27
004E ;
004E ; // timer0 中断
004E ; #pragma interrupt_handler timer0_ovf_isr:10
004E ; void timer0_ovf_isr(void)
004E ; {
004E ; TCNT0 = 0xE1; //reload counter value
004E ; if(++i == 1000){ // 1 秒
004E ; i = 0;
004E ; PORTB ^= 0x02; // 端口取反
004E ; }
004E ; }
004E L2:
004E 2990 ld R2,y+
0050 2FBE out 0x3f,R2
0052 E991 ld R30,y+
0054 9991 ld R25,y+
0056 8991 ld R24,y+
0058 3990 ld R3,y+
005A 2990 ld R2,y+
005C .dbline 0 ; func end
005C 1895 reti
005E .dbend
005E .dbfunc e init_devices _init_devices fV
.even
005E _init_devices::
005E .dbline -1
005E .dbline 31
005E ;
005E ; //call this routine to initialise all peripherals
005E ; void init_devices(void)
005E ; {
005E .dbline 33
005E ; //stop errant interrupts until set up
005E ; CLI(); //disable all interrupts
005E F894 cli
0060 .dbline 34
0060 ; DDRB = 0x02; // 设置 PB1 为输出
0060 82E0 ldi R24,2
0062 87BB out 0x17,R24
0064 .dbline 35
0064 ; timer0_init();
0064 CDDF rcall _timer0_init
0066 .dbline 37
0066 ;
0066 ; MCUCR = 0x00;
0066 2224 clr R2
0068 25BE out 0x35,R2
006A .dbline 38
006A ; GICR = 0x00;
006A 2BBE out 0x3b,R2
006C .dbline 39
006C ; TIMSK = 0x01; //timer interrupt sources
006C 81E0 ldi R24,1
006E 89BF out 0x39,R24
0070 .dbline 40
0070 ; SEI(); //re-enable interrupts
0070 7894 sei
0072 .dbline -2
0072 .dbline 42
0072 ; //all peripherals are now initialised
0072 ; }
0072 L5:
0072 .dbline 0 ; func end
0072 0895 ret
0074 .dbend
0074 .dbfunc e main _main fV
.even
0074 _main::
0074 .dbline -1
0074 .dbline 46
0074 ;
0074 ; //
0074 ; void main(void)
0074 ; {
0074 .dbline 47
0074 ; init_devices();
0074 F4DF rcall _init_devices
0076 .dbline 49
0076 L7:
0076 .dbline 49
0076 .dbline 49
0076 .dbline 49
0076 FFCF rjmp L7
0078 X0:
0078 .dbline -2
0078 L6:
0078 .dbline 0 ; func end
0078 0895 ret
007A .dbend
.area bss(ram, con, rel)
0000 .dbfile D:\job\avrtest\web\example\timer\timer.c
0000 _i::
0000 .blkb 2
0002 .dbsym e i _i I
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -