📄 1.lis
字号:
.module _1.c
.area text(rom, con, rel)
0000 .dbfile C:\DOCUME~1\A1\桌面\pwm\成功\1.c
0000 .dbfunc e init_timer1 _init_timer1 fV
.even
0000 _init_timer1::
0000 .dbline -1
0000 .dbline 5
0000 ; #include <iom48v.h>
0000 ; #include <macros.h>
0000 ;
0000 ; void init_timer1()
0000 ; {//OCR1AH=0x00;//设定pwm的值约为0.8s
0000 .dbline 7
0000 ; //OCR1AL=0x90;
0000 ; OCR1A=23;
0000 87E1 ldi R24,23
0002 90E0 ldi R25,0
0004 90938900 sts 136+1,R25
0008 80938800 sts 136,R24
000C .dbline 8
000C ; TCCR1B = 0x00; //stop
000C 2224 clr R2
000E 20928100 sts 129,R2
0012 .dbline 10
0012 ; //TCCR1A=0x82;
0012 ; TCCR1A=0x82;
0012 82E8 ldi R24,130
0014 80938000 sts 128,R24
0018 .dbline 11
0018 ; TCCR1B=0x1A;
0018 8AE1 ldi R24,26
001A 80938100 sts 129,R24
001E .dbline 13
001E ; /*8分频,WGM14 快速PWM模式, OC1A正向PWM输出,TOP=ICR1*/
001E ; ICR1=30;//设定TOP值,设置频率30赫兹
001E 8EE1 ldi R24,30
0020 90938700 sts 134+1,R25
0024 80938600 sts 134,R24
0028 .dbline -2
0028 L1:
0028 .dbline 0 ; func end
0028 0895 ret
002A .dbend
.area vector(rom, abs)
.org 20
0014 15C0 rjmp _timer1_capt_isr
.area text(rom, con, rel)
002A .dbfile C:\DOCUME~1\A1\桌面\pwm\成功\1.c
002A .dbfunc e timer1_capt_isr _timer1_capt_isr fV
.even
002A _timer1_capt_isr::
002A 8A93 st -y,R24
002C 8FB7 in R24,0x3f
002E 8A93 st -y,R24
0030 .dbline -1
0030 .dbline 18
0030 ;
0030 ; }
0030 ; #pragma interrupt_handler timer1_capt_isr:11
0030 ; void timer1_capt_isr(void)
0030 ; {
0030 .dbline 21
0030 ; //timer 1 input capture event, read (int)value in ICR1 using;
0030 ; //TCNT1=0;
0030 ; DDRB=0x02;
0030 82E0 ldi R24,2
0032 84B9 out 0x4,R24
0034 .dbline -2
0034 L2:
0034 8991 ld R24,y+
0036 8FBF out 0x3f,R24
0038 8991 ld R24,y+
003A .dbline 0 ; func end
003A 1895 reti
003C .dbend
.area vector(rom, abs)
.org 22
0016 1EC0 rjmp _timer1_compa_isr
.area text(rom, con, rel)
003C .dbfile C:\DOCUME~1\A1\桌面\pwm\成功\1.c
003C .dbfunc e timer1_compa_isr _timer1_compa_isr fV
.even
003C _timer1_compa_isr::
003C 8A93 st -y,R24
003E 8FB7 in R24,0x3f
0040 8A93 st -y,R24
0042 .dbline -1
0042 .dbline 25
0042 ; }
0042 ; #pragma interrupt_handler timer1_compa_isr:12
0042 ; void timer1_compa_isr(void)
0042 ; {
0042 .dbline 27
0042 ; //compare occured TCNT1=OCR1A
0042 ; DDRB=0x02;
0042 82E0 ldi R24,2
0044 84B9 out 0x4,R24
0046 .dbline -2
0046 L3:
0046 8991 ld R24,y+
0048 8FBF out 0x3f,R24
004A 8991 ld R24,y+
004C .dbline 0 ; func end
004C 1895 reti
004E .dbend
004E .dbfunc e main _main fV
.even
004E _main::
004E .dbline -1
004E .dbline 32
004E ; }
004E ;
004E ;
004E ; void main()
004E ; {
004E .dbline 33
004E ; CLI();
004E F894 cli
0050 .dbline 35
0050 ; //init_port();
0050 ; PORTB = 0x02;
0050 82E0 ldi R24,2
0052 85B9 out 0x5,R24
0054 .dbline 36
0054 ; DDRB = 0x02;
0054 84B9 out 0x4,R24
0056 .dbline 37
0056 ; PORTC = 0x00;
0056 2224 clr R2
0058 28B8 out 0x8,R2
005A .dbline 38
005A ; DDRC = 0x00;
005A 27B8 out 0x7,R2
005C .dbline 39
005C ; PORTD = 0x00;
005C 2BB8 out 0xb,R2
005E .dbline 40
005E ; DDRD = 0x00;
005E 2AB8 out 0xa,R2
0060 .dbline 41
0060 ; init_timer1();
0060 CFDF rcall _init_timer1
0062 .dbline 42
0062 ; MCUCR = 0x00;
0062 2224 clr R2
0064 25BE out 0x35,R2
0066 .dbline 43
0066 ; EICRA = 0x00; //extended ext ints
0066 20926900 sts 105,R2
006A .dbline 44
006A ; EIMSK = 0x00;
006A 2DBA out 0x1d,R2
006C .dbline 46
006C ;
006C ; TIMSK0 = 0x00; //timer 0 interrupt sources
006C 20926E00 sts 110,R2
0070 .dbline 47
0070 ; TIMSK1 = 0x22; //timer 1 interrupt sources
0070 82E2 ldi R24,34
0072 80936F00 sts 111,R24
0076 .dbline 48
0076 ; TIMSK2 = 0x00; //timer 2 interrupt sources
0076 20927000 sts 112,R2
007A .dbline 50
007A ;
007A ; PCMSK0 = 0x00; //pin change mask 0
007A 20926B00 sts 107,R2
007E .dbline 51
007E ; PCMSK1 = 0x00; //pin change mask 1
007E 20926C00 sts 108,R2
0082 .dbline 52
0082 ; PCMSK2 = 0x00; //pin change mask 2
0082 20926D00 sts 109,R2
0086 .dbline 53
0086 ; PCICR = 0x00; //pin change enable
0086 20926800 sts 104,R2
008A .dbline 54
008A ; PRR = 0x00; //power controller
008A 20926400 sts 100,R2
008E .dbline 55
008E ; SEI();
008E 7894 sei
0090 L5:
0090 .dbline 56
0090 L6:
0090 .dbline 56
0090 FFCF rjmp L5
0092 X0:
0092 .dbline -2
0092 L4:
0092 .dbline 0 ; func end
0092 0895 ret
0094 .dbend
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -