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

📄 正弦波.s

📁 自己写的用AVR 单片机产生正弦波.用示波器观察波形很好!
💻 S
字号:
	.module _正弦波.c
	.area vector(rom, abs)
	.org 32
	jmp _timer1
	.area data(ram, con, rel)
_auc_SinParam::
	.blkb 2
	.area idata
	.byte 128,134
	.area data(ram, con, rel)
	.blkb 2
	.area idata
	.byte 140,147
	.area data(ram, con, rel)
	.blkb 2
	.area idata
	.byte 153,159
	.area data(ram, con, rel)
	.blkb 2
	.area idata
	.byte 165,171
	.area data(ram, con, rel)
	.blkb 2
	.area idata
	.byte 177,182
	.area data(ram, con, rel)
	.blkb 2
	.area idata
	.byte 188,193
	.area data(ram, con, rel)
	.blkb 2
	.area idata
	.byte 198,204
	.area data(ram, con, rel)
	.blkb 2
	.area idata
	.byte 208,213
	.area data(ram, con, rel)
	.blkb 2
	.area idata
	.byte 218,222
	.area data(ram, con, rel)
	.blkb 2
	.area idata
	.byte 226,230
	.area data(ram, con, rel)
	.blkb 2
	.area idata
	.byte 233,237
	.area data(ram, con, rel)
	.blkb 2
	.area idata
	.byte 240,242
	.area data(ram, con, rel)
	.blkb 2
	.area idata
	.byte 245,247
	.area data(ram, con, rel)
	.blkb 2
	.area idata
	.byte 249,251
	.area data(ram, con, rel)
	.blkb 2
	.area idata
	.byte 252,253
	.area data(ram, con, rel)
	.blkb 2
	.area idata
	.byte 254,254
	.area data(ram, con, rel)
	.blkb 2
	.area idata
	.byte 254,254
	.area data(ram, con, rel)
	.blkb 2
	.area idata
	.byte 253,252
	.area data(ram, con, rel)
	.blkb 2
	.area idata
	.byte 251,250
	.area data(ram, con, rel)
	.blkb 2
	.area idata
	.byte 248,246
	.area data(ram, con, rel)
	.blkb 2
	.area idata
	.byte 244,241
	.area data(ram, con, rel)
	.blkb 2
	.area idata
	.byte 238,235
	.area data(ram, con, rel)
	.blkb 2
	.area idata
	.byte 232,228
	.area data(ram, con, rel)
	.blkb 2
	.area idata
	.byte 224,220
	.area data(ram, con, rel)
	.blkb 2
	.area idata
	.byte 215,211
	.area data(ram, con, rel)
	.blkb 2
	.area idata
	.byte 206,201
	.area data(ram, con, rel)
	.blkb 2
	.area idata
	.byte 196,191
	.area data(ram, con, rel)
	.blkb 2
	.area idata
	.byte 185,179
	.area data(ram, con, rel)
	.blkb 2
	.area idata
	.byte 174,168
	.area data(ram, con, rel)
	.blkb 2
	.area idata
	.byte 162,156
	.area data(ram, con, rel)
	.blkb 2
	.area idata
	.byte 150,144
	.area data(ram, con, rel)
	.blkb 2
	.area idata
	.byte 137,131
	.area data(ram, con, rel)
	.blkb 2
	.area idata
	.byte 125,'w
	.area data(ram, con, rel)
	.blkb 2
	.area idata
	.byte 'p,'j
	.area data(ram, con, rel)
	.blkb 2
	.area idata
	.byte 'd,94
	.area data(ram, con, rel)
	.blkb 2
	.area idata
	.byte 'X,'R
	.area data(ram, con, rel)
	.blkb 2
	.area idata
	.byte 'M,'G
	.area data(ram, con, rel)
	.blkb 2
	.area idata
	.byte 'A,60
	.area data(ram, con, rel)
	.blkb 2
	.area idata
	.byte 55,50
	.area data(ram, con, rel)
	.blkb 2
	.area idata
	.byte 45,41
	.area data(ram, con, rel)
	.blkb 2
	.area idata
	.byte 36,32
	.area data(ram, con, rel)
	.blkb 2
	.area idata
	.byte 28,24
	.area data(ram, con, rel)
	.blkb 2
	.area idata
	.byte 21,18
	.area data(ram, con, rel)
	.blkb 2
	.area idata
	.byte 15,12
	.area data(ram, con, rel)
	.blkb 2
	.area idata
	.byte 10,8
	.area data(ram, con, rel)
	.blkb 2
	.area idata
	.byte 6,5
	.area data(ram, con, rel)
	.blkb 2
	.area idata
	.byte 4,3
	.area data(ram, con, rel)
	.blkb 2
	.area idata
	.byte 2,2
	.area data(ram, con, rel)
	.blkb 2
	.area idata
	.byte 2,2
	.area data(ram, con, rel)
	.blkb 2
	.area idata
	.byte 3,4
	.area data(ram, con, rel)
	.blkb 2
	.area idata
	.byte 5,7
	.area data(ram, con, rel)
	.blkb 2
	.area idata
	.byte 9,11
	.area data(ram, con, rel)
	.blkb 2
	.area idata
	.byte 14,16
	.area data(ram, con, rel)
	.blkb 2
	.area idata
	.byte 19,23
	.area data(ram, con, rel)
	.blkb 2
	.area idata
	.byte 26,30
	.area data(ram, con, rel)
	.blkb 2
	.area idata
	.byte 34,38
	.area data(ram, con, rel)
	.blkb 2
	.area idata
	.byte 43,48
	.area data(ram, con, rel)
	.blkb 2
	.area idata
	.byte 52,57
	.area data(ram, con, rel)
	.blkb 2
	.area idata
	.byte 63,'D
	.area data(ram, con, rel)
	.blkb 2
	.area idata
	.byte 'J,'O
	.area data(ram, con, rel)
	.blkb 2
	.area idata
	.byte 'U,91
	.area data(ram, con, rel)
	.blkb 2
	.area idata
	.byte 'a,'g
	.area data(ram, con, rel)
	.blkb 2
	.area idata
	.byte 'm,'t
	.area data(ram, con, rel)
	.blkb 2
	.area idata
	.byte 'z,128
	.area data(ram, con, rel)
	.dbfile 正弦波.c
	.dbsym e auc_SinParam _auc_SinParam A[128:128]c
