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

📄 正弦波.lst

📁 自己写的用AVR 单片机产生正弦波.用示波器观察波形很好!
💻 LST
字号:
__start:
__text_start:
    006B E5CF      LDI	R28,0x5F
    006C E0D4      LDI	R29,4
    006D BFCD      OUT	0x3D,R28
    006E BFDE      OUT	0x3E,R29
    006F 51C0      SUBI	R28,0x10
    0070 40D0      SBCI	R29,0
    0071 EA0A      LDI	R16,0xAA
    0072 8308      STD	Y+0,R16
    0073 2400      CLR	R0
    0074 EEE1      LDI	R30,0xE1
    0075 E0F0      LDI	R31,0
    0076 E010      LDI	R17,0
    0077 3EE1      CPI	R30,0xE1
    0078 07F1      CPC	R31,R17
    0079 F011      BEQ	0x007C
    007A 9201      ST	R0,Z+
    007B CFFB      RJMP	0x0077
    007C 8300      STD	Z+0,R16
    007D E5E4      LDI	R30,0x54
    007E E0F0      LDI	R31,0
    007F E6A0      LDI	R26,0x60
    0080 E0B0      LDI	R27,0
    0081 E010      LDI	R17,0
    0082 3DE5      CPI	R30,0xD5
    0083 07F1      CPC	R31,R17
    0084 F021      BEQ	0x0089
    0085 95C8      LPM
    0086 9631      ADIW	R30,1
    0087 920D      ST	R0,X+
    0088 CFF9      RJMP	0x0082
    0089 940E00B5  CALL	_main
_exit:
    008B CFFF      RJMP	_exit
_timer1:
    008C 922A      ST	R2,-Y
    008D 923A      ST	R3,-Y
    008E 938A      ST	R24,-Y
    008F 939A      ST	R25,-Y
    0090 93EA      ST	R30,-Y
    0091 93FA      ST	R31,-Y
    0092 B62F      IN	R2,0x3F
    0093 922A      ST	R2,-Y
FILE: 正弦波.c
(0001) /*******************************************************************
(0002)      实验名称:产生正弦波演示实验
(0003) 	     作者:王晓波
(0004) 		 晶振:外部   8M
(0005)      接线方法:
(0006) 	       1.PD5接低通滤波输入
(0007) 		   2.用示波器测其输出波形
(0008) *******************************************************************/
(0009) #include<iom16v.h>
(0010) #include <macros.h>
(0011) #include<signal.h>
(0012) #pragma interrupt_handler timer1:9
(0013) char auc_SinParam[128]={//128点正弦波样本值
(0014) 128,134,140,147,153,159,165,171,177,182,188,193,198,204,208,213,
(0015) 218,222,226,230,233,237,240,242,245,247,249,251,252,253,254,254,
(0016) 254,254,253,252,251,250,248,246,244,241,238,235,232,228,224,220,
(0017) 215,211,206,201,196,191,185,179,174,168,162,156,150,144,137,131,
(0018) 125,119,112,106,100,94,88,82,77,71,65,60,55,50,45,41,
(0019) 36,32,28,24,21,18,15,12,10,8,6,5,4,3,2,2,
(0020) 2,2,3,4,5,7,9,11,14,16,19,23,26,30,34,38,
(0021) 43,48,52,57,63,68,74,79,85,91,97,103,109,116,122,128 
(0022) };
(0023) char x=0;
(0024) //T/C1溢出中断服务
(0025) void timer1(void)
(0026) {
(0027) x=x+1;
    0094 918000E0  LDS	R24,x
    0096 5F8F      SUBI	R24,0xFF
    0097 938000E0  STS	x,R24
(0028) if (x>128)
    0099 E880      LDI	R24,0x80
    009A 902000E0  LDS	R2,x
    009C 1582      CP	R24,R2
    009D F418      BCC	0x00A1
(0029) x=0;
    009E 2422      CLR	R2
    009F 922000E0  STS	x,R2
(0030) OCR1A=auc_SinParam[x];//auc_SinParam[x];//取样点指针到比较匹配寄存器
    00A1 E680      LDI	R24,0x60
    00A2 E090      LDI	R25,0
    00A3 91E000E0  LDS	R30,x
    00A5 27FF      CLR	R31
    00A6 0FE8      ADD	R30,R24
    00A7 1FF9      ADC	R31,R25
    00A8 8020      LDD	R2,Z+0
    00A9 2433      CLR	R3
    00AA BC3B      OUT	0x2B,R3
    00AB BC2A      OUT	0x2A,R2
    00AC 9029      LD	R2,Y+
    00AD BE2F      OUT	0x3F,R2
    00AE 91F9      LD	R31,Y+
    00AF 91E9      LD	R30,Y+
    00B0 9199      LD	R25,Y+
    00B1 9189      LD	R24,Y+
    00B2 9039      LD	R3,Y+
    00B3 9029      LD	R2,Y+
    00B4 9518      RETI
(0031) }
(0032) void main(void)
(0033) {
(0034) DDRD=0xff;//PB3输出方式,作为OC0输出PWM波
_main:
    00B5 EF8F      LDI	R24,0xFF
    00B6 BB81      OUT	0x11,R24
(0035) TIMSK=0x04;  //中断屏蔽位,没有开启任何中断
    00B7 E084      LDI	R24,4
    00B8 BF89      OUT	0x39,R24
(0036) TIFR=0;      //中断标志位
    00B9 2422      CLR	R2
    00BA BE28      OUT	0x38,R2
(0037) TCCR1A=0xA1; //开启PWM
    00BB EA81      LDI	R24,0xA1
    00BC BD8F      OUT	0x2F,R24
(0038) TCCR1B=0x09;//系统时钟
    00BD E089      LDI	R24,0x9
    00BE BD8E      OUT	0x2E,R24
(0039) SREG=0x80;  //开启全局中断
    00BF E880      LDI	R24,0x80
    00C0 BF8F      OUT	0x3F,R24
(0040) OCR1A=128;//auc_SinParam[x];
FILE: <library>
    00C1 2799      CLR	R25
    00C2 BD9B      OUT	0x2B,R25
    00C3 BD8A      OUT	0x2A,R24
    00C4 9508      RET

⌨️ 快捷键说明

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