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

📄 1.s

📁 avr atmega48的pwm输出
💻 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 + -