_x::
	.blkb 1
	.area idata
	.byte 0
	.area data(ram, con, rel)
	.dbfile 正弦波.c
	.dbsym e x _x c
	.area text(rom, con, rel)
	.dbfile 正弦波.c
	.dbfunc e timer1 _timer1 fV
	.even
_timer1::
	st -y,R2
	st -y,R3
	st -y,R24
	st -y,R25
	st -y,R30
	st -y,R31
	in R2,0x3f
	st -y,R2
	.dbline -1
	.dbline 26
; /*******************************************************************
;      实验名称:产生正弦波演示实验
; 	     作者:王晓波
; 		 晶振:外部   8M
;      接线方法:
; 	       1.PD5接低通滤波输入
; 		   2.用示波器测其输出波形
; *******************************************************************/
; #include<iom16v.h>
; #include <macros.h>
; #include<signal.h>
; #pragma interrupt_handler timer1:9
; char auc_SinParam[128]={//128点正弦波样本值
; 128,134,140,147,153,159,165,171,177,182,188,193,198,204,208,213,
; 218,222,226,230,233,237,240,242,245,247,249,251,252,253,254,254,
; 254,254,253,252,251,250,248,246,244,241,238,235,232,228,224,220,
; 215,211,206,201,196,191,185,179,174,168,162,156,150,144,137,131,
; 125,119,112,106,100,94,88,82,77,71,65,60,55,50,45,41,
; 36,32,28,24,21,18,15,12,10,8,6,5,4,3,2,2,
; 2,2,3,4,5,7,9,11,14,16,19,23,26,30,34,38,
; 43,48,52,57,63,68,74,79,85,91,97,103,109,116,122,128 
; };
; char x=0;
; //T/C1溢出中断服务
; void timer1(void)
; {
	.dbline 27
; x=x+1;
	lds R24,_x
	subi R24,255    ; addi 1
	sts _x,R24
	.dbline 28
; if (x>128)
	ldi R24,128
	lds R2,_x
	cp R24,R2
	brsh L2
	.dbline 29
; x=0;
	clr R2
	sts _x,R2
L2:
	.dbline 30
; OCR1A=auc_SinParam[x];//auc_SinParam[x];//取样点指针到比较匹配寄存器
	ldi R24,<_auc_SinParam
	ldi R25,>_auc_SinParam
	lds R30,_x
	clr R31
	add R30,R24
	adc R31,R25
	ldd R2,z+0
	clr R3
	out 0x2b,R3
	out 0x2a,R2
	.dbline -2
L1:
	ld R2,y+
	out 0x3f,R2
	ld R31,y+
	ld R30,y+
	ld R25,y+
	ld R24,y+
	ld R3,y+
	ld R2,y+
	.dbline 0 ; func end
	reti
	.dbend
	.dbfunc e main _main fV
	.even
_main::
	.dbline -1
	.dbline 33
; }
; void main(void)
; {
	.dbline 34
; DDRD=0xff;//PB3输出方式,作为OC0输出PWM波
	ldi R24,255
	out 0x11,R24
	.dbline 35
; TIMSK=0x04;  //中断屏蔽位,没有开启任何中断
	ldi R24,4
	out 0x39,R24
	.dbline 36
; TIFR=0;      //中断标志位
	clr R2
	out 0x38,R2
	.dbline 37
; TCCR1A=0xA1; //开启PWM
	ldi R24,161
	out 0x2f,R24
	.dbline 38
; TCCR1B=0x09;//系统时钟
	ldi R24,9
	out 0x2e,R24
	.dbline 39
; SREG=0x80;  //开启全局中断
	ldi R24,128
	out 0x3f,R24
	.dbline 40
; OCR1A=128;//auc_SinParam[x];
	clr R25
	out 0x2b,R25
	out 0x2a,R24
	.dbline -2
L4:
	.dbline 0 ; func end
	ret
	.dbend

⌨️ 快捷键说明

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