📄 timer1.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 + -