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

📄 main.lis

📁 使用Attiny24的T0、T1两个定时器产生2路的PWM波,一路8位,一路10位
💻 LIS
字号:
                        .module main.c
                        .area text(rom, con, rel)
 0000                   .dbfile F:\Programme\PWM\main.c
 0000                   .dbfunc e main _main fV
                        .even
 0000           _main::
 0000                   .dbline -1
 0000                   .dbline 18
 0000           ; /*--------------------------------------------------------
 0000           ;    Atiny24-PWM:  此版本使用T0、T1共两路PWM,但目前两者还不能独立
 0000           ;    PWM mode:  
 0000           ;      TCCR0A:  COM0A1-COM0A0-COM0B1-COM0B0 - - WGM01-WGM00 
 0000           ;        TCCR0B:  FOC0A-FOC0B - - WGM02-CS02-CS01-CS00
 0000           ;        TCCR1A:  COM1A1-COM1A0-COM1B1-COM1B0 - - WGM11-WGM10
 0000           ;      TCCR1B:  ICNC1-ICES1 - WGM13-WGM12-CS12-CS11-CS10                          
 0000           ; ---------------------------------------------------------*/
 0000           ; #include "iot24v.h"
 0000           ; #include "macros.h"
 0000           ; #include "selffile.h"
 0000           ; 
 0000           ; unsigned int OCR0_temp,OCR1_temp;
 0000           ; /*----------------------------------------
 0000           ;   主程序
 0000           ; ----------------------------------------*/
 0000           ; void  main(void)
 0000           ; {
 0000                   .dbline 19
 0000           ;     NOP();
 0000 0000              nop
 0002                   .dbline 20
 0002           ;     CLI();
 0002 F894              cli
 0004                   .dbline 21
 0004           ;       WTCHDOG_init();
 0004 71D0              xcall _WTCHDOG_init
 0006                   .dbline 22
 0006           ;       OCR0_temp=0;
 0006 2224              clr R2
 0008 3324              clr R3
 000A 30920300          sts _OCR0_temp+1,R3
 000E 20920200          sts _OCR0_temp,R2
 0012                   .dbline 23
 0012           ;       OCR1_temp=0;
 0012 30920100          sts _OCR1_temp+1,R3
 0016 20920000          sts _OCR1_temp,R2
 001A                   .dbline 25
 001A           ;       
 001A           ;     MCU_init();
 001A 5CD0              xcall _MCU_init
 001C                   .dbline 26
 001C           ;       WDR();
 001C A895              wdr
 001E                   .dbline 27
 001E           ;       SEI();
 001E 7894              sei
 0020 40C0              xjmp L3
 0022           L2:
 0022                   .dbline 29
 0022           ;       while(1)
 0022           ;       {
 0022                   .dbline 30
 0022           ;          Delay_nms(500);
 0022 04EF              ldi R16,500
 0024 11E0              ldi R17,1
 0026 0E940000          xcall _Delay_nms
 002A                   .dbline 31
 002A           ;          OCR0_temp+=1;
 002A 80910200          lds R24,_OCR0_temp
 002E 90910300          lds R25,_OCR0_temp+1
 0032 0196              adiw R24,1
 0034 90930300          sts _OCR0_temp+1,R25
 0038 80930200          sts _OCR0_temp,R24
 003C                   .dbline 32
 003C           ;          OCR1_temp+=0x10;
 003C 80910000          lds R24,_OCR1_temp
 0040 90910100          lds R25,_OCR1_temp+1
 0044 4096              adiw R24,16
 0046 90930100          sts _OCR1_temp+1,R25
 004A 80930000          sts _OCR1_temp,R24
 004E                   .dbline 33
 004E           ;          if(OCR0_temp>0xff)
 004E 8FEF              ldi R24,255
 0050 90E0              ldi R25,0
 0052 20900200          lds R2,_OCR0_temp
 0056 30900300          lds R3,_OCR0_temp+1
 005A 8215              cp R24,R2
 005C 9305              cpc R25,R3
 005E 30F4              brsh L5
 0060           X0:
 0060                   .dbline 34
 0060           ;             OCR0_temp=0;
 0060 2224              clr R2
 0062 3324              clr R3
 0064 30920300          sts _OCR0_temp+1,R3
 0068 20920200          sts _OCR0_temp,R2
 006C           L5:
 006C                   .dbline 35
 006C           ;          if(OCR1_temp>0x3ff)
 006C 8FEF              ldi R24,1023
 006E 93E0              ldi R25,3
 0070 20900000          lds R2,_OCR1_temp
 0074 30900100          lds R3,_OCR1_temp+1
 0078 8215              cp R24,R2
 007A 9305              cpc R25,R3
 007C 30F4              brsh L7
 007E           X1:
 007E                   .dbline 36
 007E           ;             OCR1_temp=0;
 007E 2224              clr R2
 0080 3324              clr R3
 0082 30920100          sts _OCR1_temp+1,R3
 0086 20920000          sts _OCR1_temp,R2
 008A           L7:
 008A                   .dbline 38
 008A           ;       
 008A           ;          OCR0A=OCR0_temp;
 008A 20900200          lds R2,_OCR0_temp
 008E 30900300          lds R3,_OCR0_temp+1
 0092 26BE              out 0x36,R2
 0094                   .dbline 39
 0094           ;          OCR1A=OCR1_temp;
 0094 20900000          lds R2,_OCR1_temp
 0098 30900100          lds R3,_OCR1_temp+1
 009C 3BBC              out 0x2b,R3
 009E 2ABC              out 0x2a,R2
 00A0                   .dbline 40
 00A0           ;          WDR();
 00A0 A895              wdr
 00A2                   .dbline 41
 00A2           ;       }
 00A2           L3:
 00A2                   .dbline 28
 00A2 BFCF              xjmp L2
 00A4           X2:
 00A4                   .dbline -2
 00A4           L1:
 00A4                   .dbline 0 ; func end
 00A4 0895              ret
 00A6                   .dbend
 00A6                   .dbfunc e timer1_init _timer1_init fV
                        .even
 00A6           _timer1_init::
 00A6                   .dbline -1
 00A6                   .dbline 48
 00A6           ; }
 00A6           ; 
 00A6           ; /*----------------------------------------
 00A6           ;   系统初始化
 00A6           ; ----------------------------------------*/
 00A6           ; void  timer1_init(void)
 00A6           ; {
 00A6                   .dbline 49
 00A6           ;       TCNT1H=0x00;
 00A6 2224              clr R2
 00A8 2DBC              out 0x2d,R2
 00AA                   .dbline 50
 00AA           ;       TCNT1L=0x00;
 00AA 2CBC              out 0x2c,R2
 00AC                   .dbline 51
 00AC           ;       OCR1AH=0x00;             //
 00AC 2BBC              out 0x2b,R2
 00AE                   .dbline 52
 00AE           ;       OCR1AL=0xff;
 00AE 8FEF              ldi R24,255
 00B0 8ABD              out 0x2a,R24
 00B2                   .dbline 53
 00B2           ;       TIMSK1=0x00;
 00B2 2CB8              out 0xc,R2
 00B4                   .dbline 54
 00B4           ;       TCCR1A=(1<<COM1A1)|(1<<WGM10)|(1<<WGM11);    //
 00B4 83E8              ldi R24,131
 00B6 8FBD              out 0x2f,R24
 00B8                   .dbline 55
 00B8           ;       TCCR1B=(1<<CS10);
 00B8 81E0              ldi R24,1
 00BA 8EBD              out 0x2e,R24
 00BC                   .dbline -2
 00BC           L9:
 00BC                   .dbline 0 ; func end
 00BC 0895              ret
 00BE                   .dbend
 00BE                   .dbfunc e timer0_init _timer0_init fV
                        .even
 00BE           _timer0_init::
 00BE                   .dbline -1
 00BE                   .dbline 59
 00BE           ; }
 00BE           ; 
 00BE           ; void  timer0_init(void)
 00BE           ; {
 00BE                   .dbline 60
 00BE           ;     TCCR0B=0x00;
 00BE 2224              clr R2
 00C0 23BE              out 0x33,R2
 00C2                   .dbline 61
 00C2           ;       TCNT0=0x00;      //0xb0
 00C2 22BE              out 0x32,R2
 00C4                   .dbline 62
 00C4           ;       OCR0A=0x80;
 00C4 80E8              ldi R24,128
 00C6 86BF              out 0x36,R24
 00C8                   .dbline 63
 00C8           ;       TIMSK0=0x00;
 00C8 29BE              out 0x39,R2
 00CA                   .dbline 64
 00CA           ;       TCCR0A=(1<<COM0A1)|(1<<WGM00); 
 00CA 81E8              ldi R24,129
 00CC 80BF              out 0x30,R24
 00CE                   .dbline 65
 00CE           ;       TCCR0B=(1<<CS00);
 00CE 81E0              ldi R24,1
 00D0 83BF              out 0x33,R24
 00D2                   .dbline -2
 00D2           L10:
 00D2                   .dbline 0 ; func end
 00D2 0895              ret
 00D4                   .dbend
 00D4                   .dbfunc e MCU_init _MCU_init fV
                        .even
 00D4           _MCU_init::
 00D4                   .dbline -1
 00D4                   .dbline 69
 00D4           ; }
 00D4           ; 
 00D4           ; void  MCU_init(void)
 00D4           ; {
 00D4                   .dbline 70
 00D4           ;     DDRA=(1<<PA6)|(1<<PA5);
 00D4 80E6              ldi R24,96
 00D6 8ABB              out 0x1a,R24
 00D8                   .dbline 71
 00D8           ;       DDRB=(1<<PB2);
 00D8 84E0              ldi R24,4
 00DA 87BB              out 0x17,R24
 00DC                   .dbline 72
 00DC           ;       MCUCR = 0x00;
 00DC 2224              clr R2
 00DE 25BE              out 0x35,R2
 00E0                   .dbline 73
 00E0           ;     GIMSK = 0x00;
 00E0 2BBE              out 0x3b,R2
 00E2                   .dbline 74
 00E2           ;     timer0_init();
 00E2 EDDF              xcall _timer0_init
 00E4                   .dbline 75
 00E4           ;       timer1_init();
 00E4 E0DF              xcall _timer1_init
 00E6                   .dbline -2
 00E6           L11:
 00E6                   .dbline 0 ; func end
 00E6 0895              ret
 00E8                   .dbend
 00E8                   .dbfunc e WTCHDOG_init _WTCHDOG_init fV
                        .even
 00E8           _WTCHDOG_init::
 00E8                   .dbline -1
 00E8                   .dbline 82
 00E8           ; }
 00E8           ; 
 00E8           ; /*----------------------------------------
 00E8           ;   看门狗设置
 00E8           ; ----------------------------------------*/
 00E8           ; void  WTCHDOG_init(void)     //WTCHDOG: use the least frequency,about 2S
 00E8           ; {
 00E8                   .dbline 83
 00E8           ;     WDR();
 00E8 A895              wdr
 00EA                   .dbline 84
 00EA           ;       WDTCSR=0x9f;
 00EA 8FE9              ldi R24,159
 00EC 81BD              out 0x21,R24
 00EE                   .dbline 85
 00EE           ;       WDTCSR=0x0f;
 00EE 8FE0              ldi R24,15
 00F0 81BD              out 0x21,R24
 00F2                   .dbline -2
 00F2           L12:
 00F2                   .dbline 0 ; func end
 00F2 0895              ret
 00F4                   .dbend
                        .area bss(ram, con, rel)
 0000                   .dbfile F:\Programme\PWM\main.c
 0000           _OCR1_temp::
 0000                   .blkb 2
 0002                   .dbsym e OCR1_temp _OCR1_temp i
 0002           _OCR0_temp::
 0002                   .blkb 2
 0004                   .dbsym e OCR0_temp _OCR0_temp i
 0004           ; }

⌨️ 快捷键说明

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