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