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

📄 timer1.s

📁 MEGA16 开发包3
💻 S
字号:
	.module timer1.c
	.area text(rom, con, rel)
	.dbfile C:\DOCUME~1\Administrator\桌面\16BITT~1\timer1.c
	.dbfunc e timer1_init _timer1_init fV
	.even
_timer1_init::
	.dbline -1
	.dbline 21
; //ICC-AVR application builder : 2007-5-6 21:30:57
; // Target : M16
; // Crystal: 8.0000Mhz
; //TIMER1 initialize - prescale:64
; // WGM: 10) PWM phz correct, TOP= ICRn
; // desired value: 1Hz
; // actual value:  1.000Hz (0.0%)
; 
; 
; #include <iom16v.h>
; #include <macros.h>
; 
; #define PWM1A     PORTD5  //OC1A   PD5
; #define PWM1B     PORTD4  //OC1B   PD4
; unsigned char OCAH;
; unsigned char OCAL; 
; unsigned char OCBH; 
; unsigned char OCBL; 
;  
; void timer1_init(void)
; {
	.dbline 22
; TCCR1B = 0x00;          //stop
	clr R2
	out 0x2e,R2
	.dbline 23
; TCNT1H = 0x00;          //setup
	out 0x2d,R2
	.dbline 24
; TCNT1L = 0x01;
	ldi R24,1
	out 0x2c,R24
	.dbline 25
; OCR1AH = OCAH;
	lds R2,_OCAH
	out 0x2b,R2
	.dbline 26
; OCR1AL = OCAL;
	lds R2,_OCAL
	out 0x2a,R2
	.dbline 27
; OCR1BH = OCBH;
	lds R2,_OCBH
	out 0x29,R2
	.dbline 28
; OCR1BL = OCBL;
	lds R2,_OCBL
	out 0x28,R2
	.dbline 29
; ICR1H = 0xff;          // pwm 的计数顶值
	ldi R24,255
	out 0x27,R24
	.dbline 30
; ICR1L = 0xFF;
	out 0x26,R24
	.dbline 31
; TCCR1A = 0xA3;         // 匹配清零 top置位 
	ldi R24,163
	out 0x2f,R24
	.dbline 32
; TCCR1B = 0x0B;         // start Timer
	ldi R24,11
	out 0x2e,R24
	.dbline -2
L1:
	.dbline 0 ; func end
	ret
	.dbend
	.dbfunc e init_devices _init_devices fV
;        valuebl -> y+6
;        valuebh -> y+4
;        valueal -> R20
;        valueah -> R22
	.even
_init_devices::
	xcall push_gset2
	mov R20,R18
	mov R22,R16
	.dbline -1
	.dbline 36
; }
; 
; void init_devices(unsigned char valueah,unsigned char valueal,unsigned char valuebh,unsigned char valuebl)
; {
	.dbline 38
; 
;  OCAH=valueah;
	sts _OCAH,R22
	.dbline 39
;  OCAL=valueal;
	sts _OCAL,R20
	.dbline 40
;  OCBH=valuebh;
	ldd R0,y+4
	sts _OCBH,R0
	.dbline 41
;  OCBL=valuebl;
	ldd R0,y+6
	sts _OCBL,R0
	.dbline 42
;  CLI();
	cli
	.dbline 44
;                          //disable all interrupts
;  timer1_init();
	xcall _timer1_init
	.dbline 45
;  MCUCR = 0x00;
	clr R2
	out 0x35,R2
	.dbline 46
;  GICR  = 0x00;
	out 0x3b,R2
	.dbline 47
;  TIMSK = 0x04;           //timer interrupt sources
	ldi R24,4
	out 0x39,R24
	.dbline 48
;  SEI();                  //re-enable interrupts
	sei
	.dbline -2
L2:
	xcall pop_gset2
	.dbline 0 ; func end
	ret
	.dbsym l valuebl 6 c
	.dbsym l valuebh 4 c
	.dbsym r valueal 20 c
	.dbsym r valueah 22 c
	.dbend
	.dbfunc e main _main fV
	.even
_main::
	sbiw R28,3
	.dbline -1
	.dbline 54
; 
; }
; 
; 
; void main(void)
; {
	.dbline 55
;  PORTD&=(0<<PWM1A)&(0<<PWM1B);
	clr R2
	out 0x12,R2
	.dbline 56
;  DDRD|=(1<<PWM1A)|(1<<PWM1B);
	in R24,0x11
	ori R24,48
	out 0x11,R24
	.dbline 57
;  init_devices(0x0f,0x45,0x0f,0xf0);       //修改实参即可改变占空比,最大值为0X0FFF;
	ldi R24,240
	std y+2,R24
	ldi R24,15
	std y+0,R24
	ldi R18,69
	ldi R16,15
	xcall _init_devices
L4:
	.dbline 58
L5:
	.dbline 58
	xjmp L4
X0:
	.dbline -2
L3:
	adiw R28,3
	.dbline 0 ; func end
	ret
	.dbend
	.area bss(ram, con, rel)
	.dbfile C:\DOCUME~1\Administrator\桌面\16BITT~1\timer1.c
_OCBL::
	.blkb 1
	.dbsym e OCBL _OCBL c
_OCBH::
	.blkb 1
	.dbsym e OCBH _OCBH c
_OCAL::
	.blkb 1
	.dbsym e OCAL _OCAL c
_OCAH::
	.blkb 1
	.dbsym e OCAH _OCAH c

⌨️ 快捷键说明

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