📄 1.s
字号:
.module _1.c
.area text(rom, con, rel)
.dbfile C:\DOCUME~1\A1\桌面\pwm\成功\1.c
.dbfunc e init_timer1 _init_timer1 fV
.even
_init_timer1::
.dbline -1
.dbline 5
; #include <iom48v.h>
; #include <macros.h>
;
; void init_timer1()
; {//OCR1AH=0x00;//设定pwm的值约为0.8s
.dbline 7
; //OCR1AL=0x90;
; OCR1A=23;
ldi R24,23
ldi R25,0
sts 136+1,R25
sts 136,R24
.dbline 8
; TCCR1B = 0x00; //stop
clr R2
sts 129,R2
.dbline 10
; //TCCR1A=0x82;
; TCCR1A=0x82;
ldi R24,130
sts 128,R24
.dbline 11
; TCCR1B=0x1A;
ldi R24,26
sts 129,R24
.dbline 13
; /*8分频,WGM14 快速PWM模式, OC1A正向PWM输出,TOP=ICR1*/
; ICR1=30;//设定TOP值,设置频率30赫兹
ldi R24,30
sts 134+1,R25
sts 134,R24
.dbline -2
L1:
.dbline 0 ; func end
ret
.dbend
.area vector(rom, abs)
.org 20
rjmp _timer1_capt_isr
.area text(rom, con, rel)
.dbfile C:\DOCUME~1\A1\桌面\pwm\成功\1.c
.dbfunc e timer1_capt_isr _timer1_capt_isr fV
.even
_timer1_capt_isr::
st -y,R24
in R24,0x3f
st -y,R24
.dbline -1
.dbline 18
;
; }
; #pragma interrupt_handler timer1_capt_isr:11
; void timer1_capt_isr(void)
; {
.dbline 21
; //timer 1 input capture event, read (int)value in ICR1 using;
; //TCNT1=0;
; DDRB=0x02;
ldi R24,2
out 0x4,R24
.dbline -2
L2:
ld R24,y+
out 0x3f,R24
ld R24,y+
.dbline 0 ; func end
reti
.dbend
.area vector(rom, abs)
.org 22
rjmp _timer1_compa_isr
.area text(rom, con, rel)
.dbfile C:\DOCUME~1\A1\桌面\pwm\成功\1.c
.dbfunc e timer1_compa_isr _timer1_compa_isr fV
.even
_timer1_compa_isr::
st -y,R24
in R24,0x3f
st -y,R24
.dbline -1
.dbline 25
; }
; #pragma interrupt_handler timer1_compa_isr:12
; void timer1_compa_isr(void)
; {
.dbline 27
; //compare occured TCNT1=OCR1A
; DDRB=0x02;
ldi R24,2
out 0x4,R24
.dbline -2
L3:
ld R24,y+
out 0x3f,R24
ld R24,y+
.dbline 0 ; func end
reti
.dbend
.dbfunc e main _main fV
.even
_main::
.dbline -1
.dbline 32
; }
;
;
; void main()
; {
.dbline 33
; CLI();
cli
.dbline 35
; //init_port();
; PORTB = 0x02;
ldi R24,2
out 0x5,R24
.dbline 36
; DDRB = 0x02;
out 0x4,R24
.dbline 37
; PORTC = 0x00;
clr R2
out 0x8,R2
.dbline 38
; DDRC = 0x00;
out 0x7,R2
.dbline 39
; PORTD = 0x00;
out 0xb,R2
.dbline 40
; DDRD = 0x00;
out 0xa,R2
.dbline 41
; init_timer1();
rcall _init_timer1
.dbline 42
; MCUCR = 0x00;
clr R2
out 0x35,R2
.dbline 43
; EICRA = 0x00; //extended ext ints
sts 105,R2
.dbline 44
; EIMSK = 0x00;
out 0x1d,R2
.dbline 46
;
; TIMSK0 = 0x00; //timer 0 interrupt sources
sts 110,R2
.dbline 47
; TIMSK1 = 0x22; //timer 1 interrupt sources
ldi R24,34
sts 111,R24
.dbline 48
; TIMSK2 = 0x00; //timer 2 interrupt sources
sts 112,R2
.dbline 50
;
; PCMSK0 = 0x00; //pin change mask 0
sts 107,R2
.dbline 51
; PCMSK1 = 0x00; //pin change mask 1
sts 108,R2
.dbline 52
; PCMSK2 = 0x00; //pin change mask 2
sts 109,R2
.dbline 53
; PCICR = 0x00; //pin change enable
sts 104,R2
.dbline 54
; PRR = 0x00; //power controller
sts 100,R2
.dbline 55
; SEI();
sei
L5:
.dbline 56
L6:
.dbline 56
rjmp L5
X0:
.dbline -2
L4:
.dbline 0 ; func end
ret
.dbend
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -