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

📄 main.lis

📁 用Attiny24的T1定时器产生10位PWM波形
💻 LIS
字号:
                        .module main.c
                        .area text(rom, con, rel)
 0000                   .dbfile F:\Programme\软件备份\PWM1\main.c
 0000                   .dbfunc e main _main fV
                        .even
 0000           _main::
 0000                   .dbline -1
 0000                   .dbline 18
 0000           ; /*--------------------------------------------------------
 0000           ;    Atiny24-PWM:  此版本使用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 OCR1A_temp,OCR1B_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 22
 0004           ;       //WTCHDOG_init();
 0004           ;       OCR1A_temp=0;
 0004 2224              clr R2
 0006 3324              clr R3
 0008 30920300          sts _OCR1A_temp+1,R3
 000C 20920200          sts _OCR1A_temp,R2
 0010                   .dbline 23
 0010           ;       OCR1B_temp=0;
 0010 30920100          sts _OCR1B_temp+1,R3
 0014 20920000          sts _OCR1B_temp,R2
 0018                   .dbline 25
 0018           ;       
 0018           ;     MCU_init();
 0018 14D0              xcall _MCU_init
 001A                   .dbline 26
 001A           ;       SEI();
 001A 7894              sei
 001C           L2:
 001C                   .dbline 28
 001C           ;       while(1)
 001C           ;       ;
 001C           L3:
 001C                   .dbline 27
 001C FFCF              xjmp L2
 001E           X0:
 001E                   .dbline -2
 001E           L1:
 001E                   .dbline 0 ; func end
 001E 0895              ret
 0020                   .dbend
 0020                   .dbfunc e timer1_init _timer1_init fV
                        .even
 0020           _timer1_init::
 0020                   .dbline -1
 0020                   .dbline 47
 0020           ;       /*{
 0020           ;          Delay_nms(200);
 0020           ;          OCR1A_temp+=2;
 0020           ;          OCR1B_temp+=4;
 0020           ;          if(OCR1A_temp>=0x3ff)
 0020           ;             OCR1A_temp=0;
 0020           ;          if(OCR1B_temp>=0x3ff)
 0020           ;             OCR1B_temp=0;
 0020           ;          
 0020           ;          OCR1A=OCR1A_temp;
 0020           ;          OCR1B=OCR1B_temp;
 0020           ;       }*/
 0020           ; }
 0020           ; 
 0020           ; /*----------------------------------------
 0020           ;   系统初始化
 0020           ; ----------------------------------------*/
 0020           ; void  timer1_init(void)
 0020           ; {
 0020                   .dbline 48
 0020           ;       TCNT1H=0x00;
 0020 2224              clr R2
 0022 2DBC              out 0x2d,R2
 0024                   .dbline 49
 0024           ;       TCNT1L=0x00;
 0024 2CBC              out 0x2c,R2
 0026                   .dbline 50
 0026           ;       OCR1AH=0x01;             
 0026 81E0              ldi R24,1
 0028 8BBD              out 0x2b,R24
 002A                   .dbline 51
 002A           ;       OCR1AL=0x99;
 002A 89E9              ldi R24,153
 002C 8ABD              out 0x2a,R24
 002E                   .dbline 52
 002E           ;       OCR1BH=0x02;
 002E 82E0              ldi R24,2
 0030 89BD              out 0x29,R24
 0032                   .dbline 53
 0032           ;       OCR1BL=0x65;
 0032 85E6              ldi R24,101
 0034 88BD              out 0x28,R24
 0036                   .dbline 54
 0036           ;       TIMSK1=0x00;
 0036 2CB8              out 0xc,R2
 0038                   .dbline 55
 0038           ;       TCCR1A=(1<<COM1A1)|(1<<COM1B1)|(1<<WGM10)|(1<<WGM11);    
 0038 83EA              ldi R24,163
 003A 8FBD              out 0x2f,R24
 003C                   .dbline 56
 003C           ;       TCCR1B=(1<<CS10);        //不分频,否则波形较差
 003C 81E0              ldi R24,1
 003E 8EBD              out 0x2e,R24
 0040                   .dbline -2
 0040           L5:
 0040                   .dbline 0 ; func end
 0040 0895              ret
 0042                   .dbend
 0042                   .dbfunc e MCU_init _MCU_init fV
                        .even
 0042           _MCU_init::
 0042                   .dbline -1
 0042                   .dbline 60
 0042           ; }
 0042           ; 
 0042           ; void  MCU_init(void)
 0042           ; {
 0042                   .dbline 61
 0042           ;     DDRA=(1<<PA6)|(1<<PA5);
 0042 80E6              ldi R24,96
 0044 8ABB              out 0x1a,R24
 0046                   .dbline 62
 0046           ;       MCUCR = 0x00;
 0046 2224              clr R2
 0048 25BE              out 0x35,R2
 004A                   .dbline 63
 004A           ;     GIMSK = 0x00;
 004A 2BBE              out 0x3b,R2
 004C                   .dbline 64
 004C           ;       timer1_init();
 004C E9DF              xcall _timer1_init
 004E                   .dbline -2
 004E           L6:
 004E                   .dbline 0 ; func end
 004E 0895              ret
 0050                   .dbend
                        .area bss(ram, con, rel)
 0000                   .dbfile F:\Programme\软件备份\PWM1\main.c
 0000           _OCR1B_temp::
 0000                   .blkb 2
 0002                   .dbsym e OCR1B_temp _OCR1B_temp i
 0002           _OCR1A_temp::
 0002                   .blkb 2
 0004                   .dbsym e OCR1A_temp _OCR1A_temp i
 0004           ; }
 0004           ; 
 0004           ; /*----------------------------------------
 0004           ;   看门狗设置
 0004           ; ----------------------------------------*/
 0004           ; /*void  WTCHDOG_init(void)     //WTCHDOG: use the least frequency,about 2S
 0004           ; {
 0004           ;     WDR();
 0004           ;       WDTCSR=0x9f;
 0004           ;       WDTCSR=0x0f;
 0004           ; }*/
 0004           ; 

⌨️ 快捷键说明

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