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

📄 timer1.lis

📁 MEGA16 开发包3
💻 LIS
字号:
                        .module timer1.c
                        .area text(rom, con, rel)
 0000                   .dbfile C:\DOCUME~1\Administrator\桌面\16BITT~1\timer1.c
 0000                   .dbfunc e timer1_init _timer1_init fV
                        .even
 0000           _timer1_init::
 0000                   .dbline -1
 0000                   .dbline 21
 0000           ; //ICC-AVR application builder : 2007-5-6 21:30:57
 0000           ; // Target : M16
 0000           ; // Crystal: 8.0000Mhz
 0000           ; //TIMER1 initialize - prescale:64
 0000           ; // WGM: 10) PWM phz correct, TOP= ICRn
 0000           ; // desired value: 1Hz
 0000           ; // actual value:  1.000Hz (0.0%)
 0000           ; 
 0000           ; 
 0000           ; #include <iom16v.h>
 0000           ; #include <macros.h>
 0000           ; 
 0000           ; #define PWM1A     PORTD5  //OC1A   PD5
 0000           ; #define PWM1B     PORTD4  //OC1B   PD4
 0000           ; unsigned char OCAH;
 0000           ; unsigned char OCAL; 
 0000           ; unsigned char OCBH; 
 0000           ; unsigned char OCBL; 
 0000           ;  
 0000           ; void timer1_init(void)
 0000           ; {
 0000                   .dbline 22
 0000           ; TCCR1B = 0x00;          //stop
 0000 2224              clr R2
 0002 2EBC              out 0x2e,R2
 0004                   .dbline 23
 0004           ; TCNT1H = 0x00;          //setup
 0004 2DBC              out 0x2d,R2
 0006                   .dbline 24
 0006           ; TCNT1L = 0x01;
 0006 81E0              ldi R24,1
 0008 8CBD              out 0x2c,R24
 000A                   .dbline 25
 000A           ; OCR1AH = OCAH;
 000A 20900300          lds R2,_OCAH
 000E 2BBC              out 0x2b,R2
 0010                   .dbline 26
 0010           ; OCR1AL = OCAL;
 0010 20900200          lds R2,_OCAL
 0014 2ABC              out 0x2a,R2
 0016                   .dbline 27
 0016           ; OCR1BH = OCBH;
 0016 20900100          lds R2,_OCBH
 001A 29BC              out 0x29,R2
 001C                   .dbline 28
 001C           ; OCR1BL = OCBL;
 001C 20900000          lds R2,_OCBL
 0020 28BC              out 0x28,R2
 0022                   .dbline 29
 0022           ; ICR1H = 0xff;          // pwm 的计数顶值
 0022 8FEF              ldi R24,255
 0024 87BD              out 0x27,R24
 0026                   .dbline 30
 0026           ; ICR1L = 0xFF;
 0026 86BD              out 0x26,R24
 0028                   .dbline 31
 0028           ; TCCR1A = 0xA3;         // 匹配清零 top置位 
 0028 83EA              ldi R24,163
 002A 8FBD              out 0x2f,R24
 002C                   .dbline 32
 002C           ; TCCR1B = 0x0B;         // start Timer
 002C 8BE0              ldi R24,11
 002E 8EBD              out 0x2e,R24
 0030                   .dbline -2
 0030           L1:
 0030                   .dbline 0 ; func end
 0030 0895              ret
 0032                   .dbend
 0032                   .dbfunc e init_devices _init_devices fV
 0032           ;        valuebl -> y+6
 0032           ;        valuebh -> y+4
 0032           ;        valueal -> R20
 0032           ;        valueah -> R22
                        .even
 0032           _init_devices::
 0032 0E940000          xcall push_gset2
 0036 422F              mov R20,R18
 0038 602F              mov R22,R16
 003A                   .dbline -1
 003A                   .dbline 36
 003A           ; }
 003A           ; 
 003A           ; void init_devices(unsigned char valueah,unsigned char valueal,unsigned char valuebh,unsigned char valuebl)
 003A           ; {
 003A                   .dbline 38
 003A           ; 
 003A           ;  OCAH=valueah;
 003A 60930300          sts _OCAH,R22
 003E                   .dbline 39
 003E           ;  OCAL=valueal;
 003E 40930200          sts _OCAL,R20
 0042                   .dbline 40
 0042           ;  OCBH=valuebh;
 0042 0C80              ldd R0,y+4
 0044 00920100          sts _OCBH,R0
 0048                   .dbline 41
 0048           ;  OCBL=valuebl;
 0048 0E80              ldd R0,y+6
 004A 00920000          sts _OCBL,R0
 004E                   .dbline 42
 004E           ;  CLI();
 004E F894              cli
 0050                   .dbline 44
 0050           ;                          //disable all interrupts
 0050           ;  timer1_init();
 0050 D7DF              xcall _timer1_init
 0052                   .dbline 45
 0052           ;  MCUCR = 0x00;
 0052 2224              clr R2
 0054 25BE              out 0x35,R2
 0056                   .dbline 46
 0056           ;  GICR  = 0x00;
 0056 2BBE              out 0x3b,R2
 0058                   .dbline 47
 0058           ;  TIMSK = 0x04;           //timer interrupt sources
 0058 84E0              ldi R24,4
 005A 89BF              out 0x39,R24
 005C                   .dbline 48
 005C           ;  SEI();                  //re-enable interrupts
 005C 7894              sei
 005E                   .dbline -2
 005E           L2:
 005E 0E940000          xcall pop_gset2
 0062                   .dbline 0 ; func end
 0062 0895              ret
 0064                   .dbsym l valuebl 6 c
 0064                   .dbsym l valuebh 4 c
 0064                   .dbsym r valueal 20 c
 0064                   .dbsym r valueah 22 c
 0064                   .dbend
 0064                   .dbfunc e main _main fV
                        .even
 0064           _main::
 0064 2397              sbiw R28,3
 0066                   .dbline -1
 0066                   .dbline 54
 0066           ; 
 0066           ; }
 0066           ; 
 0066           ; 
 0066           ; void main(void)
 0066           ; {
 0066                   .dbline 55
 0066           ;  PORTD&=(0<<PWM1A)&(0<<PWM1B);
 0066 2224              clr R2
 0068 22BA              out 0x12,R2
 006A                   .dbline 56
 006A           ;  DDRD|=(1<<PWM1A)|(1<<PWM1B);
 006A 81B3              in R24,0x11
 006C 8063              ori R24,48
 006E 81BB              out 0x11,R24
 0070                   .dbline 57
 0070           ;  init_devices(0x0f,0x45,0x0f,0xf0);       //修改实参即可改变占空比,最大值为0X0FFF;
 0070 80EF              ldi R24,240
 0072 8A83              std y+2,R24
 0074 8FE0              ldi R24,15
 0076 8883              std y+0,R24
 0078 25E4              ldi R18,69
 007A 0FE0              ldi R16,15
 007C DADF              xcall _init_devices
 007E           L4:
 007E                   .dbline 58
 007E           L5:
 007E                   .dbline 58
 007E FFCF              xjmp L4
 0080           X0:
 0080                   .dbline -2
 0080           L3:
 0080 2396              adiw R28,3
 0082                   .dbline 0 ; func end
 0082 0895              ret
 0084                   .dbend
                        .area bss(ram, con, rel)
 0000                   .dbfile C:\DOCUME~1\Administrator\桌面\16BITT~1\timer1.c
 0000           _OCBL::
 0000                   .blkb 1
 0001                   .dbsym e OCBL _OCBL c
 0001           _OCBH::
 0001                   .blkb 1
 0002                   .dbsym e OCBH _OCBH c
 0002           _OCAL::
 0002                   .blkb 1
 0003                   .dbsym e OCAL _OCAL c
 0003           _OCAH::
 0003                   .blkb 1
 0004                   .dbsym e OCAH _OCAH c

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -