📄 pwm.lis
字号:
.module pwm.c
.area text(rom, con, rel)
0000 .dbfile F:\IccAvr_Pro\pwm.c
.area data(ram, con, rel)
0000 _pwm_value::
0000 .blkb 2
.area idata
0000 7F7F .byte 127,127
.area data(ram, con, rel)
0002 .dbsym e pwm_value _pwm_value A[2:2]c
.area text(rom, con, rel)
0000 .dbfunc e pwm_init _pwm_init fV
.even
0000 _pwm_init::
0000 .dbline -1
0000 .dbline 12
0000 ;
0000 ; #include "pwm.h"
0000 ;
0000 ;
0000 ; unsigned char pwm_value[2]={0x7f,0x7f};
0000 ; unsigned char pwm_flag;
0000 ; //TIMER1 initialize - prescale:1
0000 ; // WGM: 8) PWM phz freq correct, TOP=ICRn
0000 ; // desired value: 14.4KHz
0000 ; // actual value: 14.456KHz (0.4%)
0000 ; void pwm_init(void)
0000 ; {
0000 .dbline 13
0000 ; DDRD|=BIT(OC1B)|BIT(OC1A);
0000 81B3 in R24,0x11
0002 8063 ori R24,48
0004 81BB out 0x11,R24
0006 .dbline 15
0006 ; //PORTD|=BIT(OC1B)|BIT(OC1A);
0006 ; TCCR1B = 0x00; //stop
0006 2224 clr R2
0008 2EBC out 0x2e,R2
000A .dbline 16
000A ; TCNT1H = 0x00; //setup
000A 2DBC out 0x2d,R2
000C .dbline 17
000C ; TCNT1L = 0x00;
000C 2CBC out 0x2c,R2
000E .dbline 18
000E ; OCR1AH = 0x00;
000E 2BBC out 0x2b,R2
0010 .dbline 19
0010 ; OCR1AL = 0x7F;
0010 8FE7 ldi R24,127
0012 8ABD out 0x2a,R24
0014 .dbline 20
0014 ; OCR1BH = 0x00;
0014 29BC out 0x29,R2
0016 .dbline 21
0016 ; OCR1BL = 0x7F;
0016 88BD out 0x28,R24
0018 .dbline 22
0018 ; ICR1H = 0x00;
0018 27BC out 0x27,R2
001A .dbline 23
001A ; ICR1L = 0xFF;
001A 8FEF ldi R24,255
001C 86BD out 0x26,R24
001E .dbline 24
001E ; TCCR1A = 0xA0;
001E 80EA ldi R24,160
0020 8FBD out 0x2f,R24
0022 .dbline 25
0022 ; TCCR1B = 0x11; //start Timer
0022 81E1 ldi R24,17
0024 8EBD out 0x2e,R24
0026 .dbline 26
0026 ; pwm_flag=0;
0026 20920000 sts _pwm_flag,R2
002A .dbline -2
002A L1:
002A .dbline 0 ; func end
002A 0895 ret
002C .dbend
002C .dbfunc e pwm_change _pwm_change fV
.even
002C _pwm_change::
002C .dbline -1
002C .dbline 30
002C ; }
002C ;
002C ; void pwm_change(void)
002C ; {
002C .dbline 31
002C ; if(pwm_value[0]<3)
002C 80910000 lds R24,_pwm_value
0030 8330 cpi R24,3
0032 18F4 brsh L3
0034 .dbline 32
0034 ; pwm_value[0]=3;
0034 83E0 ldi R24,3
0036 80930000 sts _pwm_value,R24
003A L3:
003A .dbline 33
003A ; if(pwm_value[0]>253)
003A 8DEF ldi R24,253
003C 20900000 lds R2,_pwm_value
0040 8215 cp R24,R2
0042 10F4 brsh L5
0044 .dbline 34
0044 ; pwm_value[0]=253;
0044 80930000 sts _pwm_value,R24
0048 L5:
0048 .dbline 35
0048 ; OCR1AH=0x00;
0048 2224 clr R2
004A 2BBC out 0x2b,R2
004C .dbline 36
004C ; OCR1AL=pwm_value[0];
004C 20900000 lds R2,_pwm_value
0050 2ABC out 0x2a,R2
0052 .dbline 38
0052 ;
0052 ; if(pwm_value[1]<3)
0052 80910100 lds R24,_pwm_value+1
0056 8330 cpi R24,3
0058 18F4 brsh L7
005A .dbline 39
005A ; pwm_value[1]=3;
005A 83E0 ldi R24,3
005C 80930100 sts _pwm_value+1,R24
0060 L7:
0060 .dbline 40
0060 ; if(pwm_value[1]>253)
0060 8DEF ldi R24,253
0062 20900100 lds R2,_pwm_value+1
0066 8215 cp R24,R2
0068 10F4 brsh L11
006A .dbline 41
006A ; pwm_value[1]=253;
006A 80930100 sts _pwm_value+1,R24
006E L11:
006E .dbline 42
006E ; OCR1BH=0x00;
006E 2224 clr R2
0070 29BC out 0x29,R2
0072 .dbline 43
0072 ; OCR1BL=pwm_value[1];
0072 20900100 lds R2,_pwm_value+1
0076 28BC out 0x28,R2
0078 .dbline -2
0078 L2:
0078 .dbline 0 ; func end
0078 0895 ret
007A .dbend
.area bss(ram, con, rel)
0000 _pwm_flag::
0000 .blkb 1
0001 .dbsym e pwm_flag _pwm_flag c
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -