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

📄 pwm.lis

📁 用ICC编写的程序包括SPI
💻 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 + -