⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 timer.lis

📁 avr单片机atmega8系列定时器的使用测试程序
💻 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 + -