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

📄 正弦波.lis

📁 自己写的用AVR 单片机产生正弦波.用示波器观察波形很好!
💻 LIS
📖 第 1 页 / 共 2 页
字号:
 0060                   .blkb 2
                        .area idata
 0060 0202              .byte 2,2
                        .area data(ram, con, rel)
 0062                   .blkb 2
                        .area idata
 0062 0304              .byte 3,4
                        .area data(ram, con, rel)
 0064                   .blkb 2
                        .area idata
 0064 0507              .byte 5,7
                        .area data(ram, con, rel)
 0066                   .blkb 2
                        .area idata
 0066 090B              .byte 9,11
                        .area data(ram, con, rel)
 0068                   .blkb 2
                        .area idata
 0068 0E10              .byte 14,16
                        .area data(ram, con, rel)
 006A                   .blkb 2
                        .area idata
 006A 1317              .byte 19,23
                        .area data(ram, con, rel)
 006C                   .blkb 2
                        .area idata
 006C 1A1E              .byte 26,30
                        .area data(ram, con, rel)
 006E                   .blkb 2
                        .area idata
 006E 2226              .byte 34,38
                        .area data(ram, con, rel)
 0070                   .blkb 2
                        .area idata
 0070 2B30              .byte 43,48
                        .area data(ram, con, rel)
 0072                   .blkb 2
                        .area idata
 0072 3439              .byte 52,57
                        .area data(ram, con, rel)
 0074                   .blkb 2
                        .area idata
 0074 3F44              .byte 63,'D
                        .area data(ram, con, rel)
 0076                   .blkb 2
                        .area idata
 0076 4A4F              .byte 'J,'O
                        .area data(ram, con, rel)
 0078                   .blkb 2
                        .area idata
 0078 555B              .byte 'U,91
                        .area data(ram, con, rel)
 007A                   .blkb 2
                        .area idata
 007A 6167              .byte 'a,'g
                        .area data(ram, con, rel)
 007C                   .blkb 2
                        .area idata
 007C 6D74              .byte 'm,'t
                        .area data(ram, con, rel)
 007E                   .blkb 2
                        .area idata
 007E 7A80              .byte 'z,128
                        .area data(ram, con, rel)
 0080                   .dbfile 正弦波.c
 0080                   .dbsym e auc_SinParam _auc_SinParam A[128:128]c
 0080           _x::
 0080                   .blkb 1
                        .area idata
 0080 00                .byte 0
                        .area data(ram, con, rel)
 0081                   .dbfile 正弦波.c
 0081                   .dbsym e x _x c
                        .area text(rom, con, rel)
 0000                   .dbfile 正弦波.c
 0000                   .dbfunc e timer1 _timer1 fV
                        .even
 0000           _timer1::
 0000 2A92              st -y,R2
 0002 3A92              st -y,R3
 0004 8A93              st -y,R24
 0006 9A93              st -y,R25
 0008 EA93              st -y,R30
 000A FA93              st -y,R31
 000C 2FB6              in R2,0x3f
 000E 2A92              st -y,R2
 0010                   .dbline -1
 0010                   .dbline 26
 0010           ; /*******************************************************************
 0010           ;      实验名称:产生正弦波演示实验
 0010           ;            作者:王晓波
 0010           ;                晶振:外部   8M
 0010           ;      接线方法:
 0010           ;              1.PD5接低通滤波输入
 0010           ;                  2.用示波器测其输出波形
 0010           ; *******************************************************************/
 0010           ; #include<iom16v.h>
 0010           ; #include <macros.h>
 0010           ; #include<signal.h>
 0010           ; #pragma interrupt_handler timer1:9
 0010           ; char auc_SinParam[128]={//128点正弦波样本值
 0010           ; 128,134,140,147,153,159,165,171,177,182,188,193,198,204,208,213,
 0010           ; 218,222,226,230,233,237,240,242,245,247,249,251,252,253,254,254,
 0010           ; 254,254,253,252,251,250,248,246,244,241,238,235,232,228,224,220,
 0010           ; 215,211,206,201,196,191,185,179,174,168,162,156,150,144,137,131,
 0010           ; 125,119,112,106,100,94,88,82,77,71,65,60,55,50,45,41,
 0010           ; 36,32,28,24,21,18,15,12,10,8,6,5,4,3,2,2,
 0010           ; 2,2,3,4,5,7,9,11,14,16,19,23,26,30,34,38,
 0010           ; 43,48,52,57,63,68,74,79,85,91,97,103,109,116,122,128 
 0010           ; };
 0010           ; char x=0;
 0010           ; //T/C1溢出中断服务
 0010           ; void timer1(void)
 0010           ; {
 0010                   .dbline 27
 0010           ; x=x+1;
 0010 80918000          lds R24,_x
 0014 8F5F              subi R24,255    ; addi 1
 0016 80938000          sts _x,R24
 001A                   .dbline 28
 001A           ; if (x>128)
 001A 80E8              ldi R24,128
 001C 20908000          lds R2,_x
 0020 8215              cp R24,R2
 0022 18F4              brsh L2
 0024                   .dbline 29
 0024           ; x=0;
 0024 2224              clr R2
 0026 20928000          sts _x,R2
 002A           L2:
 002A                   .dbline 30
 002A           ; OCR1A=auc_SinParam[x];//auc_SinParam[x];//取样点指针到比较匹配寄存器
 002A 80E0              ldi R24,<_auc_SinParam
 002C 90E0              ldi R25,>_auc_SinParam
 002E E0918000          lds R30,_x
 0032 FF27              clr R31
 0034 E80F              add R30,R24
 0036 F91F              adc R31,R25
 0038 2080              ldd R2,z+0
 003A 3324              clr R3
 003C 3BBC              out 0x2b,R3
 003E 2ABC              out 0x2a,R2
 0040                   .dbline -2
 0040           L1:
 0040 2990              ld R2,y+
 0042 2FBE              out 0x3f,R2
 0044 F991              ld R31,y+
 0046 E991              ld R30,y+
 0048 9991              ld R25,y+
 004A 8991              ld R24,y+
 004C 3990              ld R3,y+
 004E 2990              ld R2,y+
 0050                   .dbline 0 ; func end
 0050 1895              reti
 0052                   .dbend
 0052                   .dbfunc e main _main fV
                        .even
 0052           _main::
 0052                   .dbline -1
 0052                   .dbline 33
 0052           ; }
 0052           ; void main(void)
 0052           ; {
 0052                   .dbline 34
 0052           ; DDRD=0xff;//PB3输出方式,作为OC0输出PWM波
 0052 8FEF              ldi R24,255
 0054 81BB              out 0x11,R24
 0056                   .dbline 35
 0056           ; TIMSK=0x04;  //中断屏蔽位,没有开启任何中断
 0056 84E0              ldi R24,4
 0058 89BF              out 0x39,R24
 005A                   .dbline 36
 005A           ; TIFR=0;      //中断标志位
 005A 2224              clr R2
 005C 28BE              out 0x38,R2
 005E                   .dbline 37
 005E           ; TCCR1A=0xA1; //开启PWM
 005E 81EA              ldi R24,161
 0060 8FBD              out 0x2f,R24
 0062                   .dbline 38
 0062           ; TCCR1B=0x09;//系统时钟
 0062 89E0              ldi R24,9
 0064 8EBD              out 0x2e,R24
 0066                   .dbline 39
 0066           ; SREG=0x80;  //开启全局中断
 0066 80E8              ldi R24,128
 0068 8FBF              out 0x3f,R24
 006A                   .dbline 40
 006A           ; OCR1A=128;//auc_SinParam[x];
 006A 9927              clr R25
 006C 9BBD              out 0x2b,R25
 006E 8ABD              out 0x2a,R24
 0070                   .dbline -2
 0070           L4:
 0070                   .dbline 0 ; func end
 0070 0895              ret
 0072                   .dbend

⌨️ 快捷键说明

